简介
JSP动作元素与指令元素不同的是,JSP动作元素在请求处理阶段起作用。
JSP动作元素是用XML语法写成的,利用JSP动作可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件生成HTML代码。
语法格式
<jsp:action_name attribute="value" /> action_name处写标准动作,之后填写相应的属性和值。可以存在有多个属性。 |
JSP也有单双标签,但是,很多元素都能够自由地在单双标签间转换(一般而言,在不改变基本功能前提下,单标签总能转成双标签,双标签却不一定能转成单标签)
所有动作元素的公共属性
(1)id属性:id属性是动作元素的唯一标识,能够在JSP页面中引用。id值能够通过PageContextl来调用。
(2)scope属性:该属性用于定义作用域。id属性与scope属性有直接关系,scope定义了id对象的寿命。与四大作用域的值一样,从小到大依次为:page、request、session、application。
<jsp:include>动作元素
除了公共属性外,它有两个属性,分别是page和flush,常用的是page属性。
在之前有一个include指令元素<%@ include file=""%>,二者的区别是:指令是在JSP文件被转换成Servlet时引入文件;而动作元素是在页面请求的时候。
所以,相当于页面请求了两个文件,生成了两个servlet容器(只不过一个容器嵌套了一个容器)。
ttt 双标签和单标签两种写法的效果相同。 |
<jsp:useBean>动作元素
此动作元素可以加载一个能够在jsp页面中使用的对象,它的写法如下:
<jsp:useBean id="user" scope="page" class="test.com.User"/> Id和scope是公共属性,class指定该对象的类型 也可以写成: <jsp:useBean id="user2" scope="page" class="test.com.User"></jsp:useBean> |
二者都能够达到效果,但是,存在有一定的区别,详细信息可看接下来的<jsp:setProperty>动作元素。
<jsp:setProperty>动作元素
此动作元素用来设置已经实例化的Bean对象的属性,有两种写法。
(1)写在useBean之后:这个时候,只要能够找到对应对象,就会设置值。
<jsp:useBean id="user" scope="page" class="test.com.User"/> |
转换的Java部分如下:
|
(2)写在useBean之中:只有在实例化时才会设置对象的值。
<jsp:useBean id="user2" scope="page" class="test.com.User"> |
转换的Java代码如下:
|
(3)再看一个整体的比较:
out.write("<!--第一种情况-->\r\n"); |
我们能够得到结果:双标签里设置属性,相当于实例化时属性会被设置(这里有一个单例,保证一个对象中只能实例化一次),而单标签是在执行过程中设置属性,和对象实例化无关。
<jsp:getProperty>动作元素
<jsp:useBean>用于定义对象,<jsp:setProperty>用于更改对象中字段值,而<jsp:getProperty>则是用来获取对象中的字段值。
<jsp:useBean id="user" class="test.com.User"> <jsp:setProperty name="user" property="username" value="newre"/> </jsp:useBean> 用户名 <jsp:getProperty name="user" property="username"/> 密码 <jsp:getProperty name="user" property="username"/> |
执行结果:
|
<jsp:forward>动作元素
这个是用动作元素实现的请求转发,它只有一个属性page,用来指定要跳转的地址。
<jsp:forward page="bbb.jsp"></jsp:forward> |
跳转后,地址没有发生改变,但是内容已经是bbb.jsp的内容。 |
其他
由于时间的原因,在此就先介绍这五种动作元素,至于更加详细的内容,以及其他的动作元素,会在之后穿插地补充。