2017.3.31 spring mvc教程(六)转发、重定向、ajax请求

学习的博客:http://elf8848.iteye.com/blog/875830/

我项目中所用的版本:4.2.0。博客的时间比较早,11年的,学习的是Spring3 MVC。不知道版本上有没有变化比较大的功能。

spring mvc教程(六)转发、重定向、ajax请求

1.转发和重定向

(1)转发与重定向的区别

http://blog.csdn.net/ya_smile_jy/article/details/50674537

区别一:重定向时浏览器上的网址改变,转发是浏览器上的网址不变

区别二:重定向实际上产生了两次请求,转发只有一次请求。

1 重定向:
2 发送请求 -->服务器运行-->响应请求,返回给浏览器一个新的地址与响应码-->浏览器根据响应码,判定该响应为重定向,自动发送一个新的请求给服务器,请求地址为之前返回的地址
-->服务器运行-->响应请求给浏览器 3 转发: 4 发送请求 -->服务器运行-->进行请求的重新设置,例如通过request.setAttribute(name,value)-->根据转发的地址,获取该地址的网页-->响应请求给浏览器

区别三:重定向时的网址可以是任何网址,转发的网址必须是本站点的网址。

区别四:重定向时以前的request中存放的变量全部失效,并进入一个新的request作用域。转发时以前的request中存放的变量不会失效,就像把两个页面拼到了一起。

 

 

(2)用法

addAttribute:传递参数会跟随在URL后面,即为http:/index.do?name=value

addFlashAttribute: 会把该参数值暂时保存于session,待重定向url获取该参数后从session中移除。这里的redirect必须是方法映射路径,jsp无效。你会发现redirect后的jsp页面中b只会出现一次,刷新后b再也不会出现了,这验证了上面说的,b被访问后就会从session中移除。对于重复提交可以使用此来完成

1 转发: 
return "forward:/users/uc";
2 带参数拼接url转发: attr.addAttribute("param", value); return "redirect:/namespace/toController";
3 带参数拼接url转发:
attr.addFlashAttribute("name", form.getName());  attr.addFlashAttribute("success", "添加成功!");return "redirect:/index";
6 重定向: return "redirect:/#/home";

 

示例:

 1     @RequestMapping(value="/users")  
 2     @Controller  
 3     public class UserController {  
 4       
 5         @RequestMapping(value="/queryuser",method = RequestMethod.GET)  
 6         public String queryuser(Model model) throws Exception {  
 7             return "forward:/users/uc";  
 8         }  
 9       
10         @RequestMapping(value="/uc",method = RequestMethod.GET)  
11         public String quer(Model model) throws Exception {  
13             return "redirect:/#/home";  
13 //return "redirect:/index.jsp";
14 } 15 16 @RequestMapping(value = "/save", method = RequestMethod.GET) 17 public ModelAndView saveUser(HttpServletRequest request, HttpServletResponse response) throws Exception { 18 ModelAndView mv = new ModelAndView("forward:/users/uc");19 //ModelAndView mv = new ModelAndView("redirect:/#/home"); 20 return mv; 21 } 22 }

 

2.ajax请求

(1)<mvc:annotation-driven />

前面提过,<mvc:annotation-driven /> 里面包含了对JSON的支持。

 

(2)使用@ResponseBody注解

1 @RequestMapping("/ajax")  
2 @ResponseBody  
3 public Object ajax(HttpServletRequest request){  
4     List<String> list=new ArrayList<String>();  
5     list.add("电视");  
6 
7     return list;  
8 } 

 

转载于:https://www.cnblogs.com/lyh421/p/6652861.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/269706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

squid mysql认证_Squid 3.1.7通过mysql_auth方式认证

Squid 3.1.7通过mysql_auth方式认证(FreeBSD平台)一、下载相应软件及补丁#fetch http://people.arxnet.hu/airween/mysql_auth/mysql_auth-0.8.tar.gz#tar xvzf mysql_auth-0.8.tar.gz#cd mysql_auth-0.8#patch -p1 < ../additionalselect.patchpatching file src/confparse…

Spring事务传播属性和隔离级别

Spring事务传播属性和隔离级别 一、Spring事务传播属性&#xff08;Propagation&#xff09;&#xff1a; 1) REQUIRED&#xff08;默认属性&#xff09; 如果存在一个事务&#xff0c;则支持当前事务。如果没有事务则开启一个新的事务。 被设置成这个级别时&#xff0c;会为…

.net 解析Transfer-Encoding:chunked 秒掉网上无用方案

昨天在爬数据时&#xff0c;发现某个网站Response.Get过来的数据一直是为空。当时就很奇怪&#xff0c;认真看下了响应头。发现Transfer-Encoding:chunked这个玩意网上查了下资料一般情况HTTP的Header包含Content-Length域来指明报文体的长度。有时候服务生成HTTP回应是无法确定…

unity检测范围内敌人_Unity实现视野范围外死亡敌人的分数显示在屏幕内

using System.Collections;using System.Collections.Generic;using UnityEngine;public class Test01 : MonoBehaviour&#xff5b;Transform cam;//相机物体Vector3 pos;// Start is called before the first frame updatevoid Start()&#xff5b;pos transform.position;c…

ClickHouse之简单性能测试

前面的文章ClickHouse之初步认识已经简单的介绍了ClickHouse&#xff0c;接下来进行简单的性能测试。测试数据来源于美国民用航班的数据&#xff0c;从1987年到2017年&#xff0c;有1.7亿条。 环境&#xff1a; centos 6.3&#xff0c;32G内存&#xff0c;24核 下载脚本&#x…

mysql主从从配置详解_MySQL主从配置详解

● 本打算买个云数据&#xff0c;为我的新项目做点安全保障。阿里云&#xff0c;腾讯云转了一圈&#xff0c;两个字太贵。不就数据有备份吗&#xff0c;既然这样那我不如自己来做备份。● 家里有2个树莓派直接把mysql备份到他们上就好了&#xff0c;网上有教程&#xff0c;这就…

泛型数组

定义泛型数组 在写程序时&#xff0c;大家可能会遇到类似String[] list new String[8];的需求&#xff0c;这里可以定义String数组&#xff0c;当然我们也可以定义泛型数组&#xff0c;泛型数组的定义方法为 T[]&#xff0c;与String[]是一致的&#xff0c;下面看看用法&#…

是前端类库还是前端框架?

一、BootstrapBootstrap是一系列常用CSS和jQuery plugin的集合&#xff0c;典型的UI库&#xff0c;带给你的是栅格系统&#xff0c;是预置的按钮、表单、列表、导航、响应式等样式&#xff0c;它在你独立开发的时候非常有用。因为能节约用来设计网页的时间&#xff0c;而且这套…

mysql php pdo例_PHP的PDO操作实例

try{$dbmsmysql; //数据库类型 ,对于开发者来说&#xff0c;使用不同的数据库&#xff0c;只要改这个&#xff0c;不用记住那么多的函数$host127.0.0.1; //数据库主机名$dbNamebooks; //使用的数据库$userroot; //数据库连接用户名$pass; …

Java泛型详解:<T>和Class<T>的使用,泛型类

单独的T 代表一个类型 &#xff0c;而 Class代表这个类型所对应的类&#xff0c; Class<&#xff1f;>表示类型不确定的类 E - Element (在集合中使用&#xff0c;因为集合中存放的是元素)T - Type&#xff08;Java 类&#xff09;K - Key&#xff08;键&#xff09;V - …

HDU3183 A Magic Lamp —— 贪心(单调队列优化)/ RMQ / 线段树

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid3183 题解&#xff1a; 方法一&#xff1a;贪心。 在草稿纸上试多几次可以知道&#xff0c;删除数字中从左到右最后一位递增&#xff08;可以等于&#xff09;的数字&#xff0c;可以得到最小值&#xff0c;在这…

python入门知识大全_python基础知识有哪些

Python基础知识&#xff1a;1、引用和对象&#xff1b;2、可变数据类型和不可变数据类型&#xff1b;3、引用传递和值传递&#xff1b;4、深拷贝和浅拷贝&#xff1b;5、基本数据类型&#xff1b;6、关键字、标识符和内置函数&#xff1b;7、算术、赋值运算符等等。Python基础知…

Django开发1

Django开发1 初识Django1.安装django2.创建项目2.1 在终端2.2 Pycharm 3. 创建app4.快速上手4.1 再写一个页面4.2 templates模板4.3 静态文件4.3.1 static目录4.3.2 引用静态文件 5.模板语法//Django开发案例&#xff1a;联通新闻中心6.请求和响应案例&#xff1a;用户登录7.数…

编程式事务和声明式事物

编程式事务 声明式事物

【每日算法】基数排序算法

1&#xff09;算法简介 基数排序是一种非比较型整数排序算法&#xff0c;其原理是将整数按位数切割成不同的数字&#xff0c;然后按每个位数分别比较。由于整数也可以表达字符串&#xff08;比如名字或日期&#xff09;和特定格式的浮点数&#xff0c;所以基数排序也不是只能使…

wincc 报警记录 mysql_如何才能把WINCC报警记录中的数据通过SQL取上来-工业支持中心-西门子中国...

回答者&#xff1a; 凌波微步- 高级工程师&nbsp&nbsp第11级2009-03-09 08:54:18您可以评论本回答&#xff0c;或直接点击“提交”按钮推荐本回答...我可以取出来&#xff0c;但显示不了。我显示时用的是ms listbox 2.0控件&#xff0c;不过没成功显示出来&#xff0c;多…

AES加密算法256位密钥与128位密钥的不同之处

一、指代不同 1、256位密钥&#xff1a;AES的区块长度固定为256位&#xff0c;密钥长度则可以是256。 2、128位密钥&#xff1a;AES的区块长度固定为128位&#xff0c;密钥长度则可以是128。 二、安全性不同 1、256位密钥&#xff1a;256位密钥安全性高于128位密钥。 2、1…

Linux LNMP 环境的搭建之【Nginx的安装】

Nginx 俄罗斯人开发的一款比较强劲的web服务器,静态页面html 单机在优化得当的情况下&#xff0c;能够达到3-4W的并发,是一款比较优秀的服务器软件,在国内,有Tengine【淘宝】开发的分支 ,关于Tengine的文档,可以参考,淘宝团队的官方文档&#xff1a;http://tengine.taobao.org/…

如何把map的value转为list_Java 8 将Map转换为List

将一个Java示例转换Map为List汇总&#xff1a;Map map new HashMap<>();// Convert all Map keys to a ListList result new ArrayList(map.keySet());// Convert all Map values to a ListList result2 new ArrayList(map.values());// Java 8, Convert all Map keys…

非对称加密和对称加密的区别

一 :概述 在现代密码学诞生以前&#xff0c;就已经有很多的加密方法了。例如&#xff0c;最古老的斯巴达加密棒&#xff0c;广泛应用于公元前7世纪的古希腊。16世纪意大利数学家卡尔达诺发明的栅格密码&#xff0c;基于单表代换的凯撒密码、猪圈密码&#xff0c;基于多表代换的…