【整理】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>
相关推荐
咖啡啡不加糖17 分钟前
RabbitMQ 消息队列:从入门到Spring Boot实战
java·spring boot·rabbitmq
代码老y3 小时前
Spring Boot项目中大文件上传的高级实践与性能优化
spring boot·后端·性能优化
Xiao_zuo_ya4 小时前
SpringBoot-Freemarker导出word
spring boot·word
kangkang-5 小时前
PC端基于SpringBoot架构控制无人机(二):MavLink协议
java·spring boot·后端·无人机
麦兜*6 小时前
Spring Boot秒级冷启动方案:阿里云FC落地实战(含成本对比)
java·spring boot·后端·spring·spring cloud·系统架构·maven
魂兮归乡7 小时前
B2、进度汇报(— 25/06/16)
经验分享·spring boot·ai·vue·团队开发·课程设计·web app
Q_Q5110082858 小时前
python的保险业务管理与数据分析系统
开发语言·spring boot·python·django·flask·node.js·php
风象南9 小时前
SpringBoot应用开机自启动与进程守护配置
java·spring boot·后端
顽疲9 小时前
从零用java实现 小红书 springboot vue uniapp(13)模仿抖音视频切换
java·vue.js·spring boot
nightunderblackcat10 小时前
新手向:实现ATM模拟系统
java·开发语言·spring boot·spring cloud·tomcat·maven·intellij-idea