2.5 JSP的7个动作指令 2.5.1 forward指令
2.5 JSP的7个动作指令
动作指令与编译指令不同,编译指令是通知Servlet
引擎的处理消息,而动作指令只是运行时的动作。
- 编译指令在将
JSP
编译成Servlet
时起作用; - 而处理指令通常可替换成
JSP
小脚本,它只是JSP
小脚本的标准化写法
JSP动作指令
JSP
动作指令主要有如下7个。
jsp:forward
:执行页面转向,将请求的处理转发到下一个页面jsp:param
:用于传递参数,必须与其他支持参数的标签一起使用jsp:include
:用于动态包含一个JSP
页面jsp:plugin
:用于下载JavaBean
或Applet
到客户端执行。jsp:useBean
:创建一个Javabean
的实例jsp:setProperty
:设置JavaBean
实例的属性值jsp:getProperty
:输出Javabean
实例的属性值。
下面依次讲解这些动作指令。
2.5.1 forward指令
forward
指令用于将页面响应转发到另外的页面。既可转发到静态的HTML
页面,也可转发到动态的JSP
页面,或者转发到容器中的Servlet
JSP
的forward
指令的格式如下。
JSP1.0语法
对于JSP1.0
,使用如下语法:
1 | <jsp:forward page={"relativeURL" | "<%= expression %>"} /> |
JSP1.1语法
对于JSP1.1
以上规范,可使用如下语法:
1 | <jsp:forward page="{relativeURL|<%=expression%>}"> |
第二种语法用于在转发时增加额外的请求参数。增加的请求参数的值可以通过HttpservletrEquest
类的getParameter
方法获取。
jsp-forward.jsp
下面示例页面使用了forward
动作指令来转发用户请求。
1 | <%@ page contentType="text/html; charset=UTF-8" language="java" errorPage="" %> |
这个JSP
页面非常简单,它包含了简单的title
信息,页面中也包含了简单的文本内容,页面的forward动作指令:
1 | <jsp:forward page="forward-result.jsp"> |
forward-result.jsp
将客户端请求转发到forward-result.jsp
页面,并且在转发请求时增加了一个请求参数:参数名为age
,参数值为29。
在forward-result.jsp
页面中,使用request
内置对象(request
内置对象是HttpServletRequest
的实例,关于request
的详细信息参看下一节)来获取增加的请求参数值。
1 | <%@ page contentType="text/html; charset=UTF-8" language="java" errorPage="" %> |
forward-result.jsp
页面中代码设置了title
信息,并输出了age
请求参数的值,在浏览器中访问jsp-forward.jsp
页面的执行效果如图2.12所示
执行forward时不会丢失请求参数
从图2.12中可以看出,执行forward
指令时,用户请求的地址依然没有发生改变,但页面内容却完全变成被forward
目标页的内容
执行forward
指令转发请求时,客户端的请求参数不会丢失。
form.jsp
看下面表单提交页面的例子,该页面没有任何动态的内容,只是一个静态的表单页,作用是将请求参数提交到jsp-forward.jsp
页面。
1 | <%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> |
修改forward-result.jsp
页,增加输出表单参数的代码,也就是在forward-result.jsp
页面改成如下代码:
1 | <%@ page contentType="text/html; charset=UTF-8" language="java" errorPage="" %> |
在表单提交页面中的文本框中输入任意字符串后提交该表单,即可看到如图2.13所示的执行效果
从图2.13中可看到,forward-result.jsp
页面中不仅可以输出forward
指令增加的请求参数,还可以看到表单里username
表单域对应的请求参数,这表明执行forward
时不会丢失请求参数