1、概述
JSP规范中定义了一系列的标准动作,Web容器按照规范进行了实现,可以解析并执行标准动作。而标准动作使用的是标准的xml语法,看上去也比较直观易懂,下面来看一个结构例子:
上面的代码中,action_name表示标准动作的名字,而attribute1和attribute2是标准动作的若干个属性。
2、三种常用的标准动作
2.1 forward
forward动作,用于在JSP页面进行请求转发,如下代码示例:
上述代码将把请求转发到loginSuccess.jsp页面,类似在Servlet中调用RequestDispatcher的forward方法进行请求转发。即在JSP页面中 和 是一样的效果。
包含该动作的页面,在你访问时,则会被请求转发到 loginSuccess.jsp 页面当中去。
2.2 include
形如:
include动作则表示在JSP页面中进行动态包含,这和JSP指令中的静态包含是稍有不同的。动态包含,即在运行期间访问被包含的页面,并将响应结果同包含页面的响应结果合并,生成最终的响应。类似在Servlet中调用RequestDispatcher的include方法进行包含。
和include指令的静态包含不同的在于,静态包含发生在翻译阶段,被包含的JSP文件不会生成Java类,而是翻译后包含在主体文件的Java类中,即静态包含最终只会生成一个Java类。而动态包含,则各自的JSP页面会生成各自的Java类,只是最终响应的结果会进行合并。
2.3 param
param动作往往是作为forward和include动作的子动作进行使用,用以传递参数。如下代码示例:
x
上述代码使用param为forward和include动作传递参数,参数将被作为请求参数进行传递。如此处为head.jsp传递了参数time,那么在head.jsp页面中,则可以通过类似 的方式进行获取显示。
3、JavaBean相关的标准动作
所谓JavaBean,是用Java语言描述的软件组件模型,实际上就是一个JavaSE的类,该类遵循一定的规范:
必须是public类
必须有一个无参的public构造方法
返回属性的方法为getXxx
设置属性的方法为setXxx
而在JSP中,则有三个标准动作和JavaBean有关,由于现在更多使用JSTL、EL表达式,所以这些标准动作使用较少。
3.1 useBean
使用useBean标准动作,可以获取(或创建)一个在 {scope} 范围内名为 {id} 的 {class} 类,scope范围可以为page、request、session、application。
如上例的含义为:调用request.getAttribute("zhangsan"),如果没有zhangsan,则调用Person的无参构造方法创建,并setAttribute("zhangsan", new Person())。
3.2 setProperty
setProperty用来对JavaBean对象的属性进行赋值,替代setXxx方法。其中:
name 表示JavaBean对象的id值
property 表示JavaBean对象的属性名
param 如果希望注入的值是请求参数,则使用param属性
value 如果希望注入的值是一个常量,则使用value属性
3.3 getProperty
getProperty用来调用JavaBean对象的getXxx方法获取对应属性值,其中:
name 表示JavaBean对象的id值
property 表示JavaBean对象的属性名
4、其他
以上就是常见的几种JSP标准动作了,还有一部分用得就更少了,如果有兴趣可以自行了解。
5、写在后面的话
但是如今,谁还用什么JSP标准动作啊???