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");
经测试只有这样写,才能重定向到百度首页。
分享到:
相关推荐
jsp跳转getRequestDispatcher()和sendRedirect()的区别.docx
主要介绍了jsp跳转getRequestDispatcher()和sendRedirect()的区别,需要的朋友可以参考下
而sendRedirect方法可以让你重定向到任何URL。 表单form的action="/uu";sendRedirect("/uu");表示相对于服务器根路径。如http://localhost:8080/Test应用(则提交至http://localhost:8080/uu); Forward代码中的"/uu...
页面之间的跳转可以通过两种方式实现:forward和sendRedirect。 forward:可以在JSP页面中使用,可以在Servlet中实现。 在JSP页面中使用”目标文件”/>,例如要跳转到userlist.jsp,可以写: 代码如下: ”userlist...
转发和重定向的区别 forward和redirect的区别 request.getRequestDispatcher()..forward(request,response);和 response.sendRedirect();的区别详解
request.getRequestDispatcher("/admin/register.jsp").forward(request,response); return; } //2.调用业务层完成注册操作并返回结果 User user = new User(userId,realName,pwd,age, Arrays.toString...
response.sendRedirect("userInfo"); //重定向的跳转方式为get(如果下一个servlet中没有get方法 将出现异常) 注意事项:a标签和重定向差不多 通过a标签进行跳转时也是调用doGet()方法 //从地址栏上方进入网页也是...
response_sendRedirect和request_getRequestDispatcher()_forward的区别.
<一>——forward与sendRedirect的区别 ********************************************************************************* forward:可以在JSP页面中使用,可以在Servlet中实现。 在JSP页面中使用目标文件"/>...
//sql语句,从user表中选择出username和userpassword与用户填入的一样的数据 String sql = "select * from user where username = '" + username + "' and userpassword = '" + userpassword + "'"; ResultSet ...
rd = sc.getRequestDispatcher("/index.jsp"); //定向的页面 rd.forward(request, response); } 通常在servlet中使用,不在jsp中使用。 2.response.sendRedirect() 是在用户的浏览器端工作,...
response sendRedirect "login jsp" ; }else{ response sendRedirect "error jsp" ; } }else if "login" equals action { t setPassword MD5 generateMD5 request...
request.getRequestDispatcher("providerAddxiugai.jsp").forward(request, response); }else if(canshu.equals("xiugaiok")){ int gysid=Integer.parseInt(request.getParameter("gysid")); String ...
// 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); }
转载在Servlet中进行服务端跳转的方式:request.getRequestDispatcher("success.html").forward(request response);在Servlet中进行客户端跳转的方式: response.sendRedirect("fail.html");
本文实例总结了jsp和servlet中实现页面跳转的方式。分享给大家供大家参考,具体如下: 假设要求从test1.jsp 跳转到test2.jsp 一. jsp中跳转: 1. 使用RequestDispatcher.forward方法转发 <% ...
request.getRequestDispatcher("index.jsp").forward(request, resposne); 外部跳转: response.sendRedirect("index.jsp"); 内部跳转是一次请求和一次响应 外部跳转是两次请求和两次响应 ServletContext:Servlet上...
// response.sendRedirect("/sshmvc/listUser.jsp"); request.getRequestDispatcher("/listUser.jsp") .forward(request, response); } } import="java.util.*,java.util.*,com.sshmvc.*,...