Java知识点总结:想看的可以从这里进入
目录
- 3.2、常用的注解
3.2、常用的注解
-
@Controller:代表此类是一个控制器,需要配置包的扫描。Spring MVC 是通过组件扫描机制查找应用中的控制器类的
在Spring6.0之后要求控制层必须添加该注解才会被识别成一个Controller。
Controller在SpringMVC中默认是单例的,因为我们基本不会在控制器里面定义属性,但如果在特殊情况需要定义属性的时候,可以在类上面加上注解@Scope(“prototype”)改为多例的模式.
-
@RequestMapping(“访问路径”):最常被用到的注解之一,可以标注在类和方法上,它将请求与处理请求的控制器方法关联起来,建立映射关系,映射一个url到控制器的一个特定方法,通过此路径调用相应方法。
- 用在类上时:对此类中的方法都会生效,路径为(类+方法)
- 用在方法上:和用在类上的组成一个完整的路径
@Controller @RequestMapping("/test") public class TestController { //此时请求映射所映射的请求的请求路径为:/test/pagejump @RequestMapping("/pagejump") public String (){ } }
属性 含义 value 用来设置控制器方法的请求映射地址,注解的默认属性,如果只要一个value 属性,属性名可以被省略,取值可以是一个字符串类型的数组({路径1,路径2,………}),表示该控制器方法可以匹配多个请求地址 name 性相当于方法的注释,用于解释这个方法是用来干什么的,使方法更易理解。 method 用来设置控制器方法支持的请求方式(GET、POST、DELETE、PUT) params 指定请求中的参数,只有当请求中携带了符合条件的参数时,控制器方法才会对该请求进行处理。
“param”:请求中必须携带名为 param 的参数
“!param”:请求中不能携带名为 param 的参数
“param=value”:请求中必须携带名为 param 的参数,且参数的取值必须为:value
“param!=value”:请求中不能携带参数:param = value。headers 用于设置请求中请求头信息(和params 用法类似 ) -
@RequestMapping的派生注解,用来处理不同的请求,RestFul风格中经常使用
- @PostMapping():只处理post提交的请求
- @GetMapping():只处理get提交的请求
- @PutMapping():处理put请求的映射
- @DeleteMapping:处理delete请求的映射
-
@RequestParam(“name的值”) :用于方法的参数前,用来处理前端提交数据名和方法参数名相匹配的问题(参数不能为空)
- required:默认为true,不允许为空。设置成false,可以为空
- defaultValue:可以修改默认值
public void test(@RequestParam("userId") int id){ } //它会把参数处理过后,再进入到方法中,比如如下: String userId = request.getParameter("userId"); int id = Integer.getInteger(userId);
-
@SessionAttribute:用在参数前,用来获取sesion中设置过的数据(比如登录用户)
public void test(@SessionAttribute("user") User user){ }
-
@ResponseBody:用在方法上,使方法不再走视图解析器,而是返回字符串数据。.
-
@RequestBody:用于接收前端传来的实体,自动装配到对象中
@PostMapping("/user") public String testRequestBody(@RequestBody User user) { System.out.println("获取到的username为:"+ user.getUsername()); System.out.println("获取到的password为:"+user.getPassword()); return "success"; }
-
@PathVariable:用来获取 URL 参数,处理Restfull 风格
//http://localhost:8080/user/{id} @GetMapping("/user/{id}") public String testPathvariable(@PathVariable(value="id") Integer id) { //value可解决名字不匹配 System.out.println("获取到的id为:"+id); return "success"; }