SpringMVC轻量级框架之控制器重定向跳转原理分析
来源:互联网 发布:ubuntu如何安装搜狗 编辑:程序博客网 时间:2024/06/07 16:39
SpringMVC属于SpringFrameWork的后续产品,Spring框架提供了构建Web应用程序的全功能MVC模块。
使用Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1,Struts2等。
SpringMVC框架控制器(controller)之间的跳转需要重定向操作,可以分为如下几种情况:
1)不带参数跳转形式
2)拼接Url带参数跳转形式
3)不拼接参数而带参数跳转形式
1. 首先介绍一下不带参数跳转形式,如:新增用户操作后跳转至用户列表页面。
方式一:使用ModelAndView对象
@RequestMapping(value = "add",method = RequestMethod.POST)public ModelAndView addUser(){....return new ModelAndView("redirect:/user/userList");}
方式二:返回String字符串
@RequestMapping(value = "add",method = RequestMethod.POST)public String addUser(){return "redirect:/user/userList";}
等方式都可以满足不带参数重定向跳转,其他形式就不一一介绍,注意:spring跳转都是基于response封装开发的。
2. 拼接Url带参数跳转形式,如:用户列表页面查询操作,跳转后查询页面条件不能丢失。
方式一:使用ModelAndView对象
@RequestMapping(value = "add",method = RequestMethod.POST)public ModelAndView addUser(){....return new ModelAndView("redirect:/user/userList?param1="+value1+"¶m2="+value2);}
方式二:返回String字符串
@RequestMapping(value = "add",method = RequestMethod.POST)public String addUser(){return "redirect:/user/userList?param1="+value1+"¶m2="+value2;}
3. 不拼接参数而带参数跳转形式,如:登录操作时信息不对外公开。
@RequestMapping("login")public ModelAndView login(RedirectAttributes attr) throws Exception{...attr.addFlasAttribute("userId","u100001");attr.addFlasAttrAttribute("name","似情")attr.addFlasAttribute("success","登录成功");return new MockAttributeSet("redirect:/index");} @RequestMapping("/lndex")public String save(@ModelAttribute(RedirectAttributes attr)) throws Exception{Map map = attr.getFlashAttributes();String name = (String)map.get("name");....return "redirect:/user/userList"}
带参数使用RedirectAttributes参数进行传递注意事项:
1)使用RedirectAttributes的addAttribute方法传递参数会跟随在URL后面,如上面代码Url地址为http:/blog.yoodb.com/user/userList.action?userId=u100001
2)使用addFlashAttribute不会跟随在URL后面,会把参数值暂时保存于session,待重定向url获取该参数后从session中移除,redirect必须是方法映射路径(跳转controller控制器)。
3)使用RedirectAttributes对象来完成传递参数操作,但是没有进行redirect重定向,Spring不会将RedirectAttributes参数传递过去,默认传forward对应的model,官方的建议是:p:ignoreDefaultModelOnRedirect="true" />设置RequestMappingHandlerAdapter 的ignoreDefaultModelOnRedirect属性,可以提高效率,避免不必要的检索。
分析原理:将传递参数存临时放入session对象中(为了防止不同重定向请求的数据相互影响,存在有锁处理机制),重定向成功后session将其参数立即移除,观察后台刷新页面后值已经不存在。
- SpringMVC轻量级框架之控制器重定向跳转原理分析
- SpringMVC轻量级框架之控制器重定向跳转原理分析
- SpringMvc框架原理分析
- springMVC上传大文件浏览器重定向
- 【springmvc框架】(一)原理分析
- SpringMVC-轻量级Web框架
- 解决ajax请求过滤器重定向不跳转
- 解决ajax请求过滤器重定向不跳转
- 搭建SpringMVC+Mybatis轻量级框架
- SpringMVC框架原理分析和入门实例
- 2. SpringMVC框架之 原理篇
- SpringMVC 之重定向
- SpringMVC之重定向
- JavaEE 轻量级常用框架原理
- SpringMVC controller控制页面跳转
- SpringMVC框架01-SpringMVC原理
- springmvc框架原理
- SpringMVC框架原理
- Linux学习之二十(特殊权限SUID详解)
- A
- 前三章
- 前端面试题汇总
- .gitignore设置跟踪忽略文件夹中文件
- SpringMVC轻量级框架之控制器重定向跳转原理分析
- 用python pulp的线性规划方法计算满足营养所需的最少食物
- Windows Server 2008 R2 C盘空间不足解决方法
- 动态网页开发基础
- 颜宁发微博“求救” 要投拆造谣公众号
- Linux学习之二十一(facl及用户及linux终端)
- hdu 2795
- CSS3自定义滚动条的样式
- angular2-angular-cli