0


SpringMVC的常用注解

SpringMVC的常用注解

1、@Controller

@Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。

2、@RequestMapping

用于处理请求 url 映射的注解,可用于类或方法上。

 使用在类上: 请求 URL 的第一级访问目录。此处不写的话,就相当于应用的根目录
 使用在方法上: 请求 URL 的第二级访问目录 

属性:

1、name:相当于方法的注释,使方法更易理解
2、value:指定请求的实际地址
3、path:与value同义,两者都是用来作为映射使用的
4、method:指定请求的method类型, GET、POST、PUT、DELETE等
5、params:该属性指定,请求中必须包含params属性规定的参数时,才能执行该请求
6、headers:该属性指定,请求中必须包含某些指定的header值,才能够让该方法处理请求
7、consumes:指定处理请求的提交内容类型(Content-Type),例如:application/json、text/html时,才能够让该方法处理请求
8、produces:指定返回的内容类型,返回的内容类型必须是request请求头(Accept)中所包含的类型,此外,produces属性还可以指定返回值的编码

3、@Resource和@Autowired

@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。

相同点:

两者都可以写在字段和setter方法上。两者如果都写在字段上,那么就不需要再写setter方法。

不同点:

@Autowired注解是按照类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。如果我们想使用按照名称(byName)来装配,可以结合@Qualifier注解一起使用。

@Resource默认按照ByName自动注入,由J2EE提供,需要导入包javax.annotation.Resource。
@Resource有两个重要的属性:name和type,而Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以,如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。
如果既不制定name也不制定type属性,这时将通过反射机制使用byName自动注入策略。

4、@RequestParam

把请求中指定名称的参数给控制器中的形参赋值。

属性:

1、value:请求参数中的名称。
2、required:请求参数中是否必须提供此参数。 默认值:true。 表示必须提供,如果不提供将报错。 
3、defaultValue:默认值

使用场景:

1、@RequestParam 只能用于接收 url 的传参?name=xxx
2、form表单的提交
例:
 @RequestMapping("/testRequestParam")publicStringtestRequestParam(@RequestParam(value ="name",required =true,defaultValue ="李四")String username){System.out.println("username="+username);return"success";}

5、@RequestBody

  1. 用于获取请求体内容。 直接使用得到是 key=value&key=value…结构的字符串。
  2. 把获得json类型的数据转成pojo对象。

属性:

required:是否必须有请求体。默认值是:true。当取值为 true 时,get 请求方式会报错。如果取值为 false, get 请求得到是 null。

注:@RequestBody 不能使用get请求, 在Controller的方法参数里,有且只有一个

6、@ResponseBody

@ResponseBody用于将 Controller 的方法返回的对象,通过 HttpMessageConverter 接口转换为指定格式的数据如: json,xml 等,通过 Response 响应给客户端

使用时机:返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)

用法:

  • 在Controller类: 代表该Controller类中所有的方法都使用@ResponseBody,即都直接返回对象数据
  • 在Controller类的方法上: 将该方法的返回值转成json对象返回给客户端

7、@ PathVariable

用于绑定 url 中的占位符。 例如:请求 url 中 /delete/{id}, 这个{id}就是 url 占位符。

url 支持占位符是 spring3.0 之后加入的。是 springmvc 支持 rest 风格 URL 的一个重要标志。

属性:

1、value:用于指定 url 中占位符名称。
2、required:是否必须提供占位符。 

使用场景:

获取路径中的参数
例:
 @RequestMapping("testPathVaribale/{id}")publicStringtestPathVaribale(@PathVariable(value ="id")Integer id){System.out.println("id="+id);return"success";}

8、@RequestHeader

用于获取请求消息头。

属性:

1、value:提供消息头名称
2、required:是否必须有此消息头 

使用场景:

从请求头中获取参数,鉴权(token) Authorization

9、@CookieValue

用于把指定 cookie 名称的值传入控制器方法参数。

属性:

1、value:指定 cookie 的名称。
2、required:是否必须有此 cookie。 

使用场景:

/**
     * 获取 Session
     * JSESSIONID=412A032E02A2594698F6E3F4458B9CE6
     */@RequestMapping("/testCookieValue")publicStringtestCookieValue(@CookieValue("JSESSIONID")String sessionId){System.out.println("JSESSIONID = "+ sessionId);return"success";}

10、@ModelAttribute

代表的是:该Controller的所有方法在调用前,先执行此@ModelAttribute方法,可用于注解和方法参数中,可以把这个@ModelAttribute特性,应用在BaseController当中,所有的Controller继承BaseController,即可实现在调用Controller时,先执行@ModelAttribute方法。

在 Controller 中使用 @ModelAttribute 时,有以下几种应用情况。
1、应用在方法上
2、应用在方法的参数上
3、应用在方法上,并且方法也使用了 @RequestMapping


本文转载自: https://blog.csdn.net/skyxxy123/article/details/127532094
版权归原作者 青衫逍遥客 所有, 如有侵权,请联系我们删除。

“SpringMVC的常用注解”的评论:

还没有评论