Spring MVC常用注解详解及示例代码

  • 发布时间:2023-09-21 18:25:38
  • 本文热度:浏览 332 赞 0 评论 0
  • 全文共1字,阅读约需1分钟

1. Spring MVC常用的注解有哪些?

Spring MVC是一个基于Java的开源框架,用于构建Web应用程序。它采用了MVC(Model-View-Controller)设计模式,将应用程序分为模型、视图和控制器三个部分。在Spring MVC中,注解被广泛用于配置和控制请求的处理。

本文将介绍Spring MVC中常用的注解,包括请求映射注解、请求参数注解、响应注解以及其他常用注解。

2. 请求映射注解

2.1 @RequestMapping:该注解用于将请求URL映射到对应的处理方法上。可以用在类级别和方法级别上,用于处理不同层级下的URL映射。

示例代码:

@Controller
@RequestMapping("/users")
public class UserController {

    @RequestMapping("/create")
    public String createUser() {
        // 处理创建用户的逻辑
        return "success";
    }
}

2.2 @GetMapping@PostMapping@PutMapping@DeleteMapping:这些注解分别映射HTTP的GET、POST、PUT和DELETE请求。它们是@RequestMapping(method = RequestMethod.XXX)的缩写形式。

示例代码:

@Controller
@RequestMapping("/users")
public class UserController {

    @GetMapping("/{id}")
    public String getUserById(@PathVariable("id") Long id) {
        // 根据用户ID查询用户信息
        return "user";
    }
}

2.3 @PathVariable:该注解用于将URL中的占位符参数绑定到方法的参数上。可以通过指定占位符名称或使用默认名称。

示例代码:

@Controller
@RequestMapping("/users")
public class UserController {

    @GetMapping("/{id}")
    public String getUserById(@PathVariable Long id) {
        // 根据用户ID查询用户信息
        return "user";
    }
}

3. 请求参数注解

3.1 @RequestParam:该注解用于将请求参数绑定到方法的参数上。可以指定参数的名称、是否必需、默认值等。

示例代码:

@Controller
@RequestMapping("/users")
public class UserController {

    @GetMapping("/search")
    public String searchUsers(@RequestParam("keyword") String keyword) {
        // 根据关键字搜索用户
        return "users";
    }
}

3.2 @RequestBody:该注解用于将请求体中的数据绑定到方法的参数上。适用于POST请求传递JSON/XML等格式的数据。

示例代码:

@Controller
@RequestMapping("/users")
public class UserController {

    @PostMapping("/")
    public String createUser(@RequestBody User user) {
        // 创建新用户
        return "success";
    }
}

3.3 @RequestHeader:该注解用于将请求头中的信息绑定到方法的参数上。可以指定请求头的名称和是否必需等。

示例代码:

@Controller
@RequestMapping("/users")
public class UserController {

    @GetMapping("/info")
    public String getUserInfo(@RequestHeader("Authorization") String token) {
        // 根据Token获取用户信息
        return "info";
    }
}

4. 响应注解

4.1 @ResponseBody:该注解用于将方法的返回值直接写入HTTP响应体中,而不是通过视图解析器解析为视图。常用于返回JSON数据。

示例代码:

@Controller
@RequestMapping("/users")
public class UserController {

    @GetMapping("/{id}")
    @ResponseBody
    public User getUserById(@PathVariable Long id) {
        // 根据用户ID查询用户信息
        return userService.getUserById(id);
    }
}

4.2 @ResponseStatus:该注解用于在处理方法完成后,设置响应的状态码。

示例代码:

@Controller
@RequestMapping("/users")
public class UserController {

    @DeleteMapping("/{id}")
    @ResponseStatus(HttpStatus.NO_CONTENT)
    public void deleteUser(@PathVariable Long id) {
        // 根据用户ID删除用户
        userService.deleteUser(id);
    }
}

5. 其他常用注解

5.1 @ModelAttribute:该注解用于将方法的返回值或方法参数绑定到模型对象上。常用于将公共数据添加到每个请求的模型中。

示例代码:

@Controller
@RequestMapping("/users")
@SessionAttributes("user")
public class UserController {

    @ModelAttribute("user")
    public User getUser() {
        // 返回默认的用户对象
        return new User();
    }
}

5.2 @Valid@NotNull@Size:这些注解用于验证请求参数的合法性。可以在方法参数上使用,用于参数校验。

示例代码:

@Controller
@RequestMapping("/users")
public class UserController {

    @PostMapping("/")
    public String createUser(@Valid @RequestBody User user) {
        // 创建新用户
        return "success";
    }
}

5.3 @ExceptionHandler:该注解用于处理控制器内部的异常,并返回自定义的错误视图或错误信息。

示例代码:

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    public ModelAndView handleException(Exception ex) {
        // 处理异常并返回错误视图
        ModelAndView modelAndView = new ModelAndView("error");
        modelAndView.addObject("message", ex.getMessage());
        return modelAndView;
    }
}

6. 总结

本文介绍了Spring MVC中常用的注解,包括请求映射注解、请求参数注解、响应注解以及其他常用注解。这些注解可以帮助开发人员简化代码,并提高开发效率。

通过使用这些注解,我们可以轻松地配置请求映射、绑定请求参数、处理响应等,使得代码更加简洁和可读性更高。

Spring MVC作为一个成熟的Web框架,其注解的使用在实际开发中非常广泛。掌握这些注解的使用,将有助于更好地理解和应用Spring MVC框架。

正文到此结束
评论插件初始化中...
Loading...