`
蒲冬英的约定
  • 浏览: 123284 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

getRequestDispatcher 和sendRedirect区别

 
阅读更多
getRequestDispatcher是服务器内部跳转,地址栏信息不变,只能跳转到web应用内的网页。
sendRedirect是页面重定向,地址栏信息改变,可以跳转到任意网页。
这两条网上都查得到,但看着比较乱,现提供我测试的结果(仅供参考):
1.getRequestDispatcher分成两种,可以用request调用,也可以用getServletContext()调用
   不同的是request.getRequestDispatcher(url)的url可以是相对路径也可以是绝对路径。
   而this.getServletContext().getRequestDispatcher(url)的url只能是绝对路径。
 
 SecondServlet
    request.setAttribute("lover", "tom");
    request.getSession().setAttribute("lovered", "joe");

    request.getRequestDispatcher("/third?name=jay").forward(request, response);
    或
    request.getRequestDispatcher("third?name=jay").forward(request, response);
    或
    this.getServletContext().getRequestDispatcher("/third?name=jay").forward(request, response);
  

 
 ThirdServlet
    PrintWriter out = response.getWriter();
    String name = request.getParameter("name");
    out.println(request.getContextPath()+"<hr/>");
    out.println("name="+name+"<hr/>");
    out.println("lover="+request.getAttribute("lover")+"<hr/>");
    out.println("lovered="+request.getSession().getAttribute("lovered")+"<hr/>");
  

   结果显示,地址栏信息仍为http://localhost:8080/Test/second,这三种方式都可以传值到第二个Servlet。

2.sendRedirect只能用response调用,可以用相对路径(直接用),也可以用相对路径(需加应用路径)
 SecondServlet
    request.setAttribute("lover", "tom");
    request.getSession().setAttribute("lovered", "joe");

    response.sendRedirect("third?name=jay");
    或
    response.sendRedirect(request.getContextPath()+"/third?name=jay");
  

 
 ThirdServlet
    PrintWriter out = response.getWriter();
    String name = request.getParameter("name");
    out.println(request.getContextPath()+"<hr/>");
    out.println("name="+name+"<hr/>");
    out.println("lover="+request.getAttribute("lover")+"<hr/>");
    out.println("lovered="+request.getSession().getAttribute("lovered")+"<hr/>");
  

   结果显示,地址栏信息变为http://localhost:8080/Test/third?name=jay,只有request.getAttribute("lover")获取不到值,session范围及url路径后的传值在第二个Servlet都可以获取到值。

   response.sendRedirect("http://www.baidu.com");

经测试只有这样写,才能重定向到百度首页。
分享到:
评论
1 楼 estn_h 2012-08-26  
感谢!

相关推荐

    jsp跳转getRequestDispatcher()和sendRedirect()的区别.docx

    jsp跳转getRequestDispatcher()和sendRedirect()的区别.docx

    jsp跳转getRequestDispatcher()和sendRedirect()的区别

    主要介绍了jsp跳转getRequestDispatcher()和sendRedirect()的区别,需要的朋友可以参考下

    response_sendRedirect和request_getRequestDispatcher()_forward的区别.

    而sendRedirect方法可以让你重定向到任何URL。 表单form的action="/uu";sendRedirect("/uu");表示相对于服务器根路径。如http://localhost:8080/Test应用(则提交至http://localhost:8080/uu); Forward代码中的"/uu...

    jsp中页面之间的跳转forward与sendRedirect的区别

    页面之间的跳转可以通过两种方式实现:forward和sendRedirect。 forward:可以在JSP页面中使用,可以在Servlet中实现。 在JSP页面中使用”目标文件”/&gt;,例如要跳转到userlist.jsp,可以写: 代码如下: ”userlist...

    转发和重定向的区别 forward和redirect的区别

    转发和重定向的区别 forward和redirect的区别 request.getRequestDispatcher()..forward(request,response);和 response.sendRedirect();的区别详解

    数据库测试test.sql

    request.getRequestDispatcher("/admin/register.jsp").forward(request,response); return; } //2.调用业务层完成注册操作并返回结果 User user = new User(userId,realName,pwd,age, Arrays.toString...

    jsp servlet

    response.sendRedirect("userInfo"); //重定向的跳转方式为get(如果下一个servlet中没有get方法 将出现异常) 注意事项:a标签和重定向差不多 通过a标签进行跳转时也是调用doGet()方法 //从地址栏上方进入网页也是...

    用Ajax实现一个新的用户注册

    response_sendRedirect和request_getRequestDispatcher()_forward的区别.

    JSP面试容易问到的问题

    &lt;一&gt;——forward与sendRedirect的区别 ********************************************************************************* forward:可以在JSP页面中使用,可以在Servlet中实现。 在JSP页面中使用目标文件"/&gt;...

    计算机基础课程教学平台+毕业设计+源代码

    //sql语句,从user表中选择出username和userpassword与用户填入的一样的数据 String sql = "select * from user where username = '" + username + "' and userpassword = '" + userpassword + "'"; ResultSet ...

    jsp跳转的五种方式

     rd = sc.getRequestDispatcher("/index.jsp"); //定向的页面  rd.forward(request, response); }  通常在servlet中使用,不在jsp中使用。  2.response.sendRedirect()  是在用户的浏览器端工作,...

    学生信息管理系统

    response sendRedirect &quot;login jsp&quot; ; }else{ response sendRedirect &quot;error jsp&quot; ; } }else if &quot;login&quot; equals action { t setPassword MD5 generateMD5 request...

    北大青鸟U2项目完全版

    request.getRequestDispatcher("providerAddxiugai.jsp").forward(request, response); }else if(canshu.equals("xiugaiok")){ int gysid=Integer.parseInt(request.getParameter("gysid")); String ...

    投票系统,基于mvc开发,jsp+servlet+mysql

    // resp.sendRedirect(req.getContextPath()+"/main?action=welcome"); application.getRequestDispatcher("/WEB-INF/front/success.jsp").forward(req, resp); return; } req.setAttribute("err",...

    很经典的登录回选。

    if (session.getAttribute("person") == null) ... response.sendRedirect(request.getContextPath() + "/login.jsp"); }else{ request.getRequestDispatcher("fall.jsp").forward(request, response); }

    上传文件_java_

    转载在Servlet中进行服务端跳转的方式:request.getRequestDispatcher(&quot;success.html&quot;).forward(request response);在Servlet中进行客户端跳转的方式: response.sendRedirect(&quot;fail.html&quot;);

    jsp和servlet中实现页面跳转的方式实例总结

    本文实例总结了jsp和servlet中实现页面跳转的方式。分享给大家供大家参考,具体如下: 假设要求从test1.jsp 跳转到test2.jsp 一. jsp中跳转: 1. 使用RequestDispatcher.forward方法转发 &lt;&#37; ...

    jsp基础精华详解

    request.getRequestDispatcher("index.jsp").forward(request, resposne); 外部跳转: response.sendRedirect("index.jsp"); 内部跳转是一次请求和一次响应 外部跳转是两次请求和两次响应 ServletContext:Servlet上...

    简单的servlet增,删,改,查

    // response.sendRedirect("/sshmvc/listUser.jsp"); request.getRequestDispatcher("/listUser.jsp") .forward(request, response); } } import="java.util.*,java.util.*,com.sshmvc.*,...

Global site tag (gtag.js) - Google Analytics