Springboot的Controller中常用注解(一)

@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")表示的意思是一样的

  • 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。

  • 21
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Spring Boot有很多常用的注解,以下是其一些常用的注解及其作用: 1. @SpringBootApplication:一个快捷的配置注解,在被它标注的类,可以定义一个或多个Bean,并自动触发自动配置Bean和自动扫描组件。 2. @ComponentScan:用于指定Spring在哪些包寻找组件,可以指定多个包路径。 3. @Component:用于标注一个普通的组件类,它没有明确的业务范围,只是通知Spring被此注解的类需要被纳入到Spring Bean容器并进行管理。 4. @Controller:用于标注一个控制器类,它通常用于处理HTTP请求。 5. @Service:用于标注一个服务类,它通常用于处理业务逻辑。 6. @Repository:用于标注一个数据访问类,它通常用于访问数据库或其他数据存储。 7. @Autowired:用于自动装配一个Bean,它可以用在构造方法、属性、方法上。 8. @Value:用于注入一个配置属性值。 9. @RequestMapping:用于映射HTTP请求路径和处理方法。 10. @PathVariable:用于获取URL路径的参数值。 11. @RequestParam:用于获取HTTP请求参数值。 12. @ResponseBody:用于将方法返回值转换为HTTP响应体。 13. @ExceptionHandler:用于处理异常。 14. @Configuration:用于标注一个配置类,它通常用于定义Bean。 15. @Bean:用于定义一个Bean。 16. @Profile:用于指定Bean在哪个环境下生效。 17. @Conditional:用于根据条件决定是否创建一个Bean。 18. @EnableAutoConfiguration:用于启用自动配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值