【整理】controller中常用注解

目录

  • [1. @Controller](#1. @Controller)
  • [2. @RestController](#2. @RestController)
  • [3. @RequestMapping](#3. @RequestMapping)
  • [4. @RequestParam](#4. @RequestParam)
  • [5. @PathVariable](#5. @PathVariable)
  • [6. @ModelAttribute](#6. @ModelAttribute)

1. @Controller

@Controller用于标识一个类为Spring MVC的控制器。这个类的方法可以用于http请求,并返回视图或数据

2. @RestController

@RestController=@Controller+@ResponseBody,用于RESTful风格的控制器。这个类的方法可以用于返回JSON或者XML格式的数据

3. @RequestMapping

@RequestMapping用来指定请求的URL路径、HTTP方法以及其他请求条件。

java 复制代码
@Controller
public class MyController {
    // 处理GET请求
    //              指定请求路径         指定请求方法                 指定请求包含参数
    //请求url:http://localhost:8080/greeting?type=example
    @RequestMapping(value = "/greeting", method = RequestMethod.GET, params = "type=example")
    public String greeting() {
    		return "greeting";
    }
}

@GetMapping、@PostMapping、@PutMapping、@DeleteMapping这些注解分别等同于指定了HTTP方法GET、POST、PUT和DELETE的@RequestMapping注解。

4. @RequestParam

@RequestParam用于将请求参数绑定到方法参数上。

java 复制代码
@Controller
public class MyController {
    // 处理GET请求,并从请求中提取参数
    @RequestMapping(value = "/greet", method = RequestMethod.GET)
    public String greet(
    //           指定请求参数名称   参数不必须       默认值
    @RequestParam(name = "name", required = false, defaultValue = "Guest") String name
    ) {
        return "greet:"+name;
    }
}

5. @PathVariable

@PathVariable用于将URL中的占位符参数绑定到方法参数上。

java 复制代码
@RestController
public class MyController {
 	 @GetMapping("/users/{userId}")
    public String getUserById(@PathVariable("userId") String userId) {
        return "User ID: " + userId;
    }
}

6. @ModelAttribute

@ModelAttribute用于将请求参数绑定到模型对象上,并将该对象添加到模型中,以便在视图中使用。

示例

java 复制代码
@Controller
public class MyController {
    @RequestMapping("/")
    public String index() {
        return "user";
    }
    // 处理GET请求,返回表单页面
    @RequestMapping(value = "/userForm", method = RequestMethod.GET)
    public String showForm(Model model) {
        model.addAttribute("user", new User());
        return "user";
    }
    // 处理POST请求,接收表单提交的数据
    @RequestMapping(value = "/submitForm", method = RequestMethod.POST)
    public String submitForm(@ModelAttribute("user") User user, Model model) {
        model.addAttribute("message", "User submitted: " + user.getName());
        return "user";
    }
}

User类

java 复制代码
public class User {
    private String name;
    private String email;
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
}

user.html

html 复制代码
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>User Form</h1>
<form action="/submitForm" method="post">
    <label for="name">Name:</label>
    <input type="text" id="name" name="name" required>
    <br>
    <button type="submit">Submit</button>
</form>
<div>
    <h2>Message:</h2>
    <p th:text="${message}"></p>
</div>
</body>
</html>
相关推荐
fouryears_234177 小时前
Spring,Spring Boot 和 Spring MVC 的关系以及区别
java·spring boot·spring·mvc
板板正8 小时前
SpringAI——提示词(Prompt)、提示词模板(PromptTemplate)
java·spring boot·ai·prompt
板板正9 小时前
SpringAI——对话记忆
java·spring boot·ai
皮皮林55110 小时前
为什么 SpringBoot 宁可挨骂也要干掉 spring.factories?
spring boot
midsummer_woo11 小时前
基于springboot+vue+mysql工程教育认证的计算机课程管理平台(源码+论文)
vue.js·spring boot·mysql
小马爱打代码12 小时前
Spring Boot 监控:AOP vs Filter vs Java Agent
spring boot·监控
摸鱼仙人~12 小时前
Spring Boot 参数校验:@Valid 与 @Validated
java·spring boot·后端
小沈同学呀15 小时前
Spring Boot 中 META-INF 的作用与功能详解
java·spring boot·后端
欲儿16 小时前
LiteCloud超轻量级网盘项目基于Spring Boot
java·spring boot·后端·轻量级网盘项目
livemetee16 小时前
springboot 整合spring-kafka客户端:SASL_SSL+PLAINTEXT方式
spring boot·spring·kafka