前言:
上一篇文章了讲了JSP中的指令,在平时的WEB开发中经常使用,而这一篇要讲的JSP动作元素,在平时的开发中使用并不多,仅了解一下就好。
正文:
JSP动作元素用来控制JSP的行为,执行一些常用的JSP页面动过。通过动作元素可以实现使用多行java代码能够实现的效果。
JSP中的动作元素主要包含以下7个:
<jsp:include>
<jsp:forward>
<jsp:param>
<jsp:plugin>
<jsp:useBean>
<jsp:setProperty>
<jsp:getProperty>
<jsp:useBean>
、<jsp:setProperty>
和<jsp:getProperty>
标签用在与JavaBeans的连接中。
1、<jsp:include>
动作元素
<jsp:include>
动作元素提供了一种在JSP中包含页面的方式,既可以包含静态文件,也可以包含动态文件。
所谓的JSP页面动态包含某个文件,指的是当JSP页面运行时才会载入该文件。如果被包含文件是文本文件,则运行时只需将该文件内容发送到客户端,由客户端显示出来即可;如果被包含的文件本身也是JSP文件,则JSP编译器就要先执行该本件,再将执行结果发送到客户端并显示出来。
<jsp:include>动作元素与<@% include file="" %>指令的区别
<jsp:include>动作元素是在执行时对所包含文件进行处理的,JSP页面与它所包含的文件在逻辑上和语法上都是独立的。当被包含的文件内容发生变化时,JSP页面运行时可以看到所包含文件变化的显示结果;
<@% include file="" %>指令包含的文件是静态文件,如果被包含的文件内容发生变化,则JSP页面运行时看到的仍然是变化前文件的内容。如果希望在JSP页面中看到被包含文件变化后的内容,则需要重新保存该JSP页面,然后再访问它。由于此时已重新将JSP页面转译成Java文件,因此再访问时就可以看到变化后的文件内容。
<jsp:include>的语法格式:
<jsp:include page="relative URL" flush="true|false" />
page 属性:指定被包含文件的URL地址,是一个相对路径
flush 属性:指定当缓冲区满时,是否将其清空,默认false
2、<jsp:forward>
动作元素
<jsp:forward>
是一种用于页面重定向的动作元素,它的作用是停止当前JSP页面的执行,而将客户端请求转交给另一个JSP页面。转发实在服务器端进行的,不会引起客户端的二次请求,因此浏览器的地址栏不会发生任何变化,效率也比重定向高。
<jsp:forward page="转向页面的URL地址" />
3、<jsp:param>
动作元素
<jsp:param>
是一种提供参数的附属动作元素,它以“名-值”对的形式为其他动作元素提供附加信息,一般与<jsp:include>
、<jsp:forward>
、<jsp:plugin>
联合使用。
<jsp:param name="参数名字" value="指定给param的参数值">
(1)当<jsp:param>
与<jsp:include>
动作元素一起使用时,可以将<jsp:param>
中提供的参数值传递到<jsp:include>
要加载的文件中去,因此当<jsp:include>
动作结合<jsp:param>
使用时,可以在加载文件的过程中同时向该文件提供信息。
eg:
<!-- 使用jsp:include动作元素导入动态文件,使用jsp:param动作元素传递参数 -->
<jsp:include page="要导入的动态文件" >
<jsp:param name="number" value="200" />
</jsp:include>
<!-- 在动态文件中通过如下途径获取<jsp:param>传递的参数 -->
<% String str = request.getParameter("number"); %>
(2)当<jsp:param>
与<jsp:forward>
动作元素一起使用时,可以实现在跳转页面的同时向转向的页面传递参数的功能。
eg:
<!-- 使用jsp:forward动作元素转向另一个jsp页面,使用jsp:param动作元素传递参数 -->
<jsp:forward page="要跳转的jsp页面" >
<jsp:param name="userInfo" value="jack" />
<jsp:param name="userAge" value="23" />
</jsp:forward>
<!-- 在跳转的JSP获取传递的参数 -->
<%
String userInfo = request.getParameter("userInfo");
String userAge = request.getParameter("userAge");
%>
4、<jsp:plugin>
动作元素
<jsp:plugin>
动作元素可以将服务器端的JavaBean或Applet下载到客户端执行。
<jsp:plugin
type = "bean|applet" //指定插件类型,是Bean还是Applet
code = "classFileName" //指定执行的java类名,必须以扩展名.class结尾
codeBase = "classFileURL" //指定被执行的Java类所在的目录
[name = "instanceName"] //指定Bean或Applet的名称
[archive = "URLToArchive"] //指定在Bean或Applet执行前要预先加载的类的列表
[align = "bottom|top|left|right|middle"] //指定Bean或Applet在显示时的对齐方式
[height = "displayPixels"] //指定Bean或Applet在显示时的高度
[width = "displayPixels"] //指定Bean或Applet在显示时的宽度
[hspace = "leftRightPixels"] //指定Bean或Applet显示时距屏幕左右的距离,单位为像素
[vspace = "topBottomPixels"] //指定Bean或Applet显示时距屏幕上下的距离,单位为像素
[jreversion = "jreVersionNumber|1.2"] //运行程序所需要的jre版本
[nspluginurl = "URLToPlugin"] //指定使用Netscape Navigator浏览器的用户能够使用的jre下载地址
[iepluginurl = "URLToPlugin"] //指定使用IE浏览器的用户能够使用的jre下载地址
>
[<jsp:params> //用来给Bean或Applet传递参数,结合<jsp:param>使用
[<jsp:param name="paramterName" value="paramterValue|<%=expression%>"/>]
[</jsp:params>]
[<jsp:fallback>文本信息</jsp:fallback>] //指定当浏览器不能正常启动Bean或Applet时,会显示该动作元素中提供的错误信息
</jsp:plugin>
5、<jsp:useBean>
、<jsp:setProperty>
、<jsp:getProperty>
动作元素
<jsp:useBean>
、<jsp:setProperty>
、<jsp:getProperty>
这3个动作元素都是与JavaBean相关,一般一起使用。
(1)<jsp:useBean>
动作元素
<jsp:useBean>
动作元素用来用来装载一个将在JSP页面中使用的JavaBean。
<jsp:useBean
id = "beanInstanceName" //指定JavaBean的实例名
class = "className" //指定JavaBean的全限定类名
scope = "page|request|session|application" //指定引入的JavaBean实例的作用域,默认为当前页。page:表示该JavaBean实例在当前页面有效;request:表示该JavaBean实例在本次请求中有效;
//session:表示该JavaBean实例在本次session内有效;application:表示该JavaBean实例在本应用内一直有效
/>
(2)<jsp:setProperty>
动作元素
获取到Bean实例之后,可以使用<jsp:setProperty>
动作元素来设置或修改Bean中的属性值。
<jsp:setProperty
name = "beanInstanceName" //指定要进行设置的JavaBean的实例名
property = "propertyName" //指定需要设置的JavaBean实例中的属性名
value = "propertyValue" //指定要将property中指定的属性设置为该属性值
/>
<jsp:setProperty>
动作元素通过Bean中提供的setter方法来设置Bean中的属性值,可以设置一个属性值,也可以设置多个属性值。在使用<jsp:setPropert>
之前必须要使用<jsp:useBean>
先声明Bean,同事它们所使用的Bean实例名也应该想匹配。
(3)<jsp:getProperty>
动作元素
<jsp:getProperty>
动作元素用来提取指定Bean属性的值,并将其转换成字符串,然后输出。
<jsp:getProperty
name = "beanInstanceName" //指定要输出的JavaBean的实例名
property = "propertyName" //指定要输出的JavaBean的实例中的属性名
/>
eg:
<!-- 创建jsp.User实例,实例名为user,要先定义User类 -->
<jsp:useBean id="user" class="jsp.User" scope="page" />
<!-- 设置user的userName属性 -->
<jsp:setProperty name="user" property="userName" value="Jack" />
<!-- 设置user的age属性 -->
<jsp:setProperty name="user" property="age" value="20" />
<!-- 输出userName属性 -->
用户名:<jsp:getProperty name="user" property="userName" />
<!-- 输出age属性 -->
年龄:<jsp:getProperty name="user" property="age" />