1. 同一个controller之间重定向和转发

    ①redirect 在Controller的映射方法中,其返回值改为:return "redirect:XXX";

    ②forward 这里不贴具体代码,因为和上面的 重定向相同。
  2. 不同一个controller之间重定向和转发

    ①redirect 不同的controller之间进行重定向的时候最主要的一点就是,要指定具体controller的命名空间即RequestMapping(value="redirectval"),还要指定为根目录,如果不是根目录则同样会在同一个controller中进行查找,这样的话,找不到会报错,或错误重定向.

    在Controller的映射方法中,其返不回值改为:return "redirect:/XXX";

    注意这里要加“/”来从根目录开始。

    ②forward 这个也是一样只要命名空间和根目录正确就没问题;
  3. 传递参数

    ①手动拼接,在URL后面使用?id=XXX&name=XXX,这样就可以在重定向的那个方法中进行数据的获取,获取方式和从前台接受收据一样。
@RequestMapping(value="/update.do")
public Stringupdate(User user){
// 这里使用了转发,在书写格式上转发和重定向一样
return"forward:xxx?code=200&status=ok!";
}

②使用RedirectAttributes 这个对象。通过这个对象就可以传递数据,这个类的对象有两个方法可以传递参数:

(1)、使用 addAttribute(key,value) 这个方法进行参数的传递,这种方式的传递和第一种一样会在请求路径中显示。

@RequestMapping(value="/update.do")
public Stringupdate(User user,RedirectAttributes attr){
attr.addAttribute("code",200);
attr.addAttribute("status","success");
return"redirect:xxx";
}

(2)、使用addFlashAttribute(key,value) 这个方法进行传递,而这种方式就是将这个值放在了session中,所以参数不会在url的后面,如果刷新页面则值就没了!接收方式还是与方法一一样。

@RequestMapping(value="/update.do")
public Stringupdate(User user,RedirectAttributes attr){
attr.addAttribute("code",200);
attr.addAttribute("status","success");
return"redirect:xxx";
}

③使用addFlashAttribute

@RequestMapping(value="/update.do")
public Stringupdate(User user,RedirectAttributes arr){
arr.addFlashAttribute("code","200");
arr.addFlashAttribute("status","ok!");
Map<String,Object>map= new HashMap<String,Object>();
map.put("id",user.getId());
map.put("name",user.getName());
map.put("sex",user.getSex());
userService.updateUser(map);
return"redirect: select.do";
}

该方法参数接收时不能直接接收,需要使用Map

@RequestMapping(value="/select.do")
public Stringselect(String code,String status,Map<String,Object>map,Map<String,Object> maps){
Integerid=1;
//从执行结果我们看到这里code为null
String codes=code;
//从执行结果我们看到这里status为null
String success=status;
System.out.println(codes);
System.out.println(success);
//我们在方法中添加了一个参数maps这里就能获得参数
Stringmcode=(String)maps.get("code");
Stringmstatus=(String)maps.get("status");
//从输出结果我们能看到,这里有值,使用model也可以获得值,就是不知道怎么获取所以使用了map
System.out.println(mcode);
System.out.println(mstatus);
System.out.println(maps.toString());
List<Map<String,Object>>list= new ArrayList<Map<String,Object>>();
list=userService.selectUser(id);
map.put("mylist","you value");
return"index";
}

注意:使用:forward 转发这样获取不到值,这里forwar获取不到值和他的存储方式相关,因为他就是存在session中一转发就没值了,所以就为null。

以上参考了这篇博客,详细请看:https://blog.csdn.net/QH_JAVA/article/details/44850687

SpringMVC Controller之间的重定向和转发的更多相关文章

  1. SpringMVC 配置 & 初识 & 注解 &重定向与转发

    初识 在web.xml 中注册DispatcherServlet <servlet> <servlet-name>springmvc</servlet-name> ...

  2. SpringMVC 返回 html 视图页面,SpringMVC与Servlet,Servlet重定向与转发

    1. SpringMVC与Servlet的关系 SpringMVC框架是建立在Servlet之上的,提供各种功能,各种封装,各种方便的同时,它一点儿也没有限制Servlet,我们完全可以在Spring ...

  3. SpringMVC系列(九)自定义视图、重定向、转发

    一.自定义视图 1. 自定义一个视图HelloView.java,使用@Component注解交给Spring IOC容器处理 package com.study.springmvc.views; i ...

  4. SpringMVC(一) 简单代码编写,注解,重定向与转发

    SpringMVC是什么 SpringMVC是目前最好的实现MVC设计模式的框架,是Spring框架的一个分支产品,以SpringIOC容器为基础,并利用容器的特性来简化它的配置.SpringMVC相 ...

  5. springMVC controller间跳转 重定向 传递参数的方法

    springMVC controller间跳转 重定向 传递参数的方法 spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参 ...

  6. springMVC带参数请求重定向

    SpirngMVC返回逻辑视图名 可以分下面几种情况: 1. servlet进行请求转发,返回到jsp页面,如  return "index.jsp" ; 2. servlet 返 ...

  7. 1. 处理静态资源 2. controller如何接受请求得参数 3. 如何把controller得数据保存到view. 4. 在controller如何完成重定向到指定路径 5. controller返回json数据

    1. 1. 处理静态资源2. controller如何接受请求得参数3. 如何把controller得数据保存到view.4. 在controller如何完成重定向到指定路径5. controller ...

  8. [转]SpringMVC Controller介绍及常用注解

    一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Mo ...

  9. SpringMVC Controller介绍

    SpringMVC Controller 介绍 一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理 ...

随机推荐

  1. 从源码开始运行Bitcoin Core

    安装Ubuntu 环境:虚拟机 网络连接:桥接 系统版本:16.04 源:ali 安装编译环境(依赖库) sudo apt-get update sudo apt-get install build- ...

  2. python--pip出错

    问题: 1.使用pip install时,出现Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None) ...

  3. AtCoder Regular Contest 099 (ARC099) E - Independence 二分图

    原文链接https://www.cnblogs.com/zhouzhendong/p/9224878.html 题目传送门 - ARC099 E - Independence 题意 给定一个有 $n$ ...

  4. 数据处理:2.异常值处理 & 数据归一化 & 数据连续属性离散化

    1.异常值分析 异常值是指样本中的个别值,其数值明显偏离其余的观测值.异常值也称离群点,异常值的分析也称为离群点的分析. 异常值分析 → 3σ原则 / 箱型图分析异常值处理方法 → 删除 / 修正填补 ...

  5. 关于mybatis缓存配置讲解

    一级缓存: 一级缓存是默认的. 测试:在WEB页面同一个查询执行两次从日志里面看同样的sql查询执行两次. 2次sql查询,看似我们使用了同一个sqlSession,但是实际上因为我们的dao继承了S ...

  6. react 性能优化

    React 最基本的优化方式是使用PureRenderMixin,安装工具 npm i react-addons-pure-render-mixin --save,然后在组件中引用并使用 import ...

  7. TF之AE:AE实现TF自带数据集AE的encoder之后decoder之前的非监督学习分类—Jason niu

    import tensorflow as tf import numpy as np import matplotlib.pyplot as plt #Import MNIST data from t ...

  8. centos6.5 nginx安装pcre错误

    由于没有一步步记录,所以没有具体的代码和命令,就写一下过程,具体脑补一下吧~ wget下载  nginx 1.12.0后 tar解压 ./configure的时候,pcre出错 1. 按照网上的说法, ...

  9. log4j平稳升级到log4j2

    一.前言 公司中的项目虽然已经用了很多的新技术了,但是日志的底层框架还是log4j,个人还是不喜欢用这个的.最近项目再生产环境上由于log4j引起了一场血案,于是决定升级到log4j2. 二.现象 虽 ...

  10. webstorm离线装载Material Theme UI

    首先说说需求,由于直接用webstorm听说VS挺火的,但是初恋的感觉是其他任何编辑器无法替代的 瞎说了一些话,新公司内网开发,用的是vscode,但是我还是喜欢用webstorm,连不上网,所以不能 ...