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 分发的请求,它把用户请求的数据经过业务处理 ...
随机推荐
- noip2012
题解: 闲着无聊做了一遍noip2012 我觉得出题出的好奇怪啊... 为什么两道倍增两道二分答案??? 两天第一题: 第一天第一题傻逼普及组题没什么好说的了 第二天第一题你会扩欧就秒了 两天第二题: ...
- 【译】异步JavaScript的演变史:从回调到Promises再到Async/Await
我最喜欢的网站之一是BerkshireHathaway.com--它简单,有效,并且自1997年推出以来一直正常运行.更值得注意的是,在过去的20年中,这个网站很有可能从未出现过错误.为什么?因为它都 ...
- 牛客挑战赛30 小G砍树 树形dp
小G砍树 dfs两次, dp出每个点作为最后一个点的方案数. #include<bits/stdc++.h> #define LL long long #define fi first # ...
- 使用ycsb对hbase0.94.11 benchmark
Ycsb下载地址:https://github.com/brianfrankcooper/YCSB/releases 目前测试hbase0.94.11,因此下载ycsb-0.1.4.tar.gz 1. ...
- Linux Centos7安装最新anslib
一.添加最新epel源 yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 二.添加最 ...
- html5的audio实现高仿微信语音播放效果
效果图 前台大体呈现效果图如下: 点击就可以播放mp3格式的录音.点击另外一个录音,当前录音停止! 思路 关于播放动画,这个很简单,我们可以用css3的逐帧动画来实现.关于逐帧动画,我之前的文章也写过 ...
- sql 分隔字符串函数
USE [tms]GO/****** Object: UserDefinedFunction [dbo].[fn_ConvertListToTable_Sort] Script Date: 2017/ ...
- BigDecimal的引入和概述
[代码] System.out.println(0.09 + 0.01); System.out.println(0.1 - 0.32); System.out.println(1.015 * 100 ...
- kmp基础 ekmp
+]; int lenp,lens; +];//可以是char 也可以是string +]; void getnext() { nex[]=-; ,j=; ) { ||p[j]==p[k]) nex[ ...
- Jenkins的介绍
在公司看见有的部门在使用这个工具,好奇一下,今天就开始学习一番. 1.官网 https://jenkins.io/ 2.介绍 Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用 ...