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页面,或者转发到容器中的ServletJSP的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时不会丢失请求参数