1. 需求背景
需求:spring MVC框架controller间跳转,需重定向。有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示。
本来以为挺简单的一件事情,并且个人认为比较常用的一种方式,一百度全都有了,这些根本不是问题,但是一百度居然出乎我的意料,一堆都不是我想要的结果。无奈啊,自己写一篇比较全都供以后大家一百度吧,哈哈哈。。。是这些写的不是很全都人们给了我写这篇博客的动力。
2. 解决办法
需求有了肯定是解决办法了,一一解决,说明下spring的跳转方式很多很多,我这里只是说一些自我认为好用的,常用的,spring分装的一些类和方法。
(1)我在后台一个controller跳转到另一个controller,为什么有这种需求呢,是这样的。我有一个列表页面,然后我会进行新增操作,新增在后台完成之后我要跳转到列表页面,不需要传递参数,列表页面默认查询所有的。
方式一:使用ModelAndView
return new ModelAndView("redirect:/toList");这样可以重定向到toList这个方法
方式二:返回String
return "redirect:/ toList ";
其它方式:其它方式还有很多,这里不再做介绍了,比如说response等等。这是不带参数的重定向。
(2)第二种情况,列表页面有查询条件,跳转后我的查询条件不能丢掉,这样就需要带参数的了,带参数可以拼接url
方式一:自己手动拼接url
new ModelAndView("redirect:/toList?param1="+value1+"¶m2="+value2);
这样有个弊端,就是传中文可能会有乱码问题。
方式二:用RedirectAttributes,这个是发现的一个比较好用的一个类
这里用它的addAttribute方法,这个实际上重定向过去以后你看url,是它自动给你拼了你的url。
使用方法:
attr.addAttribute("param", value);
return "redirect:/namespace/toController";
这样在toController这个方法中就可以通过获得参数的方式获得这个参数,再传递到页面。过去的url还是和方式一一样的。
(3)带参数不拼接url页面也能拿到值(重点是这个)
一般我估计重定向到都想用这种方式:
@RequestMapping("/save")
public String save(@ModelAttribute("form") Bean form,RedirectAttributes attr)throws Exception {
String code = service.save(form);if(code.equals("000")){attr.addFlashAttribute("name", form.getName());attr.addFlashAttribute("success", "添加成功!");return "redirect:/index";}else{attr.addAttribute("projectName", form.getProjectName());attr.addAttribute("enviroment", form.getEnviroment());attr.addFlashAttribute("msg", "添加出错!错误码为:"+rsp.getCode().getCode()+",错误为:"+rsp.getCode().getName());return "redirect:/maintenance/toAddConfigCenter";}}
@RequestMapping("/index")
public String save(@ModelAttribute("form") Bean form,RedirectAttributes attr)throws Exception {return "redirect:/main/list";}页面取值不用我说了吧,直接用el表达式就能获得到,这里的原理是放到session中,session在跳到页面后马上移除对象。所以你刷新一下后这个值就会丢掉。
3. 总结
最底层还是两种跳转,只是spring又进行了封装而已,所以说跳转的方式其实有很多很多种,你自己也可以封一个,也可以用最原始的response来,也没有问题。好了,就到这儿。
其实也没有什么,但是知道了这个就很简单了,之前没搞懂,现在搞懂了,和大家分享。有问题的给我留言。
相关推荐
### Spring MVC 教程知识点详解 #### Spring Web MVC 框架简介 Spring Web MVC 是 Spring Framework 的一个重要组成部分,主要用于构建基于 Java 的 Web 应用程序。它提供了一个灵活且强大的 MVC 实现,使得开发者...
Spring MVC 是一款基于Java的轻量级Web应用框架,它是Spring框架的重要组成部分,主要用于构建Web应用程序的后端控制器。在本实例中,我们有一个名为"spring-MVC.zip"的压缩包,里面包含了一个关于Spring MVC的开发...
在Spring MVC框架中,网页间的跳转是通过控制器(Controller)处理请求并返回视图(View)来实现的。在给定的场景中,我们有一个简单的应用,用户在`index.jsp`页面上点击一个链接,目标是跳转到`success.jsp`页面。...
通过这种方式,Spring MVC 能够更好地组织和管理 Bean 的生命周期以及依赖关系。 #### 六、Spring MVC 配置文件详解 Spring MVC 的配置文件通常包括以下内容: - **Bean 定义**:定义控制器、视图解析器、消息转换...
基于IntelliJ IDEA,spring mvc,maven,tomcat,实现了web下,用三种方式来访问某个页面,以及页面之间的跳转
Spring MVC是Java EE开发中广泛使用的一个Web框架,它是Spring框架的一部分,主要负责Model-View-Controller(MVC)架构模式的实现。本知识点将围绕Spring MVC的源码深度剖析展开,详细介绍Spring MVC的源码结构、...
Spring MVC controller 间跳转重定向传参 在 Spring MVC 框架中,controller 间跳转重定向传参...Spring MVC 框架提供了多种方式来实现 controller 间跳转重定向传参,我们可以根据实际情况选择合适的方式来实现需求。
Spring MVC是Spring框架的一个核心模块,用于构建Web应用程序。它提供了模型-视图-...但如果你正在使用传统的构建方式或者需要离线开发,那么这个压缩包就显得非常有用,因为它包含了所有必要的Spring MVC运行时库。
总的来说,这个简单的Spring MVC登录案例展示了如何使用注解驱动的方式来处理Web请求,以及如何实现基本的用户登录逻辑。通过这种方式,我们可以快速地构建出模块化、可扩展的应用程序。然而,实际的生产环境中,还...
在本项目中,我们探讨的是一个基于Spring MVC框架构建的JavaWeb应用。Spring MVC是Spring框架的一个模块,专为创建Web应用程序提供模型-视图-控制器(MVC)架构支持。这个项目涉及到的功能包括分页显示、单个或批量...
在Java Web开发中,Spring MVC框架是用于构建高效、模块化的Web应用程序的首选工具。而JUnit作为Java领域最常用的单元测试框架,可以帮助开发者确保代码的质量和功能的正确性。本测试着重关注Spring MVC架构中的三层...
Struts、Spring MVC和Struts2是Java Web开发中三个重要的MVC框架,它们都用于构建基于模型-视图-控制器(MVC)设计模式的Web应用程序。下面将分别介绍这三个框架的工作原理,并进行对比。 **Struts1原理:** Struts...
在这个实例中,我们将深入探讨如何在Spring 3.0 MVC中实现简单的页面跳转,以及源码背后的逻辑。 1. **Spring MVC 框架简介** Spring MVC是Spring框架的一部分,它提供了一种模型-视图-控制器(MVC)架构,使得...
这将帮助你掌握如何创建RESTful API,处理表单提交,进行页面跳转,以及如何整合其他Spring组件如数据访问层(JPA、Hibernate等)。 此外,理解MVC设计模式的概念也非常重要,它将应用程序分为模型、视图和控制器三...
**Spring MVC + MyBatis + MySQL 整合详解** 在Web开发中,Spring MVC、MyBatis和MySQL是常见的技术组合,它们各自扮演着重要的角色。Spring MVC作为Spring框架的一部分,提供了一个强大的模型-视图-控制器(MVC)...
在Spring MVC中,WebFlow定义了一种声明式的方式来处理Web应用程序中的流程逻辑。相比于传统的控制器方法,WebFlow允许开发者定义一系列状态(states)和转换(transitions),每个状态对应一个视图,而转换则是状态...
Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建模型-视图-控制器(MVC)架构的应用程序提供了强大的支持。DWZ,全称为“Dynamic Web Zone”,是一个前端开发框架,专为中国的Web开发者设计,尤其适用于...
Spring MVC 是一个强大的Java web开发框架,用于构建可维护、可扩展且结构化的Web应用程序。它的核心在于将请求、业务逻辑、数据处理和视图渲染有效地分离开来,实现Model-View-Controller的设计模式。本篇文章将...
在 Spring MVC 中,可以通过以下方式支持 RESTful: - 使用 `@PathVariable` 获取 URL 中的变量。 - 使用 `@GetMapping`, `@PostMapping` 等注解来映射不同的 HTTP 方法。 ### Spring MVC 文件上传 在 Spring MVC...