文档章节

SpringMVC从Controller跳转到另一个Controller

嘻哈开发者
 嘻哈开发者
发布于 2015/04/25 11:54
字数 871
阅读 504
收藏 41
点赞 0
评论 1


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来,也没有问题。好了,就到这儿。

    其实也没有什么,但是知道了这个就很简单了,之前没搞懂,现在搞懂了,和大家分享。有问题的给我留言。


© 著作权归作者所有

共有 人打赏支持
嘻哈开发者
粉丝 54
博文 113
码字总数 1519
作品 0
广州
程序员
加载中

评论(1)

IM飞大
IM飞大
我最近做的一个项目里也有这样的需求,我的做法是通过Ajax来调controller,controller只做业务逻辑,不做跳转,通过返回json结果,然后在js里做页面跳转
配置文件整理

spring_mvc配置 所需jar包: commons-logging-1.1.3.jar spring-aop-4.1.6.RELEASE.jar spring-beans-4.1.6.RELEASE.jar spring-context-4.1.6.RELEASE.jar spring-context-support-4.1.6.RE......

AdophSin ⋅ 2016/12/06 ⋅ 0

SpringMVC框架总结

SpringMVC流程图 ![18EEFA$]TNPMH7OA1Y}0A(1.png](http://upload-images.jianshu.io/upload_images/3722442-53321c79db972e77.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 这这......

Miss_差不多 ⋅ 2017/12/16 ⋅ 0

SpringMVC——redirect重定向跳转传值

spring MVC框架controller间跳转,需重定向。有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示。 首先先来介绍一下不带参数的重定向: 我在后台一个c...

引鸩怼孑 ⋅ 2015/04/10 ⋅ 0

springmvc配置同时支持html和jspl两种格式的页面

通常情况下,springmvc返回一种格式的文件,通过配置前缀和后缀,相应controller层只需返回字符串,就可以跳转到相关页面。 有时候,项目中html和jsp页面同时存在,如果不做特殊配置,需要在...

今幕明 ⋅ 05/18 ⋅ 0

Spring MVC 全局异常处理(1) --HandlerExceptionResolver

上一节小博老师给大家介绍了SpringMVC对异常处理的方法之一,使用默认的SimpleMappingExceptionResolver实现类。我们知道SimpleMappingExceptionResolver类是接口HandlerExceptionResolver的...

博为峰教研组 ⋅ 2016/12/21 ⋅ 0

SpringMVC Redirect 跳转后保存Model中的数据

在做项目编码时,几乎都不可避免的要用到Redirect跳转并保存其中的参数。例如下面的需求: 在用户的列表页面删除一个用户,在删除后仍停留在列表页面,但是要显示删除成功或者相应的错误信息...

微小宝 ⋅ 2016/05/20 ⋅ 0

Spring与SpringMVC的容器关系分析

Spring与SpringMVC的容器关系分析 结论: Spring(springContext.xml)容器配置,排除所有@controller 的Bean <context:component-scan base-package="com.service,com.util,com.dao" > Spri......

LYQ1990 ⋅ 2016/05/24 ⋅ 0

SpringMvc的使用

目录结构 一、SpringMvc相关知识 11、SpringMvc的大体认识 ? 12、什么是MVC ? 13、SpringMvc内部是怎么样工作的? 二、环境以及第三方技术的说明 三、我们进入正题,下边通过一个个实例来介...

丈量大地 ⋅ 2015/11/26 ⋅ 4

WebMvcConfigurerAdapter的用法

以前写spring MVC的时候,要添加一个新页面访问总是要新增一个Controller或者在已有的一个Controller中新增一个方法,然后再跳转到设置的页面上去。考虑到大部分应用场景中View和后台都会有数...

mifans ⋅ 2016/10/25 ⋅ 0

SpringMVC常用基础知识

常用注解元素 @Controller 标注在Bean的类定义处 @RequestMapping 真正让Bean具备 Spring MVC Controller 功能的是 @RequestMapping 这个注解 @RequestMapping 可以标注在类定义处,将 Cont...

ForingY ⋅ 2015/11/25 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

懒惰根本就不存在

简评:芝加哥大学心理学教授,懒惰根本就不存在。(本文表面讲行为心理学实则讲教育) 金句:以好奇而不是判断来回应一个人的无效行为,是非常有帮助的。 本文「我」代表原作者 E Price。 自...

极光推送 ⋅ 19分钟前 ⋅ 0

Excel提取单元格中最后一个“.”后面的数据

java.lang.String ----- String =TRIM((MID(SUBSTITUTE(B2,".",REPT(" ",99)),(LEN(B2)-LEN(SUBSTITUTE(B2,".","")))*99,99)))...

klog ⋅ 21分钟前 ⋅ 0

mac远程桌面

下载安装remote-desktop-mac Mac beta 客户端 mac通过远程桌面访问windows服务器。

亚林瓜子 ⋅ 25分钟前 ⋅ 0

firrtl

动手---sbt(2)之后,再回头看 chisel第一个实验,根据 https://github.com/freechipsproject/firrtl 发现firrtl没有执行sbt assembly命令,重新执行这个命令,结果成功。如下图: joe@joe-As...

whoisliang ⋅ 29分钟前 ⋅ 0

NIO

一、通道(Channel):用于源节点与目标节点的连接。在 Java NIO 中负责缓冲区中数据的传输。Channel 本身不存储数据,因此需要配合缓冲区进行传输。 二、通道的主要实现类 java.nio.channel...

stars永恒 ⋅ 30分钟前 ⋅ 0

Android悬浮窗的实现

0. 前言   现在很多应用都使用到悬浮窗,例如微信在视频的时候,点击Home键,视频小窗口仍然会在屏幕上显示。这个功能在很多情况下都非常有用。那么今天我们就来实现一下Android悬浮窗,以...

猴亮屏 ⋅ 30分钟前 ⋅ 0

日志采集中的关键技术分析

概述 日志从最初面向人类演变到现在的面向机器发生了巨大的变化。最初的日志主要的消费者是软件工程师,他们通过读取日志来排查问题,如今,大量机器日夜处理日志数据以生成可读性的报告以此...

tqyin ⋅ 31分钟前 ⋅ 0

使用Navicat将数据导出为text文本 然后再导入

将数据导出为text文本效率很高 1. 准备工作 1.1 准备表结构 1.2 目标库 执行生成表结构sql 2.将表数据导出为text文本 生成的text文本 3. 目标库 导入text 4.效果...

Lucky_Me ⋅ 37分钟前 ⋅ 0

IntelliJ IDEA 乱码解决方案 (项目代码、控制台等)

文章介绍了idea下,项目乱码、控制台乱码及运行tomcat控制台乱码的解决方案,文章链接:https://www.cnblogs.com/vhua/p/idea_1.html

Funcy1122 ⋅ 40分钟前 ⋅ 0

IDEA使用sonarLint

一、IDEA如何安装SonarLint插件 1.打开 Idea 2.点击【File】 3.点击【Settings】 4.点击【Plugins】 5.在搜索栏中输入“sonarlint”关键字 6.点击【Install】进行安装 7.重启Idea 二、IDEA如...

开源中国成都区源花 ⋅ 45分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部