SpringMVC 常用注解速查:解决编码中 90% 的问题

欢迎浏览高耳机的博客

希望我们彼此都有更好的收获

感谢三连支持!  

        🙉在 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 属性限制请求方法类型,还可以结合 paramsheaders 属性进行更细致的请求过滤。

简化的 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 开发中有所帮助!

如有不足之处请多多指出

我是高耳机

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值