zoukankan      html  css  js  c++  java
  • springmvc 数据交互

    一、Controller相关注解

        1、@Controller与@RestController注解

       ①@Controller:添加在Controller 类上,指定Spring类的实例是一个控制器。

       ②@RestController:添加在Controller 类上,是一个复合注解,它包含了@Controller和@ResponseBody注解,指定控制器内每个方法都是由@ResponseBody注解的。

        2、@RequestMapping注解

            @RequestMapping:映射请求到控制器的方法,可匹配属性url、HTTP method、request parameters、headers、media types等,常用属性如下:

       ①value属性

            说明:@RequestMapping注解的默认属性,支持使用通配符映射。

            用法1:@RequestMapping 添加在Controller类上,代表类中方法一个公共的访问路径。

            用法2:@RequestMapping(value="url")添加在方法上,其中value可以省略,允许多个url对应一个方法,格式为value={"url1","url2"}。

        ②method属性

           说明:请求方式限定

           @RequestMapping(method="method"),其中method可以省略(支持全部),同一方法允许多种访问方式,如method ={RequestMethod.GET,RequestMethod.POST},

           同样可以使用@GetMapping、@PostMapping、 @PutMapping、 @DeleteMapping、 @PatchMapping来精确映射。

        ③params属性

           说明:请求参数限定

           @RequestMapping(value="url",params={"username","password!=123456"})代表请求路径必须包含参数username,值不做要求,若包含参数password,值不能为123456。

        ④header属性

           说明请求头限定

           @RequestMapping(value = "getUser",headers = "Referer=http://www.test.com")代表仅接收header中Referer属性包含http://www.test.com的请求(Referer可用于防盗链,恶意请求等)。 

        ⑤consumers与produces属性

           说明:请求响应媒体类型限定

         3、@RequestParam注解    

              @RequestParam:用于将指定的请求参数赋值给方法中的形参,其中包含3个参数:

         ①value:请求参数(通常用于起别名)

         ②required:默认为true(请求参数不能为null),需设为false解除限制。

         ③defaultValue:参数为空的情况下,设置一个默认值(required自动设为 false)。

          4、@PathVariable注解

               @PathVariable:用来映射请求URL中绑定的占位符,并将对应参数绑定到controller处理方法的入参中。

           5、@RequestBody与@ResponseBody注解

                 @RequestBody:作用在形参列表上,将前台发送过来的(json/xml)数据封装成javabean对象。

                 @ResponseBody:作用在方法上的,将方法的返回值以特定格式(json/xml)写入返回体中,从而将数据返还给客户端,不会进行视图解析及渲染HTML模板。

    二、Controller方法返回值

        1、ModelAndView

              通过创建ModelAndView 对象,存储处理完后的结果数据,以及显示该数据的视图,其中Model代表模型,View代表视图,例如:addObject()存储数据,setViewName()存储视图。

         2、String

               ①存储返回视图路径,通过形参Model对象携带数据,例如:addAttribute()以键值对形式存储数据(官方推荐方法,符合解耦思想)。

               ②return "forward:url";实现转发

               ③return "redirect:url";实现重定向

               ④添加@ResponseBody注解返回字符串

         3、void           

               ①通过形参HttpServletResponse对象携带数据,例如:getWriter().write("字符串")(适用于ajax异步请求,即不需要返回视图)。

               ②原始servlet中request.getRequestDispatcher("url").forward(request,response)实现转发。

               ③原始servlet中response.sendRedirect("url")实现重定向。

               ④添加@ResponseBody注解没有返回值

                ps:

                转发与重定向区别:

                转发:

                浏览器URL的地址栏不变;

                是服务器行为(一次访问请求),2次跳转之间传输的信息不会丢;

               重定向:

               浏览器URL的地址栏改变;

               是客户端行为(至少两次请求),2次跳转之间传输的信息会丢失;

  • 相关阅读:
    Python实现将IP地址转换为数字
    转 python两个 list 获取交集,并集,差集的方法
    并发编程之协程
    网络编程之协议
    网络编程
    python之路-模块和包
    python IO模型
    python 线程(队列,线程池),协程(理论greenlet,gevent模块,)
    python 线程(部分)Thread的使用,守护线程,互斥锁,递归锁,信号量,事件,条件,定时器
    常见的面试题
  • 原文地址:https://www.cnblogs.com/Jansens520/p/13384660.html
Copyright © 2011-2022 走看看