JSP的动作指令
动作指令和编译指令不同,编译指令时通知Servlet引擎的处理消息,而动作指令只是在运行时的动作。
JSP的动作指令主要有如下几个:
jsp:forword 执行页面转向,将处理的请求转发到下一个页面。
jsp:param 用于传递参数,必须要与其他支持参数的标签一起使用。
jsp:include 用于动态的引入一个JSP页面。
jsp:plugin 用于下载JavaBean或者Applet到客户端执行。
jsp:useBean 创建一个JavaBean实例
jsp:setProperty 设置JavaBean实例的属性
jsp:getProperty 用于获取JavaBean实例的属性
1.forward指令
forward指令用于将页面的相应转发到另外的页面,既可以转发到静态的页面,也可以转发到动态的页面,或者转发到容器的Servlet中。
JSP的forward指令的语法:
<jsp:forword page="页面的地址">
<jsp:param name="" value=""/>
</jsp:forword>
此语法可以在转发的时候添加参数,增加的参数是可以通过HTTP Servlet的getParameter()方法获取。
原始页面如下:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>forward的原始页面</title> </head> <body> <h3>for ward的原始页面</h3> <jsp:forward page="forward-resut.jsp"> <jsp:param value="29" name="age"/> </jsp:forward> </body> </html>
转发的页面如下:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>forward的结果页面</title> </head> <body> <!-- 使用request内置对象获取参数 --> <%=request.getParameter("age") %> </body> </html>
注意:在执行forward时,用户请求的地址栏是没有变化的,但是页面的内容时被forward的内容替代。
2.include指令
include指令是一个动态的include指令,也用于包含某个页面,它不导入被include页面的编译指令,仅仅是将页面的body内容插入到本页面。
include的语法:
<jsp:include page="页面的地址" flush="true|false"/>
或者
<jsp:include page="页面的地址" flush="true|false">
<jsp:param value="" name=""/>
</jsp:include>
flush属性是指定输出缓存是否转移到被导入的文件中,如果是true,则包含在被导入的文件中,如果是false,则包含在源文件中,在JSP1.1旧版本中,只能是false。
动态include和静态include的区别:
- 静态导入时将被导入的页面的代码完整的融入,两个页面融合成一个整体的Servlet,而动态的导入时在Servlet中使用include方法来引入被导入页面内容。
- 静态导入时被导入页面的编译指令也会被导入进来起作用,而动态的导入时被导入的页面的编译指令会失去作用,只是插入被导入页面的body内容。
动态include和动态forward指令其实有些相似的,区别在于:执行forward时,被forward的页面将完全替代原有的页面,而执行include时,被include的页面只是插入原有的页面里,简而言之:forward时拿原有页面来代替原有的页面,而include则拿出目标页面插入原有的页面。
3.useBean,setProperty,getProperty指令
这三个指令都是与JavaBean有关的指令,其中useBean指令是用于在JSP页面中初始化一个Java实例,setProperty指令用于为JavaBean实例的属性设置值,getProperty指令用于输出JavaBean实例的属性。
useBean的语法:
<jsp:useBean id="name" class="className" scope="page|request"/>
id是指JavaBean实例的名字,而class是用来指定JavaBean的类的名,必须是完整的类名,包名也需要写进去,scope是用来指定该JavaBean的作用域,通常的指定域有四个:
page:该JavaBean只在此页面有效。
request:该JavaBean在此次的request中有效
session:该JavaBean在整个会话中有效。
application:该JavaBean在本应用中一直都有效。
setProperty的语法:
<jsp:setProperty id="name" proterty="propertyname" value=""/>
name是确认需要设定的JavaBean的实例名,proterty是用来确定需要设置的属性名,value是用来设置属性值。
getProperty的语法:
<jsp:getProperty id="name" proterty="protertyname" />
name属性用来确定需要输出的JavaBean的实例名,property属性确定需要输出的属性名。
4.prama指令
param指令用于设置参数值,这个指令本身是不能单独使用的,因为单独的param指令时没有任何意义的。
param指令可以和以下三个指令结合使用:
jsp:include
jsp:forward
jsp:plugin