有什么区别 ">
站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题response.sendRedirect("e321a.jsp");和 -lt;jsp:forward page=""e321a.jsp"" /-gt; 有什么区别

response.sendRedirect("e321a.jsp");和 -lt;jsp:forward page=""e321a.jsp"" /-gt; 有什么区别

摘要: response.sendRedirect("e321a.jsp");和 有什么区别


response.sendRedirect("e321a.jsp");和 有什么区别


sendRedirect浏览器里面的url会变成下一个url,但forward不会


导致的后果是前者可以作刷新操作,可以拷贝url,后者不能,速度上前者要通知浏览器,所以稍慢


response.sendRedirect("e321a.jsp"); 不共享request范围内的数据.客户端重新开一个http请求
共享 , 服务器端转发


似乎是一个流传了很久的JAVA面试问题了,找找答案吧


我的简单理解,比如请求的页面a.jsp
前者,服务器接到客户端浏览器请求,告诉浏览器,你应该请求的是e321a.jsp,浏览器就自动再对e321a.jsp发送一次请求(这个具体的工作流程不十分清楚,至少是相当于这种情况),那么也就是说浏览器知道自己的请求已经变成了e321a.jsp。

后者,服务器接到最初请求,并不会通知客户端浏览器我要把你的请求变成e321a.jsp。服务器只是把处理a.jsp变成处理e321a.jsp。这样在浏览器看来,他请求的还是a.jsp,服务器端是否把请求重定向浏览器不知道,结果就是地址栏里还是a.jsp。


学习


response.sendRedirect("e321a.jsp"); 不共享request范围内的数据.客户端重新开一个http请求
共享 , 服务器端转发
正解!

forward可以将request内的数据重定向到下一个页面,而sendRedirect不行


response.sendRedirect("e321a.jsp"); 重定向,新请求。
转发,沿用之前请求。


↑返回目录
前一篇: 为什么通过HttpSessionListener统计网站在线人数会出现负值?
后一篇: 编写JSP文档用什么工具比较好?