zoukankan      html  css  js  c++  java
  • 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 } 
     
  • 相关阅读:
    MARTIN FOWLER谈敏捷开发
    精益创业
    DEVOPS基础
    测试驱动开发
    持续集成(CONTINUOUS INTEGRATION)
    极限编程
    回归测试
    敏捷开发十二原则
    敏捷开发宣言
    敏捷开发简史
  • 原文地址:https://www.cnblogs.com/lyh421/p/6652861.html
Copyright © 2011-2022 走看看