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框架中,请求转发和重定向是两种常见的处理HTTP请求的方式,它们在处理用户请求和导航页面之间有明显的差异。理解这两种方法的工作原理和使用场景对于开发高效的Web应用程序至关重要。 请求转发...
### Spring MVC 教程知识点详解 #### Spring Web MVC 框架简介 Spring Web MVC 是 Spring Framework 的一个重要组成部分,主要用于构建基于 Java 的 Web 应用程序。它提供了一个灵活且强大的 MVC 实现,使得开发者...
总的来说,Spring 3.0 MVC的简单跳转实例展示了如何使用Controller处理请求,通过视图解析器解析返回的视图名,实现页面间的重定向或转发。这个实例对于初学者理解和实践Spring MVC的Web开发非常有帮助。
#### 十四、Spring MVC 转发与重定向 **转发** 是指服务器内部的页面跳转,不会改变浏览器地址栏中的 URL;而 **重定向** 会重新加载一个新的请求,浏览器地址栏中的 URL 会发生变化。 #### 十五、Spring MVC 处理...
Spring MVC 是一款强大的Java Web开发框架,用于构建高效、可维护的Web应用程序。在这个简单的Spring MVC登录案例中,我们主要关注的是如何利用注解(Annotation)来实现用户登录功能。注解是Spring MVC中的一种元...
在 Spring MVC 中,数据跳转主要指的是控制器(Controller)处理完请求后,将数据转发到视图(View)进行展示的过程。这里的“跳转”实际上是指请求处理后的视图重定向或转发。 #### 转发与重定向 - **转发(forward)**...
Spring MVC 支持两种方式来跳转页面: - **转发**:在控制器方法中返回逻辑视图名。 - **重定向**:在控制器方法中返回“redirect:/url”。 #### 十三、处理Ajax请求 Spring MVC 提供了多种方式来处理Ajax请求,...
Spring MVC支持RequestDispatcher的forward()和sendRedirect()方法,分别用于内部请求转发和客户端重定向。 十、处理AJAX请求: Spring MVC可以无缝处理AJAX请求,通过配置和注解来定义JSON或XML的响应格式。 十一...
Spring MVC 是一个强大的Java web开发框架,用于构建可维护、可扩展且高度模块化的Web应用程序。在处理复杂的表单提交时,Spring MVC 提供了多种解决方案。本文将深入探讨Spring MVC3在处理复杂表单场景下的最佳实践...
视图链允许一系列视图处理逻辑,而视图重定向则可以实现URL的跳转。 8. **内容协商**: 内容协商是指根据客户端的能力和偏好返回不同的响应内容。`ContentNegotiatingViewResolver`通过多种策略确定最合适的视图。...
5. **错误处理和页面跳转**:配置Spring Security的访问拒绝处理和未授权页面,当用户尝试访问无权访问的资源时,系统应返回相应的错误信息或重定向到登录页面。 6. **测试和调试**:编写测试用例,确保权限控制的...
Spring MVC 结果跳转方法详解 Spring MVC 结果跳转方法是指在 Spring MVC 框架中,如何将请求结果跳转到指定的页面或执行特定的操作。本文将详细介绍 Spring MVC 结果跳转方法的实现方式。 一、使用 ModelAndView ...
在开发Web应用时,Spring MVC和MyBatis是两个非常重要的框架,它们分别负责控制层和数据访问层的处理。本篇文章将详细讲解如何利用这两个框架实现注册和登录功能。 首先,我们需要创建一个新的项目,并引入相应的...
接着,Spring MVC的核心组件包括控制器(Controller)、模型(Model)、视图(View)和模型-视图-适配器(ModelAndView)。控制器负责处理请求,调用业务逻辑,然后将结果填充到ModelAndView对象中。视图则负责渲染...
### Spring MVC 控制网站登录用户失效后跳转登录页面 #### 概述 在Web应用开发中,确保用户的会话安全至关重要。对于基于Spring MVC框架的应用程序而言,一个常见的需求是当用户会话失效(例如:用户长时间未操作...
1. **控制器(Controller)**:在Spring MVC中,控制器通常是实现了`Controller`接口或者标注了`@Controller`注解的Java类。在这个实例中,可能会有一个处理登录请求的方法,例如`login()`,它接收用户的登录信息,...
Spring MVC通过`@Controller`和`@RequestMapping`注解实现了请求的路由和处理,`ModelAndView`和`RedirectView`用于控制视图的跳转。模拟Spring MVC跳转的过程可以帮助我们更好地理解框架内部的工作机制,这对于开发...
总结,Spring MVC处理器方法的返回值多种多样,可以根据需求选择合适的返回类型来控制响应内容、视图跳转或数据绑定。理解并熟练运用这些返回类型是构建高效、灵活的Spring MVC应用程序的关键。