博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2017.3.31 spring mvc教程(六)转发、重定向、ajax请求
阅读量:4310 次
发布时间:2019-06-06

本文共 2383 字,大约阅读时间需要 7 分钟。

学习的博客:

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

 

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

1.转发和重定向

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

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

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

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
list=new ArrayList
(); 5 list.add("电视"); 6 7 return list; 8 }

 

 

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

你可能感兴趣的文章
使用apache设置绑定多个域名或网站
查看>>
bzoj2194: 快速傅立叶之二
查看>>
2018-2019-2 20189206 《密码与安全新技术专题》 第四次作业
查看>>
CentOS7如何设置静态IP及开放DNS端口
查看>>
精密V / I 转换电路
查看>>
求组合数取模的几种方法
查看>>
个人所得税计算器
查看>>
vs2015 不能启动 iis express
查看>>
electron 写入注册表 实现开机自启动
查看>>
记一次Debug过程
查看>>
画圆算法
查看>>
记录一次redis故障
查看>>
最近公共祖先(lca) hdu 2586
查看>>
安卓开发笔记——关于AsyncTask的使用
查看>>
spout详解
查看>>
一个md5加密的工具类,用的虚拟机的包,不需要额外导包
查看>>
centos7在VMware下配置网络连接
查看>>
希尔排序 堆排序 归并排序
查看>>
ckplayer插件播放视频
查看>>
寻找最好的笔记软件:三强篇(EverNote、Mybase、Surfulater) (v1.0)
查看>>