返回

以代码示例深入解析SpringBoot Controller层注解的用法

后端

在SpringBoot中,Controller层起着至关重要的作用,它负责处理来自客户端的请求并返回响应。SpringBoot提供了多种注解来简化Controller层的开发,这些注解可以帮助开发者更轻松地构建RESTful API,处理请求参数,设置会话属性,操作cookie以及处理请求头等。

@RestController

@RestController注解是一个组合注解,相当于@Controller和@ResponseBody的合体。@Controller注解表示该类是一个控制器,而@ResponseBody注解则表示该类中的方法返回的数据直接写入HTTP响应正文中,而不是跳转到某个视图页面。

@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String hello() {
        return "Hello, World!";
    }
}

@RequestMapping

@RequestMapping注解用于映射请求路径到处理该请求的控制器方法。该注解可以应用于类或方法上。

@RequestMapping("/user")
public class UserController {

    @RequestMapping(value = "/add", method = RequestMethod.POST)
    public User add(@RequestBody User user) {
        // ...
    }

    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public User get(@PathVariable Long id) {
        // ...
    }
}

@PathVariable

@PathVariable注解用于从请求路径中提取参数值。

@RequestMapping("/user/{id}")
public User get(@PathVariable Long id) {
    // ...
}

@RequestParam

@RequestParam注解用于从请求参数中提取参数值。

@RequestMapping("/user/search")
public List<User> search(@RequestParam String name) {
    // ...
}

@RequestBody

@RequestBody注解用于从请求正文中提取参数值。

@RequestMapping("/user/add")
public User add(@RequestBody User user) {
    // ...
}

@ModelAttribute

@ModelAttribute注解用于将请求参数或会话属性绑定到方法参数上。

@RequestMapping("/user/update")
public User update(@ModelAttribute User user) {
    // ...
}

@SessionAttributes

@SessionAttributes注解用于设置会话属性。

@Controller
@SessionAttributes("user")
public class UserController {

    @RequestMapping("/user/login")
    public String login(@RequestParam String username, @RequestParam String password) {
        // ...
        session.setAttribute("user", user);
        return "redirect:/home";
    }

    @RequestMapping("/user/home")
    public String home(@ModelAttribute User user) {
        // ...
        return "home";
    }
}

@CookieValue

@CookieValue注解用于从请求头中提取cookie值。

@RequestMapping("/user/profile")
public User profile(@CookieValue(name = "userId") Long userId) {
    // ...
}

@RequestHeader

@RequestHeader注解用于从请求头中提取header值。

@RequestMapping("/user/avatar")
public User avatar(@RequestHeader(name = "Accept") String accept) {
    // ...
}

结语

本文对SpringBoot Controller层常用的注解进行了详细的介绍和代码示例。通过对这些注解的掌握,开发者可以更轻松地构建RESTful API,处理请求参数,设置会话属性,操作cookie以及处理请求头等,从而开发出更加强大和稳定的web应用程序。