1 JSP动作元素分类
JSP动作元素可以用来动态地包含文件、网页跳转及使用JavaBean组件等。
<jsp:XXX />
<jsp:XXX > </jsp:XXX>
JSP动作元素分为如下5类。
第一类是与存取JavaBean有关的,包括如下3个动作元素。
<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>
第二类是JSP 1.2就开始有的基本动作元素,包括如下6个动作元素。
<jsp:include> 、 <jsp:forward> 、 <jsp:param> 、 <jsp:plugin> 、 <jsp:params> 、 <jsp:fallback>
第三类是JSP 2.0新增的动作元素,主要与JSP document有关,包括如下6个动作元素。
<jsp:root>、<jsp:declaration>、<jsp:scriptlet>、<jsp:expression>、<jsp:text>、 <jsp:output>
第四类也是JSP 2.0新增的动作元素,主要用来动态地生成XML元素标签的值,包括如下3个动作元素。
<jsp:attribute>、<jsp:body>、<jsp:element>
第五类也是JSP 2.0新增的动作元素,主要用在Tag File中,包括如下2个动作元素。
<jsp:invoke>、<jsp:doBody>
2 <jsp:include>动作元素
<jsp:include>动作元素用来包含静态和动态的文件。如果被包含的文件为静态的文件,那么只是单纯地加到JSP页面中,不会进行任何处理;如果被包含的文件为动态的文件,那么会先进行处理,然后将处理的结果加到JSP页面中。
<jsp:include page="包含文件URL地址" flush="true | false">
<jsp:include>动作元素包含两个属性:page和flush。
其中page属性用来指定被包含文件的URL地址。flush属性用来指定缓冲区满时,是否进行清空。如果设置为true,那么缓冲区满时将进行清空;如果设置为false,那么缓冲区满时不会进行清空。flush属性的默认值为false。
2.1 使用<jsp:include>动作元素包含静态的文件
<jsp:include>动作元素用来包含静态的文件时,只是单纯地加到JSP页面中,不会进行任何处理。
01 <%@ page language="java" contentType="text/html;charset=gb2312"%>
02 <html>
03 <head>
04 <title>包含静态文件</title>
05 </head>
06 <body>
07 使用jsp:include动态元素包含静态文件<br>
08 <jsp:include page="content.txt"></jsp:include>
09 </body>
10 </html>
2.2 使用<jsp:include>动作元素包含动态的文件
<jsp:include>动作元素包含的文件为动态的文件时,会先进行处理,然后将处理的结果加到JSP页面中。
2.3 <jsp:include>和<%@ include%>的区别
使用<%@ include%>指令元素只是将页面的内容静态地包含进来,如果被包含的文件中有JSP代码,则会执行该代码,而不管该文件是否为动态文件。
3 <jsp:forward>动作元素
<jsp:forward>动作元素用来转移用户的请求,使得用户请求的页面从一个页面跳转到另一个页面。这种跳转为服务器端跳转,所以用户的地址栏不会发生任何变化。
<jsp: forward page="跳转文件URL地址" >
<jsp:include>动作元素只包含一个属性即page,page属性用来指定跳转文件的URL地址。
3.1 使用<jsp: forward >动作元素实现页面跳转
使用<jsp: forward >动作元素实现页面跳转非常简单,只需要设置其page属性为跳转到文件的URL地址即可。
3.2 跳转执行流程
如果JSP文件包含<jsp: forward >动作元素,那么JSP会首先执行<jsp: forward >动作元素之前的代码。只有执行到<jsp: forward >动作元素时才会进行跳转,跳转完成后将执行被跳转的JSP文件,<jsp:forward >动作元素之后的代码将不会被执行。
4 <jsp:param>动作元素
<jsp:param>动作元素用来传递参数,一般与<jsp:include>、<jsp:forward>联合使用。其语法格式如下。
<jsp:param name="参数名" value="参数值"/>
<jsp:param>动作元素包含两个属性,一个是name,用来设定传递参数的名称;一个是value,用来设定传递参数的值。
4.1 <jsp:include>动作元素搭配<jsp:param>动作元素
通过<jsp:include>动作元素搭配<jsp:param>动作元素,可以实现在包含文件的同时向被包含文件传递参数。
4.2 <jsp:forward>动作元素搭配<jsp:param>动作元素
通过<jsp:forward>动作元素搭配<jsp:param>动作元素,可以实现在跳转页面的同时向跳转到页面传递参数。
5 .<jsp:plugin>、<jsp:params>和<jsp:fallback>
<jsp:plugin>、<jsp:params>和<jsp:fallback>三个动作元素,一般都是搭配起来使用的。其中<jsp:plugin>动作元素用来在JSP中嵌入Java插件;<jsp:params>动作元素用来给Bean或Applet传递参数;<jsp:fallback>动作元素用来指定当浏览器不支持或无法启动 Bean或Applet时,在页面上打印输出错误提示信息。
5.1 <jsp:plugin>动作元素
<jsp:plugin>动作元素用来在JSP中嵌入Java插件,比如Applet。<jsp:plugin>动作元素会自动根据浏览器版本替换成<object>标签或<embed>标签。其中<object>用于HTML 4.0版本,而<embed>标签用于HTML 3.2版本。
<jsp:plugin
type="bean | applet"
name="Applet名称"
code="Java类名"
codebase="Java类所在目录"
align="对齐方式"
height="高度"
width="宽度">
hspace="水平间距"
vspace="垂直间距"
archive="预先加载的类列表"
jreversion="JRE版本"
iepluginurl="URL"
nspluginurl="URL"
</jsp:plugin>
01 <%@ page language="java" contentType="text/html;charset=gb2312"%>
02 <html>
03 <head>
04 <title>执行Applet</title>
05 </head>
06 <body>
07 <%-- 指定其Java类为Clock.class,所在目录为Applet,类型为applet --%>
08 <jsp:plugin code="Clock.class" codebase="Applet" type="applet">
</jsp:plugin>
09 </body>
10 </html>
5.2 <jsp:params>动作元素
<jsp:params>动作元素用来给Bean或Applet传递参数,一般搭配<jsp:param>使用。
<jsp:plugin>
<jsp:params>
<jsp:param name="参数名" value="参数值"/>
</jsp:params>
</jsp:plugin>
5.3 <jsp:fallback>动作元素
<jsp:fallback>动作元素用来指定当浏览器不支持或无法启动Bean或Applet时,在页面上打印输出错误提示信息。
<jsp: fallback >
<jsp:fallback>错误信息</jsp:fallback>
</jsp: fallback >
01 <%@ page language="java" contentType="text/html;charset=gb2312"%>
02 <html>
03 <head>
04 <title>执行Applet</title>
05 </head>
06 <body>
07 <%-- 指定其Java类为Clock.class,所在目录为Applet,类型为applet --%>
08 <jsp:plugin code="Clock.class" codebase="Applet" type="applet">
09 <%-- 传递三个参数--%>
10 <jsp:params>
11 <jsp:param name="bgcolor" value="000000"/>
12 <jsp:param name="fgcolor1" value="ff0000"/>
13 <jsp:param name="fgcolor2" value="00ff00"/>
14 </jsp:params>
15 <%-- 无法加载时输出错误信息--%>
16 <jsp:fallback>
17 不能加载该Applet
18 </jsp:fallback>
19 </jsp:plugin>
20 </body>
21 </html>