forward指令用于将页面响应转发到另外的页面。
语法一:
<jsp:forward page="{relativeURL|<%=expression%>}">
</jsp:forward>
语法二:
<jsp:forward page="{relativeURL|<%=expression%>}">
<jsp:param name="..." value="..."></jsp:param>
</jsp:forward>
第二种语法用于在转发时增加额外的参数,值可以通过HttpServletRequest类的getParameter()方法获取。
特点:
执行forward指令时,用户请求的地址没有改变,但页面内容却完全变为被forward目标页的内容。
从表面上看,<jsp:forward.../>指令给人一种感觉:它是将用户请求“转发”到了另一个新页面,实际上,它并没有重新向新页面发送请求,只是完全采用了新页面来对用户生成响应,请求应然是一次请求,所以参数,属性都不会丢失。
扩展:
上面介绍的forward是通过jsp提供的动作指令进行的,request对象也可以执行forward。
HttpServletRequest类提供了一个getRequestDispatcher(String path)方法,其中path就是希望forward或者include的目标路径,该方法返回RequestDispatcher,改对象提供了如下两个方法:
forward(ServletRequest request,ServletResponse response):执行forward
include(ServletRequest request,ServletResponse response):执行include
如下代码行可以将a.jspyemian include到本页面中:
getRequestDispatcher("/a.jsp").include(request,response);
如下代码可以将请求forward到a.jsp页面:
getRequestDispatcher("/a.jsp").forward(request,response);
(内容参考疯狂java做的笔记,违法必删)