【SpringMVC笔记整理九】常用注解总结

  • SpringMVC
  • 2022-07-15 11:50:02

版权声明:本文为 小异常 原创文章,非商用***转载-保持署名-注明出处,谢谢!
本文网址:https://blog.csdn.net/sun8112133/article/details/104614261







本篇博客主要是对 Spring MVC 中常用的注解进行总结。


一、@Controller

@Controller 注解 是控制器注解,它可以将所在类注入到 IOC 容器中,也可以处理浏览器的请求。

该注解用在类上。

@Controller
public class MyController {
    // ...
}


二、@RequestMapping

@RequestMapping 注解 是请求映射注解,是一个用来处理浏览器请求的注解。

该注解用在类或方法上。如果放在类上,表示该类中的所有请求方法都必须以该地址作为父路径。

此注解它有以下三个常用参数:

1、常用参数

1)value

此参数是指定请求的实际地址,也是 @RequestMapping 的默认值。若只有此参数,则可以直接使用(@RequestMapping("/hello") 等价于 @RequestMapping(value = "/hello"))。

// 接收URL为 /hello 的请求
@RequestMapping(value = "/hello")

2)method

此参数是指定请求方法的类型,常见的请求方法有:GET、POST、PUT、DELETE。

如果浏览器报 405 错误时,大多数原因是由于 请求方法 有误。

// 接收URL为 /hello,请求方法为 GET 的请求
@RequestMapping(value = "/hello", method = RequestMethod.GET)

3)params

此参数是指定请求中必须包含的参数。

如果浏览器报 400 错误时,大多数原因是由于 请求参数 有误。

// 接收URL为 /hello,请求方法为 GET,请求参数必须包含 id参数 的请求
@RequestMapping(value = "/hello", method = RequestMethod.GET, params="id")

// 接收URL为 /hello,请求方法为 GET,请求参数必须包含 id 和 name参数 的请求
@RequestMapping(value = "/hello", method = RequestMethod.GET, params={"id","name"})

// 接收URL为 /hello,请求方法为 GET,请求参数必须包含 id为10 和 name参数 的请求
@RequestMapping(value = "/hello", method = RequestMethod.GET, params={"id=10","name"})

2、使用案例

1)在业务方法上

// 接收URL为 /hello,请求方法为 GET,请求参数必须包含 id 和 name参数 的请求
@RequestMapping(value="/hello",method=RequestMethod.GET,params= {"id","name"})
// 这里的 id 对应请求参数中id,name 对应 请求参数name
public String index(int id, String name) {  
    System.out.println("index...");
    System.out.println("id: " + id);
    System.out.println("name: " + name);
    return "index";
}

2)在业务类上

@Controller   
@RequestMapping("/sk")
public class HelloController {
    // 此时URL为 /sk/hello
    @RequestMapping("/hello")
    public String index() {
    	System.out.println("index...");
    	return "index";
    }
}


三、@RequestParam

@RequestParam 注解 是请求参数注解,是一个用来将请求参数绑定到控制器方法参数上的注解。

该注解用在方法参数前,指定接收哪一个参数。

如果方法参数名和请求参数名不一致情况下,若要进行绑定必须加此参数:

@RequestMapping(value="/hello", method=RequestMethod.GET,params= {"id","name"})
// 将请求参数 id 绑定到 方法参数 num 中,请求参数 name 和 方法参数 name 一致,可以不用加
public String index(@RequestParam("id") int num, String name) {
    System.out.println("index...");
    System.out.println("num: " + num);
    System.out.println("name: " + name);
    return "index";
}


四、@SessionAttribute

@SessionAttribute 注解 是 Session 属性注解,当只要在业务方法中向域对象中添加模型数据,Spring MVC 会自动把它同步到 session 域中,但需要规定同步哪个类型或哪个对象。

该注解用在类上。

此注解它有以下两个常用参数:

1、常用参数

1)value

默认值,设置同步对象的 key 值,如:@SessionAttributes("user") ,它会自动将 key 值为 user 的对象同步到 session 中;


2)types

设置同步对象的类型,如:@SessionAttributes(types = User.class),它会自动将类型为 User 的对象同步到 session 中。


2、使用案例

@Controller
@RequestMapping("/view")
@SessionAttribute("user")
public class ViewController {
	@RequestMapping("/mavtest")
	public ModelAndView mavtest() {
		User user = new User();
		user.setId(3333);
		user.setName("李四");
		ModelAndView modelAndView = new ModelAndView("test", "user", user);
		return modelAndView;
	}
}


五、@ModelAttribute

@ModelAttribute 注解 是模型属性注解,它表示将该方法返回的对象添加到模型视图中,而 key 值默认取数据类型的首字母小写。标注了该注解的方法不是一个业务方法,它的底层实现是先执行标注了该注解的方法,再回到业务方法继续执行,所以在一个类中,此方法只能有一个。

该注解用在方法上。

@RequestMapping("/modelAttribute")
public String modelAttribute() {
	return "show";
}

@ModelAttribute
public User getUser() {
	User user = new User();
	user.setId(1);
	user.setName("张三");
	return user;
}


六、@CookieValue

@CookieValue 注解 是 Cookie 注解,它表示映射 JSESSIONID 到形参中。

该注解用在参数前。

@RequestMapping("/cookie")
public String cookie(@CookieValue("JSESSIONID") String sessionId) {
    System.out.println(sessionId);
    return "index";
}


七、@ResponseBody

@ResponseBody 注解 是响应实体注解,表示该返回的结果会直接写入 HTTP 响应正文中,一般在异步获取数据时使用。

该注解用在类或方法上。

@RequestMapping("/hello")
@ResponseBody
public String hello(){
    System.out.println("hello");
    return "hello";
}


八、@GetMapping

@GetMapping 注解 是 GET 映射注解,URL 的 GET 请求,在 Restful API 中代表查找。

该注解用在方法上。

@GetMapping("/get")
// 等价于
@RequestMapping(value = "/get", method = RequestMethod.GET)


九、@PostMapping

@PostMapping 注解 是 POST 映射注解,URL 的 GET 请求,在 Restful API 中代表添加。

该注解用在方法上。

@PostMapping("/post")
// 等价于
@RequestMapping(value = "/post", method = RequestMethod.POST)


十、@PutMapping

@PutMapping 注解 是 PUT 映射注解,URL 的 PUT 请求,在 Restful API 中代表更新。

该注解用在方法上。

@PutMapping("/put")
// 等价于
@RequestMapping(value = "/put", method = RequestMethod.PUT)


十一、@DeleteMapping

@DeleteMapping 注解 是 DELETE 映射注解,URL 的 DELETE 请求,在 Restful API 中代表删除。

该注解用在方法上。

@DeleteMapping("/delete")
// 等价于
@RequestMapping(value = "/delete", method = RequestMethod.DELETE)


十二、@RestController

@RestController 注解 也是 RESTful 风格的注解,它相当于 @Controller + @ResponseBody。

如果使用 @RestController 注解标注 Controller,则 Controller 中的方法无法返回 jsp 页面,配置的视图解析器 InternalResourceViewResolver 不起作用,返回的内容就是 Return 里的内容。

该注解用在类上。

@RestController
public class MyController {
    @RequestMapping("/hello")
    public String hello() {
        return "直接返回此内容";
    }
}


博客中若有不恰当的地方,请您一定要告诉我。前路崎岖,望我们可以互相帮助,并肩前行!



猜你喜欢