SpringMVC Controller之间的重定向和转发
- 同一个controller之间重定向和转发
①redirect 在Controller的映射方法中,其返回值改为:return "redirect:XXX";
②forward 这里不贴具体代码,因为和上面的 重定向相同。 - 不同一个controller之间重定向和转发
①redirect 不同的controller之间进行重定向的时候最主要的一点就是,要指定具体controller的命名空间即RequestMapping(value="redirectval"),还要指定为根目录,如果不是根目录则同样会在同一个controller中进行查找,这样的话,找不到会报错,或错误重定向.
在Controller的映射方法中,其返不回值改为:return "redirect:/XXX";
注意这里要加“/”来从根目录开始。
②forward 这个也是一样只要命名空间和根目录正确就没问题; - 传递参数
①手动拼接,在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之间的重定向和转发的更多相关文章
- SpringMVC 配置 & 初识 & 注解 &重定向与转发
初识 在web.xml 中注册DispatcherServlet <servlet> <servlet-name>springmvc</servlet-name> ...
- SpringMVC 返回 html 视图页面,SpringMVC与Servlet,Servlet重定向与转发
1. SpringMVC与Servlet的关系 SpringMVC框架是建立在Servlet之上的,提供各种功能,各种封装,各种方便的同时,它一点儿也没有限制Servlet,我们完全可以在Spring ...
- SpringMVC系列(九)自定义视图、重定向、转发
一.自定义视图 1. 自定义一个视图HelloView.java,使用@Component注解交给Spring IOC容器处理 package com.study.springmvc.views; i ...
- SpringMVC(一) 简单代码编写,注解,重定向与转发
SpringMVC是什么 SpringMVC是目前最好的实现MVC设计模式的框架,是Spring框架的一个分支产品,以SpringIOC容器为基础,并利用容器的特性来简化它的配置.SpringMVC相 ...
- springMVC controller间跳转 重定向 传递参数的方法
springMVC controller间跳转 重定向 传递参数的方法 spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参 ...
- springMVC带参数请求重定向
SpirngMVC返回逻辑视图名 可以分下面几种情况: 1. servlet进行请求转发,返回到jsp页面,如 return "index.jsp" ; 2. servlet 返 ...
- 1. 处理静态资源 2. controller如何接受请求得参数 3. 如何把controller得数据保存到view. 4. 在controller如何完成重定向到指定路径 5. controller返回json数据
1. 1. 处理静态资源2. controller如何接受请求得参数3. 如何把controller得数据保存到view.4. 在controller如何完成重定向到指定路径5. controller ...
- [转]SpringMVC Controller介绍及常用注解
一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Mo ...
- SpringMVC Controller介绍
SpringMVC Controller 介绍 一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理 ...
随机推荐
- Visual Studio 中使用万能头文件 #include <bits/stdc++.h>
最近开始使用VS,之前用的DEV C++软件可直接使用 #include <bits/stdc++.h> ,但VS中并没有,为了使用方便,可直接在VS中添加此头文件,方法如下: 1.在安 ...
- Spring boot自定义启动字符画(banner)
spring boot项目启动时会打印spring boot的ANSI字符画,可以进行自定义. 如何自定义 实现方式非常简单,我们只需要在Spring Boot工程的/src/main/resourc ...
- ArcGIS 10开发迁移策略(待续)
1.更改 ESRI.ArcGIS.ADF 程序集 ArcGIS 10 中, ADF 程序集中的功能被分散到不同的程序集中,如果将 ArcGIS 9.3 下 开发的自定义组件迁移到 ArcGIS 10 ...
- python 进阶读书笔记1 -- 理解python一切皆对象
理解python一切皆对象: 1.所有的类都是由type创建的 2.所有的类的基类都是object 3.type是类,也是实例,type的基类是object,type对象是由type创建的 4.obj ...
- 安全测试robots
http://stock.pingan.com/robots.txt
- windows下安装Memcached服务器,PHP的memcache扩展
Memcahed 介绍:Memcahed是一个内存缓存服务器 (类似MySQL服务器) 作用:提高web的响应速度,例如缓存数据库查询结果 原理:把数据存到内存中 (提高速度的原因) 教程相关 系统: ...
- Python scrapy爬虫学习笔记01
1.scrapy 新建项目 scrapy startproject 项目名称 2.spiders编写(以爬取163北京新闻为例) 此例中用到了scrapy的Itemloader机制,itemloade ...
- L3-021 神坛 (30 分) 计算几何
在古老的迈瑞城,巍然屹立着 n 块神石.长老们商议,选取 3 块神石围成一个神坛.因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好.特殊地,如果有两块神石坐标相同,或者三块神石共线,神坛的面 ...
- 046 SparlSQL中的函数
一:SparkSQL中的函数 1.说明 2.展示所有的函数 qlContext.sql("show functions").show(300) 3.functions类 所有内置支 ...
- Python 扫盲
yield使用浅析 菜鸟教程:http://www.runoob.com/w3cnote/python-yield-used-analysis.html #!/usr/bin/python # -*- ...