Sprng MVC注解

1. 代码示例
@RestController
@RequestMapping("agent")
public class AgentController {

   @Resource
    private AgentService agentService;

   @RequestMapping("/deleteAgent")
    @ResponseBody
    public Object deleteAgent(Integer agentId) {
        	...
    }
2. @RestController

@RestController注解相当于@ResponseBody + @Controller合在一起的作用。
  1) 如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,或者html;配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。
  2) 如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
  3) 如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。

3. @RequestMapping
3.1 含义

(1)用来处理请求地址映射的注解,指示Spring用哪一个类或方法处理请求动作,可用于类或方法上。
(2)用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

3.2 属性
  • value:请求地址value="/king/getKingId"
  • method:请求方法method = RequestMethod.GET
  • params:请求参数params="myParam=myValue"
  • header:请求头headers="myHeader=myValue"
  • consumes: 可消费的媒体类型,只有当请求头中 Content-Type 的 值与它指定的相同的时候,请求才会被匹配,consumes="application/json"
  • produces:可生产的媒体类型,只有当请求头中 Accept 的值与指定它中有相同的时候,请求才会被匹配,produces = MediaType.APPLICATION_JSON_UTF8_VALUE
4. 快捷方式变体@RequestMapping:
  • @GetMapping
  • @PostMapping
  • @PutMapping
  • @DeleteMapping
  • @PatchMapping

@GetMapping 是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。

5. @PathVariable

(1)接收请求路径中占位符的值。
(2)扩充:URI模板" /owners/{ownerId} "指定了一个变量,名为 ownerId 。当控制器处理这个请求的时候,ownerId 的值就会被URI模板中对应部分的值所填充。比如说,如果请求的URI 是 /owners/fred ,此时变量 ownerId 的值就是 fred 。

@GetMapping("/owners/{ownerId}")
    public Person getPerson(@PathVariable String ownerId) {
        // ...
    }
6. @MatrixVariable

(1)矩阵变量:路径段落中携带的键值对。
(2)矩阵变量可以在任何路径段落中出现,每对矩阵变量之间使用一个分号“;”隔开。比如这样的 URI: “/cars;color=red;year=2012” 。多个值可以用逗号隔开 “color=red,green,blue” ,
(3)如果一个URL有可能需要包含矩阵变量,那么在请求路径的映射配置上就需要使用URI模板来 体现这一点。这样才能确保请求可以被正确地映射,而不管矩阵变量在URI中是否出现、出现 的次序是怎样等。
(4)如何从矩阵变量中获取到变量“q”的值:
必须将 enable- matrix-variables 属性设置为 true ,默认为 false。

<mvc:annotation-driven enable-matrix-variables="true"/>
// GET /pets/42;q=11;r=22 

	@RequestMapping(path = "/pets/{petId}", method = RequestMethod.GET) 
	public void findPet(@PathVariable String petId, @MatrixVariable int q) { 

		// petId == 42 // q == 11 
		
	}

或用更精确的信息来指定一 个矩阵变量的位置:

// GET /owners/42;q=11/pets/21;q=22 

	@RequestMapping(path = "/owners/{ownerId}/pets/{petId}", method = RequestMethod.GET) 
	public void findPet( @MatrixVariable(name="q", pathVar="ownerId") int q1, @MatrixVariable(name="q", pathVar="petId") int q2) { 
			// q1 == 11 // q2 == 22 
	}
7. @RequestHeader

将请求标头绑定到控制器中的方法参数。

8. @RequestParam

将Servlet请求参数(即查询参数或表单数据)绑定到控制器中的方法参数。
用于controller层,解决前台参数名称与后台接收参数变量名称不一致的问题。

@GetMapping("/getA")
   public String setupForm(@RequestParam("petId") int petId) {
   			...
   {
9. @Order

定义Spring IOC容器中Bean的执行顺序的优先级,而不是定义Bean的加载顺序,Bean的加载顺序不受@Order或Ordered接口的影响;

@Order(Ordered.LOWEST_PRECEDENCE)
10. @WebFilter

过滤器配置注解,可省去web.xml里的配置

@WebFilter(filterName = "accessLogFilter", urlPatterns = "/*")
public class ... {
	...
}
11. @CookieValue

将HTTP cookie的值绑定到控制器中的方法参数。
cookie的请求:

JSESSIONID = 415A4AC178C59DACE0B2C9CA727CDD84

如何获取cookie值:

@GetMapping("/demo")
public void handle(@CookieValue("JSESSIONID") String cookie) { 
    //...
}
12. @ModelAttribute

(1)可被应用在方法或方法参数上;
(2)注解在方法上的 @ModelAttribute 说明了方法的作用是用于添加一个或多个属性到model上;
(3)注解在方法参数上的 @ModelAttribute 说明了该方法参数的值将由model中取得。如果model 中找不到,那么该参数会先被实例化,然后被添加到model中。

13. @SessionAttributes

(1)用于在请求之间的HTTP Servlet会话中存储模型属性。
(2)它是一个类型级别的注释,用于声明特定控制器使用的会话属性。通常列出模型属性的名称或模型属性的类型,这些属性应该透明地存储在会话中以供后续访问请求使用。

14. @EnableWebMvc

启用MVC配置,与下述xml配置作用一样,二选一

<!-- java中使用注解方式 -->
@EnableWebMvc
public class WebConfig {
}
<!-- xml配置 -->
<mvc:annotation-driven/>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值