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 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一部分,专门用于构建 MVC(Model-View-Controller)架构的 Web 应用程序。在这个名为 "springmvc_controller_01" 的资源包中,我们很可能会...
例如,假设我们有一个名为`UserController`的Controller类,我们可以定义多个方法来处理用户相关的请求: ```java import org.springframework.stereotype.Controller; import org.springframework.web.bind....
在SpringMVC实现的用户登录程序中,通常会有一个Controller来处理登录请求。在这个例子中,我们没有使用数据库验证用户名和密码,而是使用了默认的用户名“admin”和密码“admin”。当用户输入正确的用户名和密码时...
SpringMVC是一个基于Java的Web应用框架,提供了多种方式来实现跳转。下面将详细介绍SpringMVC实现简单跳转方法的几种方式。 1. 传统方式跳转_请求转发 在SpringMVC中,我们可以使用传统的请求转发方式来实现跳转。...
当Spring MVC接收到一个HTTP请求时,它会查找标记为`@Controller`的类,并根据请求的URL和方法来决定哪个类和方法应该处理这个请求。 `@RequestMapping`注解: `@RequestMapping`注解用于映射HTTP请求到特定的方法...
Spring MVC是Spring Framework的一部分,它是一个基于Java的MVC(Model-View-Controller)设计模式实现的轻量级Web框架。Spring MVC通过将请求处理逻辑与业务逻辑分离,提高了系统的灵活性和可扩展性。此外,Spring ...
Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一部分,专为构建可扩展且易于维护的 MVC(Model-View-Controller)架构的应用程序而设计。在本示例中,我们将深入探讨如何创建并运行一个...
RedirectAttributes则允许我们在处理完一个步骤后重定向到另一个页面,并传递需要的数据。 1. SessionAttributes的使用: 在Controller方法上使用`@SessionAttributes`注解可以指定哪些模型属性需要在会话中持久化...
首先,Controller接口在SpringMVC中并不是一个实际的接口,而是通过使用@Controller注解来标识一个类作为控制器。这个注解告诉Spring框架,这个类中的方法将负责处理来自客户端的请求。例如: ```java @Controller ...
在Controller方法中,你可以创建一个新的`ModelAndView`实例,然后通过`addObject()`方法将数据添加到Model中,例如: ```java @RequestMapping(value="/mad/showData_1.do") public ModelAndView showData_1(){ ...
浅谈Springmvc中的页面跳转问题是指在SpringMvc框架中,Controller处理完数据后如何将用户重定向到另一个页面或功能处理方法的过程。这个问题是SpringMvc中一个非常重要的知识点,需要开发者对其有深入的了解。 ...
"的同时,页面上还有一个链接可以跳转到其他页面或执行其他操作。这可以通过在JSP页面上添加`<a>`标签来实现,链接的目标URL可以通过SpringMVC的URL映射来定义。 5. **环境设置**:由于是在Eclipse环境下开发,...
在本项目中,我们将深入探讨如何使用SpringMVC框架构建一个功能完备的Web应用程序。SpringMVC是Spring框架的一部分,专为处理HTTP请求和响应而设计,它提供了一个灵活的模型-视图-控制器(MVC)架构,使得开发者可以...
模拟的springMVC跳转功能,导入项目就能用,实现了@Controller,@RequestMapping
Spring MVC 是一个强大的Java Web开发框架,用于构建可维护、高性能和灵活的Web应用程序。它基于Spring框架,提供了模型-视图-控制器(MVC)架构模式,简化了Web应用的开发过程。在这个"简单的springmvc包括拦截、...
netty_springMvc 基于netty ,http默认跳转controller层,webSocket 走专门通道 工程目标是支持eureka调用,使微服务通过http协议发送websocket给浏览器
SpringMVC是Spring框架的一个模块,主要用于构建Web应用程序。它遵循Model-View-Controller设计模式,帮助开发者解耦业务逻辑、用户界面和数据访问层。SpringMVC通过DispatcherServlet接收HTTP请求,然后通过...
SpringMVC是一个广泛使用的Java Web开发框架,它遵循Model-View-Controller(MVC)设计模式,简化了构建可维护和高性能的企业级应用程序的复杂性。以下是SpringMVC框架的一些核心概念和流程的详细解释: 一、Spring...
- 在Eclipse中创建一个新的Dynamic Web Project,然后添加SpringMVC库(如spring-webmvc.jar)到项目的类路径中。 - 配置`web.xml`文件,声明DispatcherServlet,它是SpringMVC的核心组件,负责处理HTTP请求并分发...
SpringMVC是Spring框架的一部分,它是一个用于构建Web应用程序的轻量级、模型-视图-控制器(MVC)架构。SpringMVC通过将业务逻辑、控制逻辑和显示逻辑分离,提高了代码的可维护性和可测试性。在本项目中,我们将探讨...