【SpringMVC笔记整理九】常用注解总结
版权声明:本文为 小异常 原创文章,非商用*转载-保持署名-注明出处,谢谢!
本文网址: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 "直接返回此内容";
}
}