530 likes | 692 Views
JSP 语法. JSP 程序的结构 JSP 指令 JSP 标签. JSP 程序的结构. 1.1 注释 注释分为两种,包括 HTML 注释和隐藏注释。 1 . HTML 注释:在客户端显示一个注释。 HTML 注释的 JSP 语法: <!-- comment [ <%= expression %> ] --> . 2 .隐藏注释:写在 JSP 程序中,但是不发给客户。 隐藏注释的 JSP 语法: <%-- comment --%> . 4.1.2 声明 在 JSP 程序中声明合法的变量和方法。 声明的 JSP 语法:
E N D
JSP语法 • JSP程序的结构 • JSP指令 • JSP标签
JSP程序的结构 • 1.1 注释 • 注释分为两种,包括HTML注释和隐藏注释。 • 1.HTML注释:在客户端显示一个注释。 • HTML注释的JSP语法: • <!-- comment [ <%= expression %> ] -->
2.隐藏注释:写在JSP程序中,但是不发给客户。2.隐藏注释:写在JSP程序中,但是不发给客户。 • 隐藏注释的JSP语法: • <%-- comment --%>
4.1.2 声明 • 在JSP程序中声明合法的变量和方法。 • 声明的JSP 语法: • <%! declaration; [ declaration; ]+ ... %>
例如: • <%! int i = 0; %> • <%! int a, b, c; %> • <%! Circle a = new Circle(2.0); %> • 声明将要在JSP程序中用到的变量和方法。 • 也可以一次性声明多个变量和方法,只要以“;”结尾就行,当然这些声明在Java中必须是合法的。
当声明方法或变量时,请注意以下规则: • 声明必须以“;”结尾(Scriptlet有同样的规则,但是表达式就不同了)。 • 可以直接使用在<% @ page %>中被包含进来的已经声明的变量和方法,不需要对它们重新进行声明。 • 一个声明仅在一个页面中有效。如果想每个页面都用到一些声明,最好把它们写成一个单独的文件,然后用<%@ include file="文件所在的路径和名称" %>或<jsp:include file="文件所在的路径和名称" >元素包含进来。
4.1.3 表达式 • 这里指包含一个符合JSP语法的表达式。 • 表达式的JSP 语法: • <%= expression %> • 例如: • <font color="blue"><%= map.size() %></font> • <b><%= numguess.getHint() %></b>
在JSP中使用表达式时需记住以下几点: • (1)不能用分号(“;”)作为表达式的结束符,但是同样的表达式用在scriptlet中就需要以分号来结尾。 • (2)这个表达式元素能够包括任何在Java Language Specification中有效的表达式。 • 有时候表达式也能做为其他JSP元素的属性值。一个表达式能够变得很复杂,它可能由一个或多个表达式组成,这些表达式的顺序是从左到右。
4.1.4 scriptlet • scriptlet是一个有效的程序段。 • Scriptlet的JSP语法: • <% code fragment %>
例如: • <% • String name = null; • if (request.getParameter("name") == null) { • %> • <%@ include file="error.html" %> • <% • } else { • foo.setName(request.getParameter("name")); • if (foo.getName().equalsIgnoreCase("integra")) • name = "acura"; • if (name.equalsIgnoreCase( "acura" )) { • %>
描述: • 一个scriptlet能够包含多个jsp语句,方法,变量和表达式。 • 有了scriptlet,我们便能做以下的事: • (1)声明将要用到的变量或方法(参考声明)。 • (2)编写JSP表达式(参考表达式)。 • (3)使用任何隐含的对象和任何用<jsp:useBean>声明过的对象。 • (4)编写JSP语句(如果使用Java语言,这些语句必须遵从Java Language Specification)。
4.2 JSP指令 • 4.2.1 page指令标签 • Page 指令用于定义JSP文件中的全局属性。 • 1.Page 指令的JSP 语法: • <%@ page • [ language="java" ] • [ extends="package.class" ] • [ import="{package.class | package.*}, ..." ] • [ session="true | false" ]
[ buffer="none | 8kb | sizekb" ] • [ autoFlush="true | false" ] • [ isThreadSafe="true | false" ] • [ info="text" ] [ errorPage="relativeURL" ] • [ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ] • [ isErrorPage="true | false" ] • %>
例子: • <%@ page import="java.util.*, java.lang.*" %> • <%@ page buffer="5kb" autoFlush="false" %> • <%@ page errorPage="error.jsp" %>
属性: • (1)language="java" • 声明脚本语言的种类,暂时只能用“java”。 • (2)extends="package.class" • (3)import="{package.class | package.* }, ..." • (4)session="true | false" • (5)buffer="none | 8kb | sizekb"
(6)autoFlush="true | false" • (7)isThreadSafe="true | false" • (8)info="text" • (9)errorPage="relativeURL" • (10)isErrorPage="true | false" • (11)contentType="mimeType [ ;charset=characterSet ]" | "text/html;charset=ISO-8859-1"设置MIME类型 。
2.描述 • <%@ page %>指令作用于整个JSP页面,包括静态的包含文件。但是<% @ page %>指令不能作用于动态的包含文件,比如 <jsp:include> 。 • 可以在一个页面中用上多个<% @ page %>指令,但是其中的属性只能用一次,不过也有个例外,那就是import属性。因为import属性和Java中的import语句差不多(参照Java Language),所以能多用此属性几次。
无论<% @ page %>指令放在JSP的文件的哪个地方,它的作用范围都是整个JSP页面。不过,为了JSP程序的可读性,以及好的编程习惯,最好还是把它放在JSP文件的顶部。 无论<% @ page %>指令放在JSP的文件的哪个地方,它的作用范围都是整个JSP页面。不过,为了JSP程序的可读性,以及好的编程习惯,最好还是把它放在JSP文件的顶部。
4.2.2 include指令 • include 指令的作用是,在JSP中包含一个静态的文件,同时解析这个文件中的JSP语句。 • 1.include 指令的JSP 语法: • <%@ include file="relativeURL" %>
属性: • file="relativeURL" • 这个包含文件的路径名一般来说是指相对路径,不需要什么端口、协议和域名,如: "error.jsp""templates/onlinestore.html""/beans/calendar.jsp" 。 • 如果这个路径以“/”开头,那么这个路径主要是参照JSP应用的上下关系路径,如果路径是以文件名或目录名开头,那么这个路径就是正在使用的JSP文件的当前路径。
2.描述 • <%@include %>指令将在JSP编译时插入一个包含文本或代码的文件,当使用<%@ include %>指命时,这个包含的过程是静态的。
4.3 JSP标签 • 4.3.1 include动作标签 • <jsp:include> • 这个标签包含一个静态或动态文件。 • 1.include动作标签的语法:
<jsp:include page="{relativeURL | <%= expression%>}" flush="true" /> <jsp:include page="{relativeURL | <%= expression%>}" flush="true" /> • 或者 • <jsp:include page="{relativeURL | <%= expression %>}" flush="true" > • <jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" />+ • </jsp:include>
属性: • (1)page="{relativeURL | <%= expression %>}" • 参数为一相对路径,或者是代表相对路径的表达式。 • (2)flush="true" • 这里必须使用flush="true",不能使用false值。默认值为false。
2.描述 • <jsp:include>元素允许包含动态文件和静态文件,这两种包含文件的结果是不同的。如果文件仅是静态文件,那么这种包含仅仅是把包含文件的内容加到JSP文件中去,如果这个文件动态的,那么这个被包含文件会被JSP编译器执行。
4.3.2 forward动作标签 • <jsp:forward> • forward动作标签重定向一个HTML文件,JSP文件,或者是一个程序段。 • 1.forward动作标签的JSP语法:
<jsp:forward page={"relativeURL" | "<%= expression %>"} /> <jsp:forward page={"relativeURL" | "<%= expression %>"} /> • 或者 • <jsp:forward page={"relativeURL" | "<%= expression %>"} > • <jsp:param name="parameterName" • value="{parameterValue | <%= expression %>}" />+ • </jsp:forward>
属性: • (1)page="{relativeURL | <%= expression %>}" • (2)<jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" />+ • 向一个动态文件发送一个或多个参数,这个文件一定是动态文件。
2.描述 • <jsp:forward>标签从一个JSP文件向另一个文件传递一个包含用户请求的request对象。<jsp:forward>标签以下的代码,将不能执行。 • 能够向目标文件传送参数和值,在这个例子中我们传递的参数名为username,值为scott,如果使用了<jsp:param>标签的话,目标文件必须是一个动态的文件,能够处理参数。 • 如果使用了非缓冲输出的话,那么使用<jsp:forward>时要小心。如果在使用<jsp:forward>之前,JSP文件已经有了数据,那么文件执行就会出错。
4.3.3 plugin动作标签 • <jsp:plugin> • 该指令执行一个Applet或Bean。 • JSP语法格式如下:
<jsp:plugin type="bean|applet" • code="classFileName" • codebase="classFIleDirectoryName" • [name="instanceName"] • [archive="URLToArchive,…"] • [align="bottom|top|middle|left|right"] • [height="displayPixels"] • [width="displayPixels"] • [hspace="leftRightPixels"] • [vspace="topBottomPixels"]
[jreversion="JREVersionNumber|1.1"] • [nspluginurl="URLToPlugin"] • [iepluginurl="URLToPlugin"]> • [<jsp:params> • <jsp:param name="parameterName" value="{parameterValue|<%expression%>}" /> • </jsp:params>]> • [<jsp:fallback>text message for user</jsp:fallback>] • </jsp:plugin>
plugin的属性如下: • (1)type="bean|applet" 指定将被执行的插件对象的类型。该属性必须指定是Bean 或是Applet,因为这个属性没有默认值。 • (2)code="classFileName" 指定将会被Java插件执行的Java Class的名字,必须以.class结尾。这个文件必须存在于codebase属性指定的目录中。 • (3)codebase="classFIleDirectoryName" 指定将会被执行的Java Class文件的目录(或路径)。如果用户没有提供此属性,将使用<jsp:plugin>的JSP文件的目录。
(4)name="instanceName" 该属性指定Bean或Applet实例的名字,它会在JSP其他的地方调用。 • (5)archive="URLToArchive,…" 指定一些由逗号分开的路径名。这些路径名用于预装一些将要使用的class,这会提高Applet的性能。 • (6)align="bottom|top|middle|left|right" 该属性用来指明图形、对象、Applet的位置,可以有bottom(位于底部)、top(位于顶部)、middle(位于中间)、left(位于左边)和right(位于右边)几种值。 • (7)height="displayPixels" width="displayPixels" 指定Applet或Bean将要显示的长、宽的值,此值为数字,单位为像素。
(8)hspace="leftRightPixels" vspace="topBottomPixels" 指定Applet或Bean显示时在屏幕左右、上下所需留下的空间,单位为像素。 • (9)jreversion="JREVersionNumber|1.1" 指定Applet或Bean运行所需的Java Runtime Environment(JRE)的版本。默认值是1.1。 • (10)nspluginurl="URLToPlugin" 指定Netscape Navitator用户能够使用的JRE的下载地址,此值为一个标准的URL,如http://www.aspcn.com/jsp。 • (11)iepluginurl="URLToPlugin" IE用户能够使用的JRE的下载地址,此值为一个标准的URL,如 http://www.aspcn.com/jsp。
(12)<jsp:params> • [<jsp:param name="parameterName" value="{parameterValue|<%expression%>}" />]</jsp:params> • 指定用户需要向Applet或Bean传送的参数或参数值。 • (13)<jsp:fallback>text message for user</jsp:fallback> 指定一段文字,用于Java插件不能启动时显示给用户,如果插件能够启动而Applet或Bean不能启动,那么浏览器会有一个出错信息弹出。
4.3.4 setproperty动作标签 • <jsp:include><jsp:forward><jsp:getProperty> • setproperty动作标签获取Bean的属性值,用于显示在页面中 。 • 1.setproperty动作标签的JSP语法: • <jsp:getProperty name="beanInstanceName" property="propertyName" />
属性: • (1)name="beanInstanceName" • 在用户所定义的范围中确认Bean的变量,用户能在后面的程序中使用此变量来分辨不同的Bean。 • (2)property="propertyName" • 该语句指定的bean的属性名。
2.描述 • 这个<jsp:getProperty>元素将获得Bean的属性值,并可以将其使用或显示在JSP页面中。在使用<jsp:getProperty>之前,必须用<jsp:useBean>创建它。 • <jsp:getProperty>元素有一些限制。 • (1)不能使用<jsp:getProperty>来检索一个已经被索引了的属性 。 • (2)能够和JavaBeans组件一起使用<jsp:getProperty>,但是不能与Enterprise Bean一起使用。
技巧: • 如果使用<jsp:getProperty>来检索的值是空值,那么NullPointerException将会出现,同时如果使用程序段或表达式来检索其值,在浏览器上出现的将是Null(空)。
4.3.5 usebean动作标签 • <jsp:useBean> • 该标签创建一个Bean实例并指定它的名字和作用范围。 • 1.usebean动作标签的JSP语法: • <jsp:useBean • id="beanInstanceName" • scope="page | request | session | application" • {
class="package.class" | • type="package.class" | • class="package.class" type="package.class" | • beanName="{package.class | <%= expression %>}" type="package.class" • } • { • /> | • other elements </jsp:useBean> • }
属性以及用法: • (1)id="beanInstanceName" • (2)scope="page | request | session | application" • 指定Bean存在的范围以及id变量名的有效范围。默认值是page。以下是详细说明。
①page • ② request • ③ session • ④ application • (3)class="package.class" • (4)type="package.class"
2.描述 • <jsp:useBean>用于定位或示例一个JavaBean组件。<jsp:useBean>首先会试图定位一个Bean实例,如果这个Bean不存在,<jsp:useBean>就会从一个class或模板中进行示例。 • 为了定位或示例一个Bean,<jsp:useBean>会进行以下步聚,顺序如下。
① 通过给定名字和范围定位一个Bean。 • ② 对这个Bean对象引用变量以指定的名字命名。 • ③ 如果发现了这个Bean,将会在这个变量中储存这个引用。 • ④ 如果没有发现这个Bean,将会从指定的class中示例,并将此引用储存到一个新的变量中去。 • ⑤ 如果<jsp:useBean>已经示例(不是定位)了Bean,同时<jsp:useBean>和</jsp:useBean>中有元素,将会执行其中的代码。
4.3.6 setproperty动作标签 • <jsp:setProperty> • 该动作标签设置Bean中的属性值。 • 1.setproperty动作标签的JSP语法:
<jsp:setProperty • name="beanInstanceName" • { • property= "*" | • property="propertyName" [ param="parameterName" ] | • property="propertyName" value="{string | <%= expression %>}" • } • />
2.描述 • <jsp:setProperty>元素使用Bean给定的setter方法,在Bean中设置一个或多个属性值。 • ① 通过用户输入的所有值(被作为参数存储中的request对象)来匹配Bean中的属性; • ② 通过用户输入的指定的值来匹配Bean中指定的属性 ; • ③ 在运行时使用一个表达式来匹配Bean的属性。
4.3.7 param动作标签 • 1.param动作标签的JSP语法: • <jsp:plugin • type="bean | applet" • code="classFileName" • codebase="classFileDirectoryName" • [ name="instanceName" ] • [ archive="URIToArchive, ..." ] • [ align="bottom | top | middle | left | right" ] • [ height="displayPixels" ] • [ width="displayPixels" ]