springMVC的常见注解,以及注解的作用。@Controller,@RestController,@RequestMapping,@RequestParam,@RequestHeader等

发布时间 2024-01-05 20:54:51作者: DoubleLi

目录
注:使用注解,必须要开启注解包扫描
1.@Controller
2.@RequestMapping
3.@PathVariable
4.@RequestParam
5.@RequestHeader
6.@CookieValue
7.@RequestBody
该注解的作用
8.@ResponseBody
9.@RestController
注:使用注解,必须要开启注解包扫描
在MVC核心配置中开启注解包扫描

<!--    配置包扫描,即要扫描哪些包到容器中-->
    <context:component-scan base-package="com.zzj"></context:component-scan>

开启MVC注解扫描的支持

<!--    开启注解扫描的支持-->
    <mvc:annotation-driven></mvc:annotation-driven>

之后在配置完web.xml和MVC核心配置文件后,就可以正常使用注解啦,

如果不知道如何配置springMVC的会,请移步看我的springmvc超详细配置讲解。

1.@Controller
什么是Controller,跟它类似的注解有哪些?
controller也就是控制器(也可以理解为处理器Handler),它是处理请求,和对请求参数处理的一个控制器。
跟它类似的注解有三个:其中@Controller是将标注的类作为一个控制层的组件放到容器中;
@Component:是将标注的类作为一个普通的组件放到容器中
@Service:是将标注的类作为一个服务层的组件放到容器中
@Repository:是将标注的类作为一个持久层(dao)组件放到容器中
它们的作用其实一样,都是放在容器中,就是区别一下。

2.@RequestMapping
1.该注解的使用位置
··a.该注解作用于控制层类上
··b.该注解作用于控制层方法上,这两种方式可以同时存在,映射顺序为类—》方法。
2.该注解的参数
``1).value={“/a”,“/b”,…,“/n”}:显而易见的,value参数用来绑定请求的URL,且是一个数组。意思就是可以为一个控制器方法同时指定多个请求匹配URL。使用 /a 或者 /b 或者其他的都可以访问。不过一般都是一个就可以。
··2)method={RequesMethodt}
这个属性是指定请求中的请求方式是什么,参数也是一个数组类型,指当前请求方式的请求可以配匹配映射。不使用RestFul模式的话只有Get和Post方式被支持。

    @RequestMapping(value = "/test2",method = {RequestMethod.GET,RequestMethod.DELETE,RequestMethod.POST})
1
3.@PathVariable
这个注解是在使用RestFul方式时,来和请求URL携带的参数进行与形参绑定用的。
要了解Restful请求方式,请移步到下面这篇文章,相信可以为你解惑~

4.@RequestParam
这个注解是用于方法中为某个形参进行请求参数入参用的。
···注:如果请求体中的参数名和控制器(controller)的形参名一致的话,就会默认匹配并绑定参数。一般是基本类型string的匹配;

··如果形参数名与请求体中参数名不一致,就需要使用当前注解来为形参绑定参数。
其中注解的三个属性分别代表:
····value=“请求中的参数名”,指定后就会将请求中的该参数入参匹配到,被该注解注释的形参中。
····required=true/false: 是指该参数是否必须存在于请求体中。 true:传入参数必须携带该参数,否则无法匹配成功。一般设置为false。
····defaultValue=“默认值”:即若参数传入为null,则为其设置默认值。

   @RequestMapping("/test4")
    public String test4(@RequestParam(value = "username",required = false,defaultValue = "zzj") String username, String password){

        return "success";
    }

5.@RequestHeader
···作用于形参上,将传入请求中的请求头信息与形参进行绑定。也可以理解为获取请求头信息给形参吧。
其三个参数的意思和上面的***@RequestParam***一样

    @RequestMapping("/test5")
    public String test5(@RequestHeader(value = "host",required = false) String username){

        return "success";
    }

6.@CookieValue
与上面两个注解一样,都是用于标记控制器方法的形参,并为其入参的。
该注解用来获取请求中的cookie信息。
其三哥属性及其用法意义,=都与上面两个是一样的

    @RequestMapping("/test6")
    public String test6(@CookieValue(value = "cookieName",required = false) String cookieName){
        return "success";
    }

7.@RequestBody
该注解的作用
这个注解是用来绑定在形参上,来获取,post请求方式下请求体json数据的注解。一般用于将请求体参数与我们得Java类对象进行绑定。但是要实现该功能呢就需要一个依赖的支持,他能够将我们得json对象转换W为Java对象,并赋值。引入 jacson-databind

<!--        支持@RequestBody注解,将json转为Java对象的依赖-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.12.4</version>
        </dependency>

这里就能将请求体内容自动转换为User对象。

    @RequestMapping("/test7")
    public String test7(@RequestBody User user){
        return "success";
    }

8.@ResponseBody
这个注解作用于方法上
···作用于方法上,是指将返回值作为响应体消息响应给浏览器。也可以使用合成注解,就是下面这个@RestController

9.@RestController
该注解注释在类上,它底层由@Controller和@ResponseBody两个注解一起注释。所以使用该注解后就不在需要写上@Controller了。
····并且该注解相当于给当前控制器中的每一个方法添加一个@ResponseBody注解。
···该注解注释后就不会再走视图解析器了(viewResolver),相当于直接使用HTTPServletResponse给响应体设置内容。
————————————————
版权声明:本文为CSDN博主「漫慢丶」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43660506/article/details/123365543