Spring MVC 常用注解简析:
1、@Controller注解类型
- org.springframework.stereotype.Controller注解类型用于指示Spring 类的实例是一个控制器,
- 其注解形式为@Controller。
- 该注解在使用时 不需要再实现Controller接口,只需要将@Controller注解加入到控制器 类上,
- 然后通过Spring的扫描机制找到标注了该注解的控制器即可。
2、@RequestMapping注解类型
- Spring通过@Controller注解找到相应的控制器类后,还需要知道控制器内部对每一个请求是如何处理的
- 这就需要使用@RequestMapping注解类型,它用于映射一个请求或一个方法。
- 使用时,可以标注在一个方法或一个类上。
- 标注在方法上:作为请求处理方法在程序接收到对应的URL请求时被调用
package com.ssm.controller;
import org.springframework.stereotype.Controller;
import org.springframework web.bind.annotation.RequestMapping;
@Controller
public class FirstController{
@RequestMapping(value="/firstController")
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) {
...
return mav;
}
}
此时,可以通过地址: http://localhost:8080/chapter12/firstController访 问该方法!
- 标注在类上:该类中的所有方法都将映射为相对于类级别的请求,表示该控 制器所处理的所有请求都被映射到value属性值所指定的路径下
package com.ssm.controller;
import org.springframework.stereotype.Controller;
import org.springframework web.bind.annotation.RequestMapping;
...
@Controller
@RequestMapping(value="/hello")
public class FirstController{
@RequestMapping(value= */firstController")
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) {
...
return mav;
}
}
由于在类上添加了@RequestMapping注解,并且其value属性值为“/hello”, 所以上
述代码方法的请求路径将变为: htp:p/localhost:8080/chapter12/hello/firstController.
3、组合注解
- @GetMapping:匹配GET方式的请求;
- @PostMapping:匹配POST方式的请求;
- @PutMapping:匹配PUT方式的请求;
- @DeleteMapping:匹配DELETE方式的请求;
- @PatchMapping:匹配PATCH方式的请求。
说明
- @GetMapping注解是@RequestMapping(method = RequestMethod.GET)的缩写,它会将HTTP GET请求映射到特定的 处理方法上
- @GetMapping(value="/user/{id}") 就相当于
@RequestMapping(value= “/user/{id}”,method=RequestMethod.GET)
4、@RequestParam注解类型
- @RequestParam注解的属性声明
属性 | 说明 |
value | name属性的别名,这里指参数的名字,即入参的请求参数名字,如value=fitem id"表示请求的参数中名字为item id 的参数的值将传入。如果只使用vaule属性,则可以省略value属性名。 |
name | 指定请求头绑定的名称。。 |
required | 用于指定参数是否必须,默认是true,表示请求中- -定要有相应的参数。 |
defaultValue | 默认值,表示如果请求中没有同名参数时的默认值。 |
- 假设请求地址为 http://localhost:8080/demo/selectUser?user_id=1,
- 在后台selectUser()方法中的使用方式如下:
- 先用@RequestParam接收 同名参数,后间接绑定 到方法形参上
@RequestMapping("/selectUser")
public String selectUser(@RequestParam(value="user_id")Integer id) {
System.out.println("id="+id);
return "success";
}
@RequestBody和@ResponseBody
- 在使用注解式开发时,需要用到2个重要的JSON格式转换注解
注解 | 说明 |
@RequestBody | 用于将请求体中的数据绑定到方法的形参中。该注解用在方法的形参上。 |
@ResponseBody | 用于直接返回return对象。该注解用在方法上。 |
Spring MVC 常用注解的使用
为了保证Spring能够找到控制器类,还需要在Spring MVC的配置文件中添加 相应的扫描配置信息
在applicationContext.xml 中引入context命名空间
- xmlns:context=“http://www.springframework.org/schema/context”
指定需要扫描的包
<!-- 多个包之间用逗号连接 -->
<context:component-scan base-package="com.ssm.controller" />
注意:
使用注解方式时,程序的运行需要依赖Spring的AOP包,因此需要添加 spring-aop-4.3.6.RELEASE.ja