zoukankan      html  css  js  c++  java
  • Springboot的Controller中常用注解

    https://blog.csdn.net/weixin_43184769/article/details/83383341

    @Controller和@RestController和@ResponseBody

    @Controller

    @Controller注解标注类的方法,return时会被视图处理器识别成静态文件的路径。默认为templates文件夹下。如return "test/hello"表示的是默认路径下的test文件夹中的名叫hello的文件,带上后缀名.html或btl等也可以识别。

    @ResponseBody

    @ResponseBody可以标注方法也可以标注类,当标注方法时表示该方法的返回值会被解析成json(字符串会不会被转换),直接写入HTTP Response Body中,视图处理器将不会将return的参数识别成路径。当它标注类时,类中所有方法的返回值都将直接返回值到页面,相当于给所有的类都加上@ResponseBody注解。

    @RestController

    @RestController是@Controller和@ResponseBody的结合体,只能注解类,return返回的值将被转换成json,字符串除外,直接写入HTTP相应体返回到页面中。

    需要注意的是,只在类上注解@ResponseBody类中方法映射的URL并不能起作用,加上@Controller注解后才可以接受处理HTTP请求,同时加上 @RestController是@Controller和只写@ResponseBody是一样的效果

    @RequestMapping

    它可以注解类也可以注解方法,注解类时标注请求的路径,标注方法时表示将特定的URL映射到指定的方法。@RequestMapping中有多个属性来进一步匹配HTTP请求到方法:

    • value,请求的URL路径,支持URL模板,正则表达式。和Ant路径表达式。例如:
      在这里插入图片描述
      则/test/tom,/test/123等路径都会被匹配到Hello方法中来
      在这里插入图片描述
      加入正则表达式[a-z]表示匹配一位所有的小写字母。所以类似/test/a;/test/b等路径都会被映射到Hello方法中。

      使用Ant路径表达式时。“ * ”单个星号表示匹配任意字符:/test/ *.html,/test/hello. *
      " ** "用两个星号表示任意路径如图中的/**/hello。使用?匹配单个字符,如/test/?.html

    • method,指定HTTP请求的方法,GET,POST,PUT,DELETE等,只有匹配才能调用。Spring提供了简化的写法:

    @GetMapping
    @PostMapping
    @PutMapping等
    
    所以
     @RequestMapping(value = "/test/hello",method = RequestMethod.GET)和
     @GetMapping("/test/hello")表示的意思是一样的
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • consumes,指定HTTP请求头中的Content-Type。
      例如。设置Content-Type=application/json,则对应接收ajax请求。可以在ajax中设置contentType="application/json"确保数据类型。

    参数相关注解

    @PathVariable:

    用于获取URL中的参数:一般{ }中的变量名与方法中的形参名一致(可以不加@PathVariable注解)
    在这里插入图片描述

    如果名称不一致则写成:否则不单单是获取不到参数,连方法都不执行!
    在这里插入图片描述

    @RequestParam

    @RequestParam,用来处理Content-Type为application/x-www-form-urlencoded(默认类型如果不指定),使用value属性可以指定获取参数的key。

    @RequestBody

    @RequestBody 注解一般用来处理非Content-Type: application/x-www-form-urlencoded编码格式的数据,在GET请求中没有请求体所以一般不适用,在post请求中必须指定Content-Type后才能使用它,如ajax请求指定发送格式为application/json。

  • 相关阅读:
    032 Gradle 下载的依赖jar包在哪?
    031 can't rename root module,Android Studio修改项目名称
    030 Cannot resolve symbol'R' 问题解决汇总大全
    029 Android Studio层级显示目录文件
    028 You are about to commit CRLF line separators to the Git repository.It is recommended to set the core. autocrlf Git attribute to true to avoid line separator issues If you choose Fix and Comit ,
    027 【Android基础知识】Android Studio 编译慢及 Adb connection Error:远程主机强迫关闭了一个现有的连接
    026 Android Studio 和Gradle版版本对应关系
    025 Cause: org.jetbrains.plugins.gradle.tooling.util.ModuleComponentIdentifierIm
    024 Android Studio上传项目到Github 最全记录
    023 解决AndroidStudio下载gradle慢的问题
  • 原文地址:https://www.cnblogs.com/guoyu1/p/13821419.html
Copyright © 2011-2022 走看看