response.sendRedirect 的功能是地址重定向(页面跳转)

来源:互联网 发布:windows启动管理器 编辑:程序博客网 时间:2024/05/13 22:15

转自:http://blog.csdn.net/rockstar541/article/details/7768461

response.sendRedirect 的功能是地址重定向(页面跳转)


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地址栏显示的路径也不一样,




①使用sendRedirect()来传递字符参数
 使用sendRedirect()
代码:
response.sendRedirect("/UsersManager/MainFrame?uname="+username+"&pwd="+password);
 
说明:
基本格式:
response.sendRedirect(“servlet的地址?参数名=参数值&参数名=参数值...”);
 
 参照值是String , 参数名应当使用 字母组合
 
在接受数据的Servlet中:
 
String 参数=request.getParameter(“参数名”);

阅读全文
0 0
原创粉丝点击