使用springmvc的controller的时候,碰到controller内方法的跳转的问题,记录下问题以及自己测试的过程。

场景:

业务执行更新操作之后返回列表页面,列表页面需默认展示查询的列表数据,涉及到两个controller的跳转。

问题

是使用forward还是redirect跳转

解决问题
其实使用forward或者redirect都能达到目的,但是有些问题在下面说明。
1、使用forward
a、例如:return "forward:/rest/queryData",实际的效果是在浏览器中的url地址还是原地址,存在重复提交的问题,所以forward就不推荐使用了。
b、如果是需要携带参数,直接拼接传递的参数,例如:return "forward:/rest/queryShopAlisName?phone=xxxxxxx"; 在跳转的controller中使用参数【@RequestParam("phone") String phone】获得传递的参数值,显然这样的方式也是不推荐的。

2、使用redirect
在controller方法的参数中使用RedirectAttributes来
a、不带参数:
直接使用 return "redirect:/rest/queryShopAlisName";浏览器的地址变成跳转的新地址,避免了重复提交的问题。
b、带参数的时候:


第一种选择:直接在url后面拼接参数,使用@RequestParam来取值,不推荐使用


第二种选择:在controller方法的参数中使用RedirectAttributes来传递参数

    @RequestMapping(value = "/checkMember")
public String checkMember(HttpServletRequest request, RedirectAttributes attr) {
Member member = null;
try {
String phone = request.getParameter("phone");
***attr.addAttribute("phone", "xxxx");***
member = cashierService.checkIsMember(phone);
} catch (Exception e) {
logger.error("query member is error happen : " + e);
}
return "redirect:/rest/queryShopAlisName";
}

使用attr.addAttribute来设置值,然后在跳转的controller中同样使用@RequestParam来取值,在浏览器中同样是拼接参数的形式,例如:http://localhost:8080/xxxx/xx...,同样不建议这么使用。


第三种选择:使用RedirectAttributes的addFlashAttribute的方法来设置值,原理是在跳转前将值放入session中,跳转之后就将值清除掉。浏览器的地址不显示参数的值,推荐使用这种方法来传值。

attr.addFlashAttribute("phone", "xxxxxxx");

在跳转的controller的参数中增加@ModelAttribute来取得参数值

@RequestMapping(value = "/queryShopAlisName")
public String queryShopAlisName(@ModelAttribute("phone")String phone) {
......
return "";
}

第一次写博客来记录,还请看官多多包涵咯。就这样结束吧

            </div>

springmvc中controller内方法跳转forward?redirect?的更多相关文章

  1. 详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析]

    目录 前言 现象 源码分析 HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口介绍 HandlerMethodArgumen ...

  2. 详解SpringMVC中Controller的方法中参数的工作原理——基于maven

    转自:http://www.tuicool.com/articles/F7byQn 前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:ht ...

  3. 【MVC - 参数原理】详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析]

    前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/spring ...

  4. 详解SpringMVC中Controller的方法中参数的工作原理

    Spring MVC中Controller的处理方法的参数可以是Integer,String,自定义对象,ServletRequest,ServletResponse,ModelAndView等等,非 ...

  5. springMVC中controller层方法中使用private和public问题

    楼主一直习惯使用public,偶尔手误也可能使用private,但是发觉也没啥区别,都能调用service层,注入bean. 后来做一个新项目时,发觉自己以前的写的部分功能报错,当时有点懵逼,,找了半 ...

  6. SpringMVC中Controller的方法返回值

    1. 返回ModelAndView对象 controller方法中定义ModelAndView对象并返回,对象中可添加model数据.指定view. 实例 @RequestMapping(" ...

  7. SpringMVC中Controller

    详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析] 目录 前言 现象 源码分析 HandlerMethodArgumentResolver与HandlerMethodR ...

  8. springMVC中controller的几种返回类型

    ==网文1,还不错,感觉比较老旧springMVC中controller的几种返回类型 - CSDN博客http://blog.csdn.net/qq_16071145/article/details ...

  9. springmvc 中controller与jsp传值

    参考:springmvc 中controller与jsp传值 springMVC:将controller中数据传递到jsp页面 jsp中,死活拿不到controller中的变量. 花了半天,网上列出各 ...

随机推荐

  1. MFC只允许程序单开

    很多玩游戏的人都知道一般游戏客户端程序是不允许双开的,就是说在同一游戏在启动的时候,是无法打开多个窗口.很多其他软件如酷狗播放器等也是这样.如果把打开的窗口最小化,这时重新启动程序,最小化的窗口会被显 ...

  2. C++ 复制到粘贴板

    网上好多教程讲如何复制到剪切板,但是有可能复制的是乱码,为了方便,将CString类型的复制到剪切板 CString source;if (OpenClipboard()){//防止非ASCII语言复 ...

  3. JavaScript学习总结(3)——JavaScript函数(function)

    一.函数基本概念 为完成某一功能的程序指令(语句)的集合,称为函数. 二.JavaScript函数的分类 1.自定义函数(我们自己编写的函数),如:function funName(){} 2.系统函 ...

  4. input表单验证(全面)

    1.英文字母 1 <script type="text/javascript"> 2 //验证只能是字母 3 function checkZm(zm){ 4 var z ...

  5. 前端切图|点击按钮div变色

    <!DOCTYPE html> <html> <head> <title>点击按钮div变色.html</title> <meta c ...

  6. VMware Windows安装详细过程(详细图解)

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 一.概论 简介:虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算 ...

  7. jQuery笔记---选择器(三)

    1.1查找隐藏的tr元素的个数 $(“table tr:hidden”).size() 查找所有可见的tr元素的个数 $(“table tr:not(:hidden)”).size()   一般是不使 ...

  8. RISC-V工具链环境(基于Debian/Linux操作系统)

    RISC-V工具链环境(基于Debian/Linux操作系统) 提要 Debian/Linux虚拟机导入 启动虚拟机 SiFive/Nuclei SDK运行指南 Debian/Linux虚拟机存储位置 ...

  9. WebService--CXF与Spring的整合(jaxws:endpoint形式配置)以及客户端调用(spring配置文件形式,不需要生成客户端代码)

    一.CXF与Spring整合(jaxws:endpoint形式配置) 工具要点:idea.maven 1.新建一个maven项目 <?xml version="1.0" en ...

  10. GB2312/ANSI编码转中文字符

    struct GB2312{    unsigned short gb2312code;    CString     ChineseCode;}GB2312ToChinese[] = {{0xA1A ...