用sendredirect还是forward?页面跳转续~
2008-05-15 11:21
288 查看
1.response.sendredirect(url);
新的页面并不能处理旧页面的pagecontext(request,response,...)对象,所以你用request.getparameter(ff)企图调用原页面 request对象的参数,得到的自然是null
2.getservletcontext().getrequestdispatcher(url).forward(request,response);
forward函数已经把原页面的request,response对象传入新的页面,因此这新旧页面拥有相同的 request,response对象。request.getparameter(ff)就可以得到相应的值
3.servletcontext.getrequestdispatcher 路径必须是相对上下文的绝对路径 servletrequest.getrequestdispatcher 可以是相对也可以是绝对
服务器端进行转向的4种方法:
1. servletcontext的getrequestdispatcher()
2. servletcontext的getnameddispatcher()
3. servletrequest的getrequestdispatcher()
4. servletresponse的sendredirect()进行转向。
1.2.3 => forward() 4. sendredirect()
使用forward方法,因为这些这样比较高效。只有在forward方法不能使用时,再使用servletresponse的sendredirect()方法。
<jsp:fordward>与 sendredirect 方法的比较
虽然 <jsp:fordward>与 sendredirect 方法,都可以将浏览器浏览的网页,重导至另一个网页,但是两者在原理上是不太相同。
a. <jsp:fordward> : 动作是利用伺服端,将资料输出至缓冲区的机制,在前一个网页尚未输出到客户端前,取消资料的输出,然后输出另一个网页的资料,达到重导浏览器的效果。 优点: 两网页间可以分享 request 对象内的变量。
b. sendredirect : 动作是透过 http 协议的 header , 对浏览器下达重导指令,因此,不牵涉到服务器端缓冲区的问题。 不过由于 sendredirect 方法作用于客户端,所以重导前后网页无法分享存在于 request 对象内的变量。 solution: response.sendredirect(“sendredirect.htm?name=sparkwu&e-mail=spark.wu@cobra-tech.com”)
直观一点: response.sendredirect(url); 对服务器的响应进行重定向。当server作出响应后,client客户端的请求的生存周期就终止了。这个时候再用request.getparameter()或request.getattribute()得到的只能是null。 getservletcontext().getrequestdispatcher(url).forward(request,response); 它则可以认为是对client的请求(request) 进行传递,在server没有进行响应前,即没有response一直可以进行传递--重定向。网友:alexlovejava 前者是的跳转是的客户端,后者是在服务器端,后者在跳转的时候可以传request对象,前者只能通过?穿参数,后者是forword(),这两者在流转的时候url的路径不一样,在ie地址栏显示的路径也不一样,
新的页面并不能处理旧页面的pagecontext(request,response,...)对象,所以你用request.getparameter(ff)企图调用原页面 request对象的参数,得到的自然是null
2.getservletcontext().getrequestdispatcher(url).forward(request,response);
forward函数已经把原页面的request,response对象传入新的页面,因此这新旧页面拥有相同的 request,response对象。request.getparameter(ff)就可以得到相应的值
3.servletcontext.getrequestdispatcher 路径必须是相对上下文的绝对路径 servletrequest.getrequestdispatcher 可以是相对也可以是绝对
服务器端进行转向的4种方法:
1. servletcontext的getrequestdispatcher()
2. servletcontext的getnameddispatcher()
3. servletrequest的getrequestdispatcher()
4. servletresponse的sendredirect()进行转向。
1.2.3 => forward() 4. sendredirect()
使用forward方法,因为这些这样比较高效。只有在forward方法不能使用时,再使用servletresponse的sendredirect()方法。
<jsp:fordward>与 sendredirect 方法的比较
虽然 <jsp:fordward>与 sendredirect 方法,都可以将浏览器浏览的网页,重导至另一个网页,但是两者在原理上是不太相同。
a. <jsp:fordward> : 动作是利用伺服端,将资料输出至缓冲区的机制,在前一个网页尚未输出到客户端前,取消资料的输出,然后输出另一个网页的资料,达到重导浏览器的效果。 优点: 两网页间可以分享 request 对象内的变量。
b. sendredirect : 动作是透过 http 协议的 header , 对浏览器下达重导指令,因此,不牵涉到服务器端缓冲区的问题。 不过由于 sendredirect 方法作用于客户端,所以重导前后网页无法分享存在于 request 对象内的变量。 solution: response.sendredirect(“sendredirect.htm?name=sparkwu&e-mail=spark.wu@cobra-tech.com”)
直观一点: response.sendredirect(url); 对服务器的响应进行重定向。当server作出响应后,client客户端的请求的生存周期就终止了。这个时候再用request.getparameter()或request.getattribute()得到的只能是null。 getservletcontext().getrequestdispatcher(url).forward(request,response); 它则可以认为是对client的请求(request) 进行传递,在server没有进行响应前,即没有response一直可以进行传递--重定向。网友:alexlovejava 前者是的跳转是的客户端,后者是在服务器端,后者在跳转的时候可以传request对象,前者只能通过?穿参数,后者是forword(),这两者在流转的时候url的路径不一样,在ie地址栏显示的路径也不一样,
相关文章推荐
- 用sendredirect还是forward?页面跳转
- 用sendredirect还是forward?页面跳转
- jsp中页面之间的跳转forward与sendRedirect的区别
- 关于Servlet里用sendRedirect 或 forward 来跳转到其它页面
- 【学习摘记】马士兵Servlet&JSP_课时24_forward_sendredirect——原页面跳转 vs 新页面跳转
- jsp中页面之间的跳转forward与sendRedirect的区别
- JSP中三种页面跳转方式(jsp:forward、response.sendRedirect、response.setHeader)
- JSP中页面跳转 sendRedirect VS forward
- forward与sendRedirect区别(实现页面跳转的方法)
- JSP页面跳转之sendRedirect()与forward()辨析
- jsp中页面之间的跳转forward与sendRedirect的区别
- jsp中页面之间的跳转forward与sendRedirect的区别
- forward、sendRedirect及Jsp和Servlet之间的跳转
- JSP两种页面转换forward()和sendRedirect()
- response.sendRedirect页面跳转的方法总结——实习第六天
- Servlet跳转方式sendReDirect()和forward()
- 解决ajax请求下,后台sendRedirect页面跳转无效
- Servlet跳转方式sendReDirect()和forward()
- uaredirect.js 进行判断是pc还是wap端(移动端) wap端跳转页面
- servlet中页面重定向(sendRedirect)和请求转发(forward)区别