小编打算就初学者的热门框架--SSM框架,做一个系列教程。
这是第四篇,本篇小编教你写SSM框架中的转发与重定向。
一、什么是转发
1.服务器对浏览器的请求作出响应,在服务器内部将请求转发到另一个地址,浏览器只知道发出了请求并得到了响应结果,并不知道在服务器程序内部发生了转发行为。
二、SSM转发的写法
1.处理器方法返回 ModelAndview 转发到视图
//处理器方法返回ModelAndView转发到视图@RequestMapping(value = "save.do")public ModelAndView save(UserInfo userInfo) throws Exception {ModelAndView mv = new ModelAndView();userService.save(userInfo);//看这里↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓mv.setViewName("forward:/user-list");return mv;}
2.处理器方法返回 String 转发到视图
//处理器方法返回String转发到视图@RequestMapping(value = "save.do")public String save(UserInfo userInfo) throws Exception {userService.save(userInfo);//看这里↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓return "forward:/user-list";}
3.转发到其他处理器
//转发到其他的处理器@RequestMapping(value = "save.do")public ModelAndView save(UserInfo userInfo) throws Exception {ModelAndView mv = new ModelAndView();userService.save(userInfo);//看这里↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓mv.setViewName("forward:findAll.do");return mv;}
三、什么是重定向
1.服务器对浏览器的请求直接作出响应,响应的结果就是告诉浏览器去重新发出对另外一个URL的 访问请求。
四、SSM重定向的写法
1.处理器方法返回 ModelAndView 重定向到视图
//处理器方法返回ModelAndView重定向到视图@RequestMapping(value = "save.do")public ModelAndView save(UserInfo userInfo) throws Exception {ModelAndView mv = new ModelAndView();userService.save(userInfo);//看这里↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓mv.setViewName("redirect:/user-list");return mv;}
2.处理器方法返回 String 重定向到视图
//处理器方法返回String重定向到视图@RequestMapping(value = "save.do")public String save(UserInfo userInfo) throws Exception {userService.save(userInfo);//看这里↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓return "redirect:/user-list";}
3.重定向到其他处理器
//重定向到其他的处理器@RequestMapping(value = "save.do")public ModelAndView save(UserInfo userInfo) throws Exception {ModelAndView mv = new ModelAndView();userService.save(userInfo);//看这里↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓mv.setViewName("redirect:findAll.do");return mv;}
五、转发与重定向的区别
1、发生行为不同
转发是服务器端行为;
重定向是客户端行为
2、请求次数不同
转发时服务器对浏览器的请求作出响应,在服务器端内部将请求转发给另外一个资源,客户端只发起一次请求;
重定向是浏览器向服务器发送一个请求并收到响应后再次向一个新地址发出请求,至少有两次请求
3、地址栏变化不同
转发地址栏不会发生变化;
重定向地址栏会发生变化
4、是否共享数据
转发只有一次请求,所以request数据是共享的;
重定向有两次请求,两次请求之间不共享request数据
5、跳转限制
转发只能跳转本站点资源;
重定向可以跳转到任意URL
以上就是本篇文章的全部内容了
如果有疑问和建议欢迎扫描下方二维码,添加小编的微信互相交流讨论。

文章转载自程序员小黄,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




