欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【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 "直接返回此内容";
    }
}


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



相关标签: SpringMVC