欢迎浏览高耳机的博客
希望我们彼此都有更好的收获
感谢三连支持!
🙉在 SpringMVC 的开发过程中,注解是提高开发效率和代码简洁度的关键。本文将带你快速了解并掌握 SpringMVC 中的常用注解,让你在实际项目中能够得心应手地运用它们。
目录
一、请求映射:精准定位功能模块
🍎在SpringMVC中,请求映射是所有流程和功能的入口,它决定了用户的请求将由哪个控制器方法来处理。
@RequestMapping:请求映射方式
@Controller //控制器需要通过该注解来声明
@RequestMapping("/user")
public class UserController {
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String addUser() {
return "userAdded";
}
}
// 请求路径为: ".../user/add"
🥝@RequestMapping
注解可以放在类上或方法上。放在类上时,为该控制器的所有方法提供一个公共的路径前缀;放在方法上时,用于指定具体的请求路径和方法类型。通过 value
属性指定路径,method
属性限制请求方法类型,还可以结合 params
和 headers
属性进行更细致的请求过滤。
简化的 HTTP 方法注解:
@GetMapping("/list")
//相当于@RequestMapping(value = "/list", method = RequestMethod.GET)
//下面的同理
public String listUsers() {
return "userList";
}
@PostMapping("/create")
public String createUser() {
return "userCreated";
}
🍇为了简化开发,SpringMVC 提供了 @GetMapping
、@PostMapping
、@PutMapping
和 @DeleteMapping
等注解,它们是 @RequestMapping
的衍生注解,分别对应不同的 HTTP 请求方法,使代码更具可读性和语义化。
二、参数绑定:让数据传递更便捷
🍉将请求中的参数绑定到方法参数上,是 SpringMVC 中常见的操作,它省去了手动解析请求参数的繁琐过程。
@RequestParam:参数重命名(后端参数绑定)
@GetMapping("/m4")
public String hello(@RequestParam("time") String createTime) {
return "接收到参数createTime:" + createTime;
}
🍊当你使用@RequestParam
注解进行参数重命名时,它会自动将请求参数与方法参数进行绑定,请求参数只能和@RequestParam
声明的参数名一致,才能进行绑定和赋值。value
属性指定参数名,required
属性决定该参数是否必填,如果请求中没有提供name
参数,会抛出MissingServletRequestParameterException
异常(required=false
则不会)。defaultValue
属性则提供了默认值的设置。
@PathVariable(路径变量):从 URL 中提取变量
@GetMapping("/m8/{id}/{name}")
public String getUser(@PathVariable Integer id,@PathVariable("name") String userName) {
return "解析参数id:"+ id + "name:" + userName;
}
🍍@PathVariable
注解用于从 URL 路径中提取变量值,并将其绑定到方法参数上,使得 URL 更加直观和语义化。
@RequestBody:处理 JSON 数据
@RequestMapping(value = "/m7")
public Object method7(@RequestBody Person person) {
return person.toString();
}
(使用Postman来发送请求)
🥥对于以 JSON 格式提交的数据,@RequestBody
注解能够将请求体中的 JSON 数据自动转换并绑定到 Java 对象上,方便进行复杂数据的处理。
三、会话管理:保持用户状态
🍑在 Web 中,会话管理用于保持用户的状态信息,SpringMVC 提供了多种方式来操作会话。不只是请求和响应:使用Fiddler解读Cookie与状态码全指南(下)_fiddler查看cookie-优快云博客https://blog.youkuaiyun.com/Chunfeng6yugan/article/details/144309981?spm=1001.2014.3001.5501
@CookieValue:获取 Cookie 值
@GetMapping("/cookie")
public String getCookie(@CookieValue("JSESSIONID") String sessionId) {
return "Session ID: " + sessionId;
}
🍅通过 @CookieValue
注解,可以轻松获取客户端发送的 Cookie 值,value
属性指定 Cookie 的名称,required
属性决定是否必须存在该 Cookie,defaultValue
属性提供默认值。
@SessionAttribute:将模型属性存储到会话
@RequestMapping("/getSess2")
public String sess2(@SessionAttribute(value = "username",required = false)
String username) {
return "username:"+username;
}
🫐@SessionAttributes
注解用于指定哪些模型属性需要存储到会话中,减少重复的数据传递,提高效率。
@RequestHeader: 简洁获取Header
@RequestMapping("/header")
public String header(@RequestHeader("User-Agent") String userAgent) {
return "userAgent:"+userAgent;
}
🥑 @RequestHeader 注解的参数值为HTTP请求报头中的"key"
四、响应处理:灵活控制返回结果
在 SpringMVC 中,可以根据需求灵活地控制返回给客户端的响应内容。
@ResponseBody:将对象直接返回为 JSON
@RequestMapping("/returnJson")
@ResponseBody
public HashMap<String, String> returnJson() {
HashMap<String, String> map = new HashMap<>();
map.put("Java", "Java Value");
map.put("MySQL", "MySQL Value");
map.put("Redis", "Redis Value");
return map;
}
🍎@ResponseBody
注解会将方法返回的对象直接转换为 JSON 格式并写入 HTTP 响应体中,适合返回数据接口的场景。
@RestController:简化
@RestController
@RequestMapping("/api")
public class ApiController {
// 控制器方法
}
🥝@RestController
注解是一个便捷的选择,它等同于 @Controller
和 @ResponseBody
的组合,省去了在每个方法上添加 @ResponseBody
的麻烦。
五、异常处理与数据绑定:细节处理
SpringMVC 还提供了一些注解,用于处理开发中的一些细节问题,提升整体的开发体验。
@ExceptionHandler:集中处理异常
@ExceptionHandler(Exception.class)
public String handleException(Exception e) {
return "errorPage";
}
🍇通过 @ExceptionHandler
注解,可以在控制器中集中处理方法中抛出的异常,统一返回错误页面或错误信息,提高应用的健壮性和用户体验。
@InitBinder:自定义数据绑定规则
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.setDisallowedFields("invalidField");
}
🍉@InitBinder
注解用于自定义请求参数绑定到 Java 对象的规则,可以在数据绑定前进行一些预处理操作,如设置不允许绑定的字段等。
六、元注解:注解的注解
元注解用于修饰其他注解,定义注解的使用范围和元数据。
@Target:指定注解的使用位置
@Target({ElementType.METHOD, ElementType.TYPE})
//限定为只能应用于方法(METHOD)和类、接口或枚举类型(TYPE)。
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
String value() default "";
}
🍊@Target
注解用于指定自定义注解所修饰的对象类型,如方法、类、参数等,使注解的使用更加规范和明确。
以上就是 SpringMVC 中常用的注解及其用法总结。通过合理运用这些注解,可以大大提高开发效率,使代码更加简洁、清晰。在实际项目中充分发挥它们的优势,提升项目的质量和可维护性。
希望本文对你在 SpringMVC 开发中有所帮助!
如有不足之处请多多指出
我是高耳机