【整理】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>
相关推荐
小林学习编程2 小时前
Springboot + vue + uni-app小程序web端全套家具商场
前端·vue.js·spring boot
ladymorgana2 小时前
【Spring boot】tomcat Jetty Undertow对比,以及应用场景
spring boot·tomcat·jetty
IT_10242 小时前
Spring Boot项目开发实战销售管理系统——系统设计!
大数据·spring boot·后端
DCTANT3 小时前
【原创】国产化适配-全量迁移MySQL数据到OpenGauss数据库
java·数据库·spring boot·mysql·opengauss
Touper.3 小时前
SpringBoot -- 自动配置原理
java·spring boot·后端
喜欢敲代码的程序员5 小时前
SpringBoot+Mybatis+MySQL+Vue+ElementUI前后端分离版:项目搭建(一)
spring boot·mysql·elementui·vue·mybatis
华子w9089258596 小时前
基于 SpringBoot+Vue.js+ElementUI 的 “花开富贵“ 花园管理系统设计与实现7000字论文
vue.js·spring boot·elementui
小时候的阳光7 小时前
SpringBoot3 spring.factories 自动配置功能不生效?
spring boot·spring·失效·factories·imports
大只鹅7 小时前
Springboot3整合ehcache3缓存--XML配置和编程式配置
spring boot·缓存
执笔诉情殇〆8 小时前
springboot集成达梦数据库,取消MySQL数据库,解决问题和冲突
数据库·spring boot·mysql·达梦