当前位置: 首页 > news >正文

spring MVC 3.1 forword/redirect

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

spring mvc 如何请求转发和重定向呢?往下看:

由于这部分内容简单,一带而过了。

 

1.请求转发:

  (1)返回ModelAndView :

@RequestMapping(value="/model",method=RequestMethod.GET)
public ModelAndView testForward(ModelAndView   model,@RequestParam(value="id",defaultValue="1",required=false)Long id){
   User u = getBaseService().get(User.class, id);
   model.addObject("user", u);
   model.setViewName("forward:index.jsp");
   return model;
}

 如上代码,如果返回modelAndView 则可以如红色标注,添加forward即可,若想重定向,可把forward替换成redirect便可达到目的。

 

(2)返回字符串

 

@RequestMapping(value="/forward",method=RequestMethod.GET)
  public String testForward(){

    return "forward:/index.action";
  }

 如上代码红色部分。

 

2.请求重定向

 对于请求转发可以分为:1.带参数 2.不带参数

 

(1)带参数:

 

Java代码  收藏代码

  1. @RequestMapping(value="/redirect",method=RequestMethod.GET)  

  2. public String testRedirect(RedirectAttributes attr){  

  3.      attr.addAttribute("a""a");  

  4.      attr.addFlashAttribute("b""b");  

  5.      return "redirect:/index.action";  

  6. }  

 

 

 带参数可使用RedirectAttributes参数进行传递:

    注意:1.使用RedirectAttributes的addAttribute方法传递参数会跟随在URL后面 ,如上代码即为http:/index.action?a=a

       2.使用addFlashAttribute不会跟随在URL后面,会把该参数值暂时保存于session,待重定向url获取该参数后从session 中移除,这里的redirect必须是方法映射路径,jsp无效。你会发现redirect后的jsp页面中b只会出现一次,刷新后b再也不会出现了,这 验证了上面说的,b被访问后就会从session中移除。对于重复提交可以使用此来完成.

 

   另外,如果使用了RedirectAttributes作为参数,但是没有进行redirect呢?这种情况下不会将RedirectAttributes参数传递过去,默认传forward对应的model,官方的建议是:


p:ignoreDefaultModelOnRedirect="true" />

 设置下RequestMappingHandlerAdapter 的ignoreDefaultModelOnRedirect属性,这样可以提高效率,避免不必要的检索。

 

 

(2)无参数

 


@RequestMapping(value="/redirect",method=RequestMethod.GET)
public String testRedirect(){

return "redirect:/index.action";
}


转载于:https://my.oschina.net/tiancai/blog/223743

相关文章:

  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • 为什么Maven会更改Eclipse JDK设置
  • C51中的INTRINS.H:内部函数
  • S3C2440与NAND FLASH(K9F1208)的接线分析
  • linux 6.2 部署nginx的过程
  • 成为Java高手需要达到的25个学习目标
  • 字符编码相关的知识
  • 远程读取XML根级别上的数据无效。 行 1,位置 1
  • 将DATAtable转换成 json格式
  • PHP之session相关实例教程与经典代码
  • HDU 3065 病毒侵袭持续中 (AC自动机)
  • HDU 1850 Being a Good Boy in Spring Festival (Nim博弈)
  • 20非常有用的Java程序片段(6-10)
  • BizTalk RosettaNet解决方案之Loopback
  • [Vue CLI 3] 配置解析之 css.extract
  • const let
  • CSS盒模型深入
  • ES2017异步函数现已正式可用
  • nodejs调试方法
  • React-redux的原理以及使用
  • spark本地环境的搭建到运行第一个spark程序
  • Yii源码解读-服务定位器(Service Locator)
  • 从重复到重用
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 力扣(LeetCode)357
  • 前端设计模式
  • 事件委托的小应用
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 一起参Ember.js讨论、问答社区。
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • Nginx实现动静分离
  • 大数据全解:定义、价值及挑战
  • 关于Android全面屏虚拟导航栏的适配总结
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​人工智能书单(数学基础篇)
  • #vue3 实现前端下载excel文件模板功能
  • #单片机(TB6600驱动42步进电机)
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • (03)光刻——半导体电路的绘制
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (20050108)又读《平凡的世界》
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • /*在DataTable中更新、删除数据*/
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042
  • [100天算法】-目标和(day 79)
  • [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
  • [c++] 单例模式 + cyberrt TimingWheel 单例分析
  • [codeforces] 25E Test || hash