SpringMVC中的常用注解和用法举例详解

 更新时间:2024年08月23日 11:01:28   作者:深鱼~  
在Spring和SpringMVC中,注解的使用大大简化了配置,提高了代码的可读性和可维护性,这篇文章主要给大家介绍了关于SpringMVC中常用注解和用法的相关资料,需要的朋友可以参考下

前言:

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

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

1.@RequestMapping

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

路由映射:当⽤⼾访问⼀个URL时,将⽤⼾的请求对应到程序中某个类的某个⽅法的过程就叫路由映射
@RequestMapping既可修饰类,也可以修饰⽅法,当修饰类和⽅法时,访问的地址是类路径+⽅法路径

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

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

@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路径也可以是多层路径,最终访问时,依然是类路径+⽅法路径

@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

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

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

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

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

@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 格式的请求体数据

@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就可以获取到

@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 数据

@RestController
@RequestMapping("/example")
public class ExampleController {

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

6.@Controller(返回视图)

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

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

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

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

@Controller
public class MyController {
 
    @ResponseBody 
    @RequestMapping("/hello")
    public String hello() {
        return "hello";
    }
    //返回“hello”这个字符串
}

7.@CookieValue

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

@RequestMapping("/getCookie")
public String cookie(@CookieValue("bite") String bite) {
    return "bite:" + bite;
}

8.@SessionAttribute

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

@RequestMapping("/getSess2")
public String sess2(@SessionAttribute(value = "username",required = false)
String username) {
    return "username:"+username;
}

总结 

到此这篇关于SpringMVC中常用注解和用法举例详解的文章就介绍到这了,更多相关SpringMVC常用注解用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java生成短8位UUID的实现方案

    Java生成短8位UUID的实现方案

    在Java中,UUID通常用于生成全局唯一的标识符,标准的UUID是128位的,由32个十六进制数字组成,并通过特定的算法保证其在全球范围内的唯一性,本文给大家介绍了一个简单的Java方法,用于生成一个较短的8位UUID,需要的朋友可以参考下
    2025-01-01
  • java多线程编程之向线程传递数据的三种方法

    java多线程编程之向线程传递数据的三种方法

    在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别。由于线程的运行和结束是不可预料的,因此,在传递和返回数据时就无法象函数一样通过函数参数和return语句来返回数据
    2014-01-01
  • 浅谈java对象转json,数字精确出现丢失问题

    浅谈java对象转json,数字精确出现丢失问题

    下面小编就为大家带来一篇浅谈java对象转json, 数字精确出现丢失问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Java直接内存和堆内存的关系

    Java直接内存和堆内存的关系

    在Java编程中,内存管理是一个重要的话题,本文介绍了Java中两种主要内存类型:堆内存和直接内存,堆内存是JVM管理的主要内存区域,感兴趣的朋友跟随小编一起看看吧
    2024-09-09
  • JSP 开发之hibernate的hql查询多对多查询

    JSP 开发之hibernate的hql查询多对多查询

    这篇文章主要介绍了JSP 开发之hibernate的hql查询多对多查询的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-09-09
  • 一文带你掌握Java8中Lambda表达式 函数式接口及方法构造器数组的引用

    一文带你掌握Java8中Lambda表达式 函数式接口及方法构造器数组的引用

    Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等
    2021-10-10
  • SpringBoot整合MyBatis-Plus的示例代码

    SpringBoot整合MyBatis-Plus的示例代码

    这篇文章主要介绍了SpringBoot整合MyBatis-Plus的示例代码,使用 MyBatis-Plus 可以减少大量的开发时间,单表的增删改查可以不用写 sql 语句,本文主要介绍整合需要主要事项,需要的朋友可以参考下
    2022-03-03
  • Mybatis返回map集合时,列的顺序与select不一致问题

    Mybatis返回map集合时,列的顺序与select不一致问题

    这篇文章主要介绍了Mybatis返回map集合时,列的顺序与select不一致问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • 基于SpringBoot开机启动与@Order注解

    基于SpringBoot开机启动与@Order注解

    这篇文章主要介绍了SpringBoot开机启动与@Order注解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 基于SpringBoot2的Shiro最简配置操作(两个文件)

    基于SpringBoot2的Shiro最简配置操作(两个文件)

    这篇文章主要介绍了基于SpringBoot2的Shiro最简配置操作(两个文件),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01

最新评论