SpringMVC请求与响应

SpringMVC请求与响应

请求映射

在 SpringMVC 中,请求映射(Request Mapping)是核心机制之一,它负责将客户端发送的 HTTP 请求与控制器(Controller)中的具体方法建立关联,是请求进入后端处理的 "入口导航"。

  1. 基础注解
    @RequestMapping 是 SpringMVC 中定义请求映射的基础注解,可用于类级别和方法级别,作用是指定一个 HTTP 请求的路径、方法、参数等条件,当请求满足条件时,会被映射到对应的控制器方法。

    标注在类上:为当前类所有方法的请求路径指定「父路径」,缩小映射范围。

    标注在方法上:指定具体的请求路径,与类上的路径共同组成完整路径。

    路径也可以不编写,/ 表示应用的根目录开始

  2. 派生注解

    为了简化method属性的使用,Spring4.3 之后提供了一系列派生注解,它们本质是@RequestMapping结合特定method的快捷方式:

派生注解 对应 HTTP 方法 等价于
@GetMapping GET(查询数据) @RequestMapping(method = RequestMethod.GET)
@PostMapping POST(提交数据) @RequestMapping(method = RequestMethod.POST)
@DeleteMapping DELETE(删除数据) @RequestMapping(method = RequestMethod.DELETE)
  1. 路径变量(@PathVariable
    当请求路径中包含动态参数时,可通过@PathVariable注解获取路径中的变量
    在@RequestMapping的路径中,用 {变量名} 定义路径变量,在方法参数中,用 @PathVariable("变量名") 绑定变量值(变量名可省略,前提是参数名与路径变量名一致)。
  2. 请求参数映射(@RequestParam
    用于获取 HTTP 请求中的参数,并绑定到方法参数。
    value/name:指定请求参数名(参数名与变量名不一致时使用)。
    required:是否必填(默认true,必填时若参数不存在则抛 400 错误)。
    defaultValue:默认值(设置后required自动为false)。
  3. 请求体映射(@RequestBody
    当客户端发送包含数据的请求体时,@RequestBody 可以将其自动转换为对应的 Java 对象,无需手动解析,需配合消息转换器,如 Jackson 处理 JSON.
    @ResponseBody 是一个用于处理控制器方法返回值的注解,主要作用是将方法的返回值直接作为 HTTP 响应体返回给客户端,而不是通过视图解析器渲染成页面。

下面是代码演示:

java 复制代码
	@RequestMapping("/save")
    @ResponseBody
    public String save(String username,String password){
        System.out.println("save方法执行了........."+username+"......"+password);
        return "success";
    }

路径变量用法

java 复制代码
    @PostMapping("/delete/{id}")
    @ResponseBody
    public String delete(@PathVariable Integer id){
        return "success";
    }

将数据封装在model中进行传参形式:

java 复制代码
package com.qcby.entity;

public class LoginUser {
    private String username;
    private String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "LoginUser{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}
java 复制代码
    @RequestMapping("/save1")
    @ResponseBody
    public String save1(LoginUser loginUseruser){
        System.out.println("save1方法执行了............");
        return "success";
    }

数据响应

用于返回 JSON/XML 等数据,核心是通过 @ResponseBody 注解跳过页面解析,直接将数据转为响应体返回给客户端,而不是通过视图解析器渲染成页面。

简化用法:用 @RestController 注解替代 @Controller + @ResponseBody,类中所有方法默认返回数据(不跳转页面)。

下面是代码演示:

java 复制代码
    @DeleteMapping("/deleteBatch")
    @ResponseBody
    public Result deleteBatch(@RequestBody List<User> list){
        userService.deleteBatch(list);
        return Result.success();
    }
相关推荐
tg-zm8899967 分钟前
2025返利商城源码/挂机自动收益可二开多语言/自定义返利比例/三级分销理财商城
java·mysql·php·laravel·1024程序员节
X***C8628 分钟前
SpringBoot:几种常用的接口日期格式化方法
java·spring boot·后端
i***t91916 分钟前
Spring Boot项目接收前端参数的11种方式
前端·spring boot·后端
前端达人25 分钟前
你的App消息推送为什么石沉大海?看Service Worker源码我终于懂了
java·开发语言
小光学长37 分钟前
基于ssm的宠物交易系统的设计与实现850mb48h(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·前端·数据库
编程大师哥41 分钟前
vxe-table 透视表分组汇总及排序基础配置
java
8***84821 小时前
spring security 超详细使用教程(接入springboot、前后端分离)
java·spring boot·spring
o***74171 小时前
基于SpringBoot的DeepSeek-demo 深度求索-demo 支持流式输出、历史记录
spring boot·后端·lua
9***J6281 小时前
Spring Boot项目集成Redisson 原始依赖与 Spring Boot Starter 的流程
java·spring boot·后端
S***q1921 小时前
Rust在系统工具中的内存安全给代码上了三道保险锁。但正是这种“编译期的严苛”,换来了运行时的安心。比如这段代码:
开发语言·后端·rust