springboot控制层的部分语法

在Spring Boot中,控制层(Controller)是MVC架构中的重要组成部分,主要用于处理用户的HTTP请求,并将请求转发到业务层(Service)进行处理。以下是Spring Boot控制层中常用的语法和相关注解:

  1. @Controller 和 @RestController
    @Controller:用于定义一个普通的控制器类,通常用于返回视图页面(如HTML页面)。在使用@Controller时,需要配合Model或ModelAndView来返回视图。
    java复制
    @Controller
    public class MyController {
    @RequestMapping("/hello")
    public String hello(Model model) {
    model.addAttribute("message", "Hello, World!");
    return "hello"; // 返回视图名称
    }
    }
    @RestController:用于定义一个返回JSON或XML数据的控制器类。它是一个组合注解,相当于@Controller + @ResponseBody,通常用于构建RESTful API。
    java复制
    @RestController
    public class MyRestController {
    @RequestMapping("/hello")
    public String hello() {
    return "Hello, World!";
    }
    }
  2. @RequestMapping
    用于定义请求的映射规则,可以指定请求的URL路径、请求方法(GET、POST、PUT、DELETE等)、请求头、请求参数等。
    java复制
    @RequestMapping(value = "/user", method = RequestMethod.GET)
    public String getUser() {
    return "User Data";
    }
    常用的快捷注解:
    @GetMapping:等同于@RequestMapping(method = RequestMethod.GET)。
    java复制
    @GetMapping("/user")
    public String getUser() {
    return "User Data";
    }
    @PostMapping:等同于@RequestMapping(method = RequestMethod.POST)。
    java复制
    @PostMapping("/user")
    public String createUser() {
    return "User Created";
    }
    @PutMapping:等同于@RequestMapping(method = RequestMethod.PUT)。
    java复制
    @PutMapping("/user")
    public String updateUser() {
    return "User Updated";
    }
    @DeleteMapping:等同于@RequestMapping(method = RequestMethod.DELETE)。
    java复制
    @DeleteMapping("/user")
    public String deleteUser() {
    return "User Deleted";
    }
  3. @RequestParam
    用于绑定请求参数到方法的参数上。
    java复制
    @GetMapping("/user")
    public String getUser(@RequestParam String name, @RequestParam int age) {
    return "Name: " + name + ", Age: " + age;
    }
    如果参数是可选的,可以设置required = false,并提供默认值:
    java复制
    @GetMapping("/user")
    public String getUser(@RequestParam(required = false, defaultValue = "Guest") String name) {
    return "Name: " + name;
    }
  4. @PathVariable
    用于绑定URL中的占位符到方法的参数上。
    java复制
    @GetMapping("/user/{id}")
    public String getUserById(@PathVariable("id") int userId) {
    return "User ID: " + userId;
    }
  5. @RequestBody
    用于接收请求体中的JSON或XML数据,并将其自动转换为Java对象。
    java复制
    @PostMapping("/user")
    public String createUser(@RequestBody User user) {
    return "User Name: " + user.getName() + ", Age: " + user.getAge();
    }
  6. @ResponseBody
    用于将方法的返回值直接作为响应体返回给客户端。通常与@Controller一起使用。
    java复制
    @Controller
    public class MyController {
    @RequestMapping("/hello")
    @ResponseBody
    public String hello() {
    return "Hello, World!";
    }
    }
  7. @RequestHeader
    用于获取请求头中的信息。
    java复制
    @GetMapping("/user")
    public String getUser(@RequestHeader("User-Agent") String userAgent) {
    return "User Agent: " + userAgent;
    }
  8. @RequestPart
    用于接收Multipart请求中的文件或数据。
    java复制
    @PostMapping("/upload")
    public String uploadFile(@RequestPart("file") MultipartFile file) {
    return "File uploaded: " + file.getOriginalFilename();
    }
  9. @ResponseStatus
    用于指定方法的HTTP状态码。
    java复制
    @GetMapping("/error")
    @ResponseStatus(HttpStatus.NOT_FOUND)
    public String handleError() {
    return "Error Page";
    }
  10. @ExceptionHandler
    用于定义全局异常处理器,捕获并处理特定类型的异常。
    java复制
    @ControllerAdvice
    public class GlobalExceptionHandler {
    @ExceptionHandler(Exception.class)
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public String handleException(Exception e) {
    return "Error: " + e.getMessage();
    }
    }
    这些注解和语法是Spring Boot控制层开发中常用的工具,通过合理使用它们,可以方便地处理各种HTTP请求和响应。
posted @ 2025-02-08 12:48  软工李文轩  阅读(66)  评论(0)    收藏  举报