Springmvc常用的注解代码示例

2025-11-24 18:50

本文主要是介绍Springmvc常用的注解代码示例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《Springmvc常用的注解代码示例》本文介绍了SpringMVC中常用的控制器和请求映射注解,包括@Controller、@RequestMapping等,以及请求参数绑定注解,如@Request...

一、控制器与请求映射注解

1. @Controller

  • 作用:标识当前类为 SpringMVC 控制器,由 Spring 容器自动扫描管理。
  • 代码示例
@Controller // 标识此类为控制器
@RequestMappinandroidg("/user")
public class UserController {
    // 控制器方法...
}
  • 讲解:需配合配合 Spring 配置文件中开启组件扫描(<context:component-scan base-package="com.qcby"/>),否则才能使注解生效。

2. @RequestMappinphpg

  • 作用:映射请求 URL 与控制器方法的对应关系,可标注在类或方法上。
  • 代码示例php
@Controller
@RequestMapping("/user") // 类级路径(基础路径)
public class UserController {
    // 方法级路径,完整 URL 为 /user/save
    @RequestMapping(
        value = "/save", 
        method = RequestMethod.POST, // 限制请求方式为 POST
        params = "username" // 要求请求必须携带 username 参数
    )
    public String save() {
        System.out.println("用户保存成功");
        return "success";
    }
}
  • 讲解
    • 类级注解 + 方法级注解组合成完整请求路径(如 /user/save)。
    • method 属性指定允许的请求方式(GET/POST 等),不指定则允许所有方式。
    • params 属性用于校验请求参数,确保请求携带指定参数。

二、请求参数绑定注解

1. @RequestParam

  • 作用:解决请求参数名与方法参数名不一致的问题,强制绑定参数。
  • 代码示例
@RequestMapping("/find")
public String find(
    @RequestParam(
        value = "name", // 映射请求参数名(前端传递的参数名为 name)
        required = false, // 非必须传递,默认值为 true
        defaultValue = "guest" // 无参数时的默认值
    ) String username
) {
    System.out.println("用户名:" + username);
  php  return "success";
}
  • 讲解:若前端传递参数为 name=张三,通过 @RequestParam 可映射到方法参数 username

2. @RequestBody

  • 作用:获取请求体中的原始数据(如 jsON、XML 或表单数据),适用于 POST 请求。
  • 代码示例
@RequestMapping("/getBody")
public String getBody(@RequestBody String requestBody) {
    System.out.println("请求体内容:" + requestBody); // 输出原始请求数据
    return "success";
}
  • 讲解:常用于接收前端发送的 JSON 数据(需配合 Jackson 等 JSON 解析依赖),直接获取字符串形式的请求体。

3. @RequestHeader

  • 作用:获取 HTTP 请求头中的信息(如浏览器类型、Accept 格式等)。
  • 代码示例
@RequestMapping("/getHeader")
public String getHeader(@RequestHeader("User-Agent") String userAgent) {
    System.out.println("浏览器信息:" + userAgent); // 输出浏览器类型信息
    return "success";
}
  • 讲解:通过参数 value 指定请求头名称,可获取客户端的环境信息。

4. @CookieValue

  • 作用:获取请求中携带的 Cookie 值(如 JSESSIONID)。
  • 代码示例
@RequestMapping("/getCookie")
public String getCookie(@CookieValue("JSESSIONID") String sessionId) {
    System.out.println("会话 ID:" + sessionId); // 输出当前会话的 JSESSIONID
    return "success";
}
  • 讲解:用于获取客户端存储的 Cookie 数据,常用于会话跟踪。

5. @DateTimeFormat

  • 作用:指定日期类型参数的解析格式,解决字符串与 Date 类型的转换问题。
  • 代码示例
public class User {
    private String username;
    // 指定日期格式为 yyyy-MM-dd HH:mm:ss
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date birthday;
    // getter/setter 省略
}
  • 控制器方法
@RequestMapping("/saveUser")
public String saveUser(User user) {
    System.out.println("生日:" + user.getBirthday()); // 自动转换为 Date 类型
    return "success";
}
  • 讲解:前端传递 birthday=2023-10-01 12:00:00 时,会自动解析为 Date 对象。

三、其他常用注解(扩展)

1. @PathVariable(REST 风格)

  • 作用:获取 URL 路径中的参数(适用于 RESTful 接口)。
  • 代码示例
@RequestMapping("/user/{id}")
public String getUserById(@PathVariable("id") Integer userId) {
    System.out.println("用户 ID:" + userId); // 获取路径中的 id 参数
    return "success";
}
  • 讲解:请求 URL 为 /user/100 时,userId 会被赋值为 100。

2. @ResjavascriptponseBody

  • 作用:将方法返回值直接作为响应体返回(而非跳转视图),常用于 AJAX 请求。
  • 代码示例
@RequestMapping("/getJson")
@ResponseBody // 返回 JSON 数据,而非视图
public User getJson() {
    User user = new User();
    user.setUsername("张三");
    return user; // 需配合 Jackson 依赖,自动转换为 JSON
}
  • 讲解:需在 Spring 配置文件中开启 <mvc:annotation-driven/> 以支持 JSON 转换。

四、注解使用注意事项

  1. 路径冲突@RequestMapping 标注的路径需唯一,避免不同方法映射同一 URL。
  2. 参数校验@RequestParam 的 required=true 时,若前端未传参数会抛出异常,需注意处理。
  3. 日期转换优先级:自定义类型转换器(实现 Converter 接口)优先级高于 @DateTimeFormat
  4. 配置支持:所有注解需在 Spring 配置文件中开启 <mvc:annotation-driven/> 才能生效(自动注册处理器映射器和适配器)。

到此这篇关于Springmvc常用的注解代码示例的文章就介绍到这了,更多相关Springmvc注解内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!

这篇关于Springmvc常用的注解代码示例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1156264

相关文章

Java方法重载与重写之同名方法的双面魔法(最新整理)

《Java方法重载与重写之同名方法的双面魔法(最新整理)》文章介绍了Java中的方法重载Overloading和方法重写Overriding的区别联系,方法重载是指在同一个类中,允许存在多个方法名相同... 目录Java方法重载与重写:同名方法的双面魔法方法重载(Overloading):同门师兄弟的不同绝

MySQL中between and的基本用法、范围查询示例详解

《MySQL中betweenand的基本用法、范围查询示例详解》BETWEENAND操作符在MySQL中用于选择在两个值之间的数据,包括边界值,它支持数值和日期类型,示例展示了如何使用BETWEEN... 目录一、between and语法二、使用示例2.1、betwphpeen and数值查询2.2、be

python中的flask_sqlalchemy的使用及示例详解

《python中的flask_sqlalchemy的使用及示例详解》文章主要介绍了在使用SQLAlchemy创建模型实例时,通过元类动态创建实例的方式,并说明了如何在实例化时执行__init__方法,... 目录@orm.reconstructorSQLAlchemy的回滚关联其他模型数据库基本操作将数据添

Spring配置扩展之JavaConfig的使用小结

《Spring配置扩展之JavaConfig的使用小结》JavaConfig是Spring框架中基于纯Java代码的配置方式,用于替代传统的XML配置,通过注解(如@Bean)定义Spring容器的组... 目录JavaConfig 的概念什么是JavaConfig?为什么使用 JavaConfig?Jav

Java数组动态扩容的实现示例

《Java数组动态扩容的实现示例》本文主要介绍了Java数组动态扩容的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1 问题2 方法3 结语1 问题实现动态的给数组添加元素效果,实现对数组扩容,原始数组使用静态分配

Java中ArrayList与顺序表示例详解

《Java中ArrayList与顺序表示例详解》顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构,:本文主要介绍Java中ArrayList与... 目录前言一、Java集合框架核心接口与分类ArrayList二、顺序表数据结构中的顺序表三、常用代码手动

JAVA项目swing转javafx语法规则以及示例代码

《JAVA项目swing转javafx语法规则以及示例代码》:本文主要介绍JAVA项目swing转javafx语法规则以及示例代码的相关资料,文中详细讲解了主类继承、窗口创建、布局管理、控件替换、... 目录最常用的“一行换一行”速查表(直接全局替换)实际转换示例(JFramejs → JavaFX)迁移建

Spring Boot Interceptor的原理、配置、顺序控制及与Filter的关键区别对比分析

《SpringBootInterceptor的原理、配置、顺序控制及与Filter的关键区别对比分析》本文主要介绍了SpringBoot中的拦截器(Interceptor)及其与过滤器(Filt... 目录前言一、核心功能二、拦截器的实现2.1 定义自定义拦截器2.2 注册拦截器三、多拦截器的执行顺序四、过

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

JAVA线程的周期及调度机制详解

《JAVA线程的周期及调度机制详解》Java线程的生命周期包括NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING和TERMINATED,线程调度依赖操作系统,采用抢占... 目录Java线程的生命周期线程状态转换示例代码JAVA线程调度机制优先级设置示例注意事项JAVA线程