SpringMVC 中的常用注解和用法

目录

前言:

1.@RequestMapping

2.@RequestParam

3.@RequestBody

4.@PathVariable

5.@RestController(返回页面)

6.@Controller(返回视图)

7.@CookieValue

8.@SessionAttribute


前言:

MVC是⼀种架构设计模式,也⼀种思想,⽽SpringMVC是对MVC思想的具体实现.除此之外,Spring MVC还是⼀个Web框架.

总结来说,Spring MVC是⼀个实现了MVC模式的We框架


1.@RequestMapping

@RequestMapping 是Spring Web MVC应⽤程序中最常被⽤到的注解之⼀,它是⽤来注册接⼝的路由映射的

路由映射 :当⽤⼾访问⼀个URL时,将⽤⼾的请求对应到程序中某个类的某个⽅法的过程就叫路由映射

@RequestMapping既可修饰类,也可以修饰⽅法,当修饰类和⽅法时,访问的地址是类路径+⽅法路径

@RequestMapping标识⼀个类:设置映射请求的请求路径的初始信息

@RequestMapping标识⼀个⽅法:设置映射请求请求路径的具体信息

java 复制代码
@RequestMapping("/user")
@RestController
public class UserController {
    @RequestMapping("/sayHi")
    public String sayHi(){
        return "hello,Spring MVC";
    }
}

访问地址:http://127.0.0.1:8080/user/sayHi

@RequestMapping 的URL路径也可以是多层路径,最终访问时,依然是类路径+⽅法路径

java 复制代码
@RequestMapping("/user/m1")
@RestController
public class UserController {
    @RequestMapping("/say/hi")
    public String sayHi(){
        return "hello,Spring MVC";
    }
}

访问路径:http://127.0.0.1:8080/user/m1/say/hi


2.@RequestParam

用于将请求参数绑定到方法参数上(后端参数重命名,传递集合等)

java 复制代码
@Controller
public class MyController {
 
    @RequestMapping("/greet")
    public String greet(@RequestParam("name") String name) {
        // Method logic using name parameter
        return "greetPage";
    }
}

使用@RequestParam 注解的方法参数默认为必填参数

可以使用 required 属性将@RequestParam配置为可选参数:

java 复制代码
@Controller
public class MyController {
 
    @RequestMapping("/greet")
    public String greet(@RequestParam(value = "name2", required = false) String name) {
        // Method logic using name parameter
        return "greetPage";
    }
}

3.@RequestBody

用于将 HTTP 请求体中的数据绑定到控制器方法的参数上,即获取 POST 请求中的数据并映射到方法参数。它通常用于处理 JSON 或 XML 格式的请求体数据

java 复制代码
@Controller
@RequestMapping("/example")
public class ExampleController {

    @RequestMapping(value = "/addUser", method = RequestMethod.POST)
    @ResponseBody
    public String addUser(@RequestBody User user) {
        // 处理用户数据
        return "User added successfully!";
    }
}

在上述示例代码中,@RequestBody 用于将 HTTP 请求体中的数据转换成 User 对象,并将其作为参数传递给 addUser() 方法进行处理


4.@PathVariable

path variable:路径变量

和字⾯表达的意思⼀样,这个注解主要作⽤在请求URL路径上的数据绑定,默认传递参数写在URL上,SpringMVC就可以获取到

java 复制代码
@RequestMapping("/m8/{id}/{name}")
public String method8(@PathVariable Integer id, @PathVariable("name") String
userName){
    return "解析参数id:"+id+",name:"+userName;
}

使⽤浏览器发送请求:http://127.0.0.1:8080/param/m8/5/zhangsan


5.@RestController(返回页面)

其方法的返回值会被直接写入 HTTP 响应体中,而不是被视图解析器解析为视图。通常返回的是 JSON 或 XML 数据

java 复制代码
@RestController
@RequestMapping("/example")
public class ExampleController {

    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String hello() {
        return "Hello, World!";
    }
}

6.@Controller(返回视图)

在方法中直接返回对象时,Spring MVC 会将其作为模型数据传递给视图解析器,然后解析为具体的视图

java 复制代码
@Controller
public class MyController {
 
    @RequestMapping("/hello")
    public String hello() {
        return "hello.html";
    }
    //返回html页面
}

当在类注解中加上 @ResponseBody 时,返回的为数据而不是页面

@RestController=@Controller (返回视图)+ @ResponseBody(返回数据)

java 复制代码
@Controller
public class MyController {
 
    @ResponseBody 
    @RequestMapping("/hello")
    public String hello() {
        return "hello";
    }
    //返回"hello"这个字符串
}

7.@CookieValue

简洁获取Cookie(一次只能获取一次cookie信息)

java 复制代码
@RequestMapping("/getCookie")
public String cookie(@CookieValue("bite") String bite) {
    return "bite:" + bite;
}

8.@SessionAttribute

@SessionAttributes 注解用于指定哪些模型属性需要存储在会话

java 复制代码
@RequestMapping("/getSess2")
public String sess2(@SessionAttribute(value = "username",required = false)
String username) {
    return "username:"+username;
}
相关推荐
赵广陆22 分钟前
Spring AI的聊天模型
java·人工智能·spring
IT 小阿姨(数据库)27 分钟前
K8s v1.24.17 完整搭建文档(CentOS7 + containerd1.6.33 + Calico)
java·容器·kubernetes
lhldsg1 小时前
全民健身解决方案:从共享球场到智能运营的技术实践
java·大数据·开发语言·需求分析
vipxieliang1 小时前
ValidX时间注解完全指南:10种时间验证注解详解
java·后端
雨辰AI1 小时前
openGauss 生产运维避坑指南|适配信创项目改造核心难点
java·运维·后端
名字还没想好☜2 小时前
Java 21 switch 模式匹配实战:sealed 接口 + record 替代 if-instanceof 链
java·人工智能·后端·python·spring
devilnumber2 小时前
Java 30 组高频技术 / 知识点多角度对比
java·开发语言
摇滚侠2 小时前
《SpringBoot 3:入门与应用实战》第 6 章 Spring Boot 最佳实践 阅读笔记 10
java·spring boot·笔记
gugucoding2 小时前
57. 【Java】日志框架:SLF4J与Logback
java·开发语言·logback
今天的砖头有点烫手啊2 小时前
JVM 调优实战:从 GC 日志到参数优化,一次完整排查
java·jvm