当客户端请求提交到服务器的jsp处理的时候这个jsp可以携带请求和响应对象转移到web应用的另一处进行处理在另外一处进行处理后,产生结果页面响应给客户端浏览器此时客户端浏览器可以看到结果页面,但URL无变化所以不知道服务器端经过几层处理
重定向:redirect
一个web资源收到客户端请求后,通知浏览器去访问另外一个Web资源(浏览器进行2次请求),称之为重定向。
当客户端浏览器提交到服务器的JSP处理的时候这个JSP返回一个响应:去请求另外一次的URL此时客户端浏览器会再次发出一个新的请求到这个新的地址新的URL地址负责为浏览器产生响应这时浏览器看到的URL是第二次请求所对应的URL地址
两者的区别,转发和重定向的选择
重定向的速度比转发慢,因为浏览器还得发出一个新的请求,如果在使用转发和重定向都无所谓的时候建议使用转发。
因为转发只能访问当前WEB的应用程序,所以不同WEB应用程序之间的访问,特别是要访问到另外一个WEB站点上的资源的情况,这个时候就只能使用重定向了。
1.forward是服务器内部转发,而redirect是通过客户端进行转发
2.如果使用forward转发的话,客户端URL地址不会改变,但是redirect请求的话,URL地址会变
3.如果forward进行转发,转发页面和被转发页面处于一个request请求内,而
写法有问题。<jsp:forward page="xxx/xxx.jsp">forward动作对应的是Servlet中RequestDispatcher类的forward(ServletRequest request, ServletResponse response)方法,也就是把请求进行转发。
也可以写成
<jsp:forward>
<jsp:attribute name="page">xxx/xxx.jsp</jsp:attribute>
</jsp:forward>
这种写法等价于上面的写法。
在JSP中使用jsp forward Action来实现页面的跳转功能
语法
<jsp:forward page="{relativeURL|<%= expression %>}"/>或
<jsp:forward page="{relativeURL|<%= expression %>}">
<jsp:param name=parameterName
value="{parameterValue|<%= expression %>}"/>+</jsp:forward>
这个action使您可以将request向前到另外一个页面 它只有一个属性 page Page应有一个相对的URL组成 这可以是一个静态的值或者是能够在被请求的时候计算得到的值 就如下面两个例子一般
<jsp:forward page="/utils/errorReporter jsp"/>
<jsp:forward page="<%= someJavaExpression %>"/>
!supportEmptyParas]>
现在以一个具体例子来说明 在test jsp中使用forward使其跳转到test jsp页面中
Test jsp
<HTML>
<HEAD>
<TITLE>forward test</TITLE>
!supportEmptyParas]>
</HEAD>
!supportEmptyParas]>
<BODY BGCOLOR="#FFFFFF">
<! 跳转到test jsp !>
<jsp:forward page="/test jsp"/>
</BODY>
</HTML>
!supportEmptyParas]>
test jsp
<HTML>
<HEAD>
<TITLE>forward test </TITLE>
!supportEmptyParas]>
</HEAD>
!supportEmptyParas]>
<BODY BGCOLOR="#FFFFFF">
<%out println("这是jsp jsp页面产生出的输出")%>
</BODY>
</HTML>
!supportEmptyParas]>
运行test jsp 可在浏览器中看见 "这是jsp jsp页面产生出的输出"的输出信息 但是如果你在test jsp和test jsp这两个页面中有参数传递怎么办呢?用get方式吧 不但总的长度有限制 使用现在十分不方便 而且有时候还不安全 其实我们完全可以使用jsp 中给forward里提供的para属性就可以解决 现以test jsp和test jsp来说明
!supportEmptyParas]>
Test jsp
<HTML>
<HEAD>
<TITLE>forward test </TITLE>
!supportEmptyParas]>
</HEAD>
!supportEmptyParas]>
<BODY BGCOLOR="#FFFFFF">
<jsp:forward page="/test jsp">
<jsp:param name=name value="powerman"/>
<jsp:param name=address value=" 北京西大街 号"/>
</jsp:forward>
</BODY>
</HTML>
!supportEmptyParas]>
test jsp
<HTML>
<HEAD>
<TITLE>forward test</TITLE>
!supportEmptyParas]>
</HEAD>
!supportEmptyParas]>
<BODY BGCOLOR="#FFFFFF">
<%
out println("这是jsp jsp页面产生出的输出"+"<br>")
out println("姓名 "+request getParameter("name")+"<br>")
out println("地址 "+request getParameter("address")+"<br>")
!supportEmptyParas]>
%>
</BODY>
</HTML>
运行test jsp 可在浏览器中看见
"这是jsp jsp页面产生出的输出
姓名 powerman
地址 北京西大街 号"
lishixinzhi/Article/program/Java/JSP/201311/20329
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)