首页 > 其他 > 详细

转发和重定向的区别

时间:2021-06-06 16:28:43      阅读:21      评论:0      收藏:0      [点我收藏+]
转发、重定向
 

转发--->Forward,100%不能带工程名
 
转发的特点:1)、可以传值;
                     2)、路径没有发生改变,其实总共只发起了一次请求;
                     3)、转发的方式只能跳转到本工程之内的url 。
               
 
 
public class ForwardA,这个类存值
//1.通过 HttpServletRequest存值
req.setAttribute("msg","ForwardA存的值");
 
//2.通过转发的方式跳转到ForwardB
req.getRequestDispatcher("/forwardB.do").forward(req,resp);
 
 
public class ForwardB,这个类取值
获取刚才ForwardA存的值
String msg = req.getAttribute("msg").toString();
 
System.out.println("获取的值为:"+msg);
 
 
在运行过程中,浏览器的输出路径没有发生变化:
 
tips:
      测试的时候一定要先访问@WebServlet("/forwardA.do")这个存值的,然后再访问@WebServlet("/forwardB.do")这个取值的,否则会报505空指针异常的错误。
 
 
 

 
重定向--->Redirect,必须带工程名
 
重定向的特点:1)、不会传值,也不会携带值;
                        2)、路径会发生改变,其实这是发起了两次请求;
                        3)、重定向的方式可以跳转到本工程之外的url,比如:可以跳到其他工程的url或者百度等。
 
public class RedirectA,这个类存值
//1.通过 HttpServletRequest存值
req.setAttribute("msg","RedirectA存的值");
 
//2.通过重定向的方式跳转到RedirectB 必须带上工程名
resp.sendRedirect("/ServletDemo007Day04/redirectB.do");
 
 
public class RedirectB,这个类取值
//获取刚才RedirectA存的值
String msg = req.getAttribute("msg").toString();
 
System.out.println("获取的值为:"+msg);
 
 
在运行过程中,浏览器的输出路径发生了变化:
 
然后运行结束后的路径变成了:http://localhost:8080/ServletDemo007Day04/redirectB.do
同时也报了个505的空指针异常的错误:技术分享图片技术分享图片
 
  • 以下演示重定向可以跳转到本工程之外的url,如百度:
技术分享图片技术分享图片
 
 
 
 
 
 
 
 
 
 

转发和重定向的区别

原文:https://www.cnblogs.com/WJ-9452/p/14855309.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!