Spring MVC 请求映射路径的配置,实现前后端交互

news2025/2/27 17:27:47

目录

一、什么是请求映射路径

二、Spring MVC的请求参数

三、日期类型的参数传递

四、Spring MVC如何响应 JSON 数据


一、什么是请求映射路径

在Spring MVC中,请求映射路径(Request Mapping Path)是指与特定的请求处理方法关联的URL路径。通过在Spring MVC的控制器类上使用注解(如@RequestMapping)或配置(如<mvc:request-mapping>)来指定请求映射路径,可以将不同的HTTP请求映射到相应的处理方法上。

例如,如果你在控制器类上使用@RequestMapping("/hello")注解,那么当接收到路径为"/hello"的HTTP请求时,Spring MVC将自动调用该控制器类上与该路径匹配的方法来处理该请求。

请求映射路径可以包含占位符和通配符,以便将多个不同的URL路径映射到同一个处理方法上。例如,@RequestMapping("/users/{id}")可以将路径为"/users/1"、"/users/2"等所有以"/users/"开头的请求映射到同一个处理方法上。

在Spring MVC中,请求映射路径与处理方法参数的注解(如@PathVariable@RequestParam等)一起使用,可以方便地获取请求中的参数值。

二、Spring MVC的请求参数

在Spring MVC中,请求参数可以通过多种方式传递给控制器。以下是一些常见的请求参数类型:

简单类型(Simple types):例如,字符串(String)、整数(Integer)、布尔值(Boolean)等。可以直接作为请求参数。

@RequestMapping("/example")
public String example(@RequestParam String name, Model model) {
    model.addAttribute("name", name);
    return "example";
}

复杂类型(Complex types):例如,对象、数组、集合等。可以通过使用@RequestBody注解或者@RequestParam注解来接收。

使用@RequestBody接收JSON数据:

@RequestMapping(value = "/example", method = RequestMethod.POST)
public String example(@RequestBody ExampleObject exampleObject) {
    // 处理exampleObject
    return "example";
}

使用@RequestParam接收多个参数:

@RequestMapping("/example")
public String example(@RequestParam("param1") String param1, @RequestParam("param2") Integer param2) {
    // 处理param1和param2
    return "example";
}

文件上传(File upload):可以使用@RequestParam("file") MultipartFile file来接收文件。

@RequestMapping(value = "/example", method = RequestMethod.POST)
public String example(@RequestParam("file") MultipartFile file) {
    // 处理文件
    return "example";
}

多个参数(Multiple parameters):如果有多个参数,可以将它们放在一个类中,然后将这个类作为参数传递。

public class ExampleParameters {
    private String param1;
    private Integer param2;
    // getters and setters
}

然后在控制器中使用:

@RequestMapping("/example")
public String example(@RequestBody ExampleParameters parameters) {
    // 处理parameters的param1和param2
    return "example";
}

路径变量(Path variables):如果URL包含路径变量,可以使用@PathVariable来接收。例如,/user/{id}中的{id}可以使用@PathVariable("id") String id来接收。

@RequestMapping("/user/{id}")
public String user(@PathVariable("id") String id) {
    // 处理id
    return "user";
}

三、日期类型的参数传递

在Spring MVC中,日期类型的参数可以通过多种方式进行传递。最常见的方式是通过表单的<input type="date">字段或者通过JSON对象。

通过HTML表单传递日期

如果你的日期参数通过HTML表单提交,例如使用<input type="date">,Spring会自动将该值转换为java.util.Date类型。

例如,你的表单可能如下:

<form method="post" action="/your-endpoint">
    <input type="date" name="yourDate">
    <input type="submit" value="Submit">
</form>

在你的Controller中,你可以直接接收一个java.util.Date类型的参数:

@PostMapping("/your-endpoint")
public String yourMethod(@RequestParam("yourDate") Date date) {
    // ... do something with date ...
    return "your-view-name";
}

四、Spring MVC如何响应 JSON 数据

Spring MVC 是一个非常强大的框架,它允许我们以模块化和灵活的方式开发 Web 应用程序。在 Spring MVC 中,我们可以很容易地处理和响应 JSON 数据。

下面是一个简单的例子,展示了如何在 Spring MVC 中创建一个控制器(Controller)来响应 JSON 数据。

首先,确保你的项目中已经包含了 Spring MVC 的依赖。

创建一个 Java 类来表示你要传输的 JSON 数据。这个类可以是一个简单的 POJO(Plain Old Java Object),也可以是一个复杂的 Java Bean。例如:

public class Person {
    private String name;
    private int age;

    // Getters and Setters
    // ...
}

创建一个 Spring MVC 控制器(Controller)。在这个控制器中,你可以使用 @RequestMapping 注解来指定请求的 URL,并使用 @ResponseBody 注解来指定返回的数据类型为 JSON。例如:

import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/persons")
public class PersonController {

    // 使用 @RequestBody 注解来接收 JSON 数据
    @PostMapping("/create")
    public Person createPerson(@RequestBody Person person) {
        // 在这里处理 person 数据,并创建新的 Person 对象或执行其他操作
        // ...
        return person;
    }

    // 使用 @RequestBody 注解来接收 JSON 数据,并通过自定义的 HttpMessageConverter 将 JSON 转换为 Person 对象
    @PostMapping("/createFromJsonString")
    public Person createPersonFromJsonString(@RequestBody String jsonString) {
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            Person person = objectMapper.readValue(jsonString, Person.class);
            // 在这里处理 person 数据,并创建新的 Person 对象或执行其他操作
            // ...
            return person;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }
}

在你的 web.xml 文件中配置 DispatcherServlet。这个 Servlet 是 Spring MVC 的核心部分,负责接收和分发请求。例如:

<web-app>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/applicationContext.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

在 applicationContext.xml 中配置 Spring MVC 的组件。例如:

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="messages"/>
</bean>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.FixedLocaleResolver">
    <property name="defaultLocale" value="en"/>
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
</bean>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/990368.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

改善购买后客户体验的 7 种方法

购买后的客户体验涉及客户从您的品牌购买产品后的互动和体验。客户体验从第一个接触点开始&#xff0c;并影响他们的购买决策。但购买后的客户体验有助于留住客户并建立品牌忠诚度。这就是为什么它是您公司发展的核心。贝恩公司&#xff08;Bain & Company&#xff09;的研…

品牌渠道中的价值治理思路介绍

为什么要治理渠道价格&#xff1f; 价格的高低会影响产品的销量&#xff0c;间接影响品牌的发展&#xff0c;同时低价会存在传播性&#xff0c;不低价的店铺会受低价店铺的影响&#xff0c;为了销量会选择低价跟价&#xff0c;当低价链接不断增加&#xff0c;那渠道势必会越来…

简单聊聊Innodb崩溃恢复那些事

简单聊聊Innodb崩溃恢复那些事 Buffer Pool 整体架构Buffer Pool 管理策略redo 日志redo log fileMini-TransactionCheckPoint部分写出问题 崩溃恢复 undo日志整体结构日志格式记录格式purge回滚 总结额外参考 本文想用简单精炼的语言将Innodb崩溃恢复那些事情好好拾到拾到&…

轻松搭建自己本地专有的ChatGPT

近期发现了一个项目&#xff0c;它的前身是ChatGLM&#xff0c;在我之前的博客中有关于ChatGLM的部署过程&#xff0c;本项目在前者基础上进行了优化&#xff0c;可以基于当前主流的LLM模型和庞大的知识库&#xff0c;实现本地部署自己的ChatGPT&#xff0c;并可结合自己的知识…

Web of Science怎么用有哪些功能

Web of Science你不可不知道的数据库。作为全球最大的学术搜索引擎之一&#xff0c;Web of Science涵盖了众多学科领域&#xff0c;为科研人员提供了全面、高品质的学术资源。本文将详细介绍Web of Science的主要功能及使用步骤&#xff0c;希望可以帮助您更好地利用这一强大的…

揭秘人物稿件写作技巧:如何让你的文字生动起来?

如何写出一篇高质量的人物稿件&#xff0c;让读者沉浸其中&#xff0c;感受到稿件中人物的生动形象呢&#xff1f;本文伯乐网络传媒将从以下几个方面进行探讨&#xff1a;选材、结构、语言和深度。 一、选材&#xff1a;选取热门而有吸引力的话题或爆点 人物稿件的选材至关重要…

React 类式组件

0x00 前言 CTF 加解密合集CTF Web合集网络安全知识库 文中工具皆可关注 皓月当空w 公众号 发送关键字 工具 获取 0x01 类式组件 1.创建类式组件 这里需要注意的是需要继承一下React.Component class MyComponent extends React.Component{}实现render方法 class MyCompone…

一文带你抢先了解腾讯云AI代码助手

背景 随着近年来人工智能技术的广泛应用&#xff0c;各个领域和行业纷纷探索如何利用AI辅助生产与开发。软件开发者也在努力提升开发体验&#xff0c;借助AI的能力进行编码、调试、测试和评审。Github Copilot、Codeium、Amazon CodeWhisperer等都是这个领域的杰出代表。为了满…

关于测试的思考-质量保障体系

一、质量保障体系 1、质量保障体系说明 2、如何构建质量保障体系 3、质量保障案例 二、敏捷开发下的软件测试 1、互联网公司敏捷流程的实践 2、提升测试上线质量&#xff08;质量右移&#xff09;&#xff1a; 灰度方式&#xff1a;根据机器&#xff0c;根据用户画像&#xff…

RTPV70-30、RTPV72-30电磁比例插装阀放大器

RTSP08-20、RTSP10-20、RTSP12-20、RTSP08-22、RTHSP09-30、RTPV70-30、RTPV72-30电磁比例插装阀额定电磁线圈适合连续工作&#xff0c;应急手控选件&#xff0c;外置式比例放大器&#xff0c;效湿式衔铁结构&#xff0c;可选IP69K防水E型线圈&#xff0c;工业通用阀孔。

vcpkg方式安装zlmediakit

主要参考: https://github.com/ZLMediaKit/ZLMediaKit/wiki/vcpkg%E6%96%B9%E5%BC%8F%E5%AE%89%E8%A3%85zlmediakit vcpkg的相关配置不在本文论述。很多库或源码下载不下来&#xff0c;通过第三方下载后放在download目录下&#xff0c;名称要和vcpkg期望的一致。可通过云服务器…

“五度晟企通”企业发展服务平台正式发布,帮扶企业行稳致远!

在数字中国建设的大背景下&#xff0c;“五度易链”以企业实际发展需求为牵引&#xff0c;以帮扶企业行稳致远为目标&#xff0c;基于全体量产业大数据&#xff0c;运用NLP、AI等新一代信息技术&#xff0c;打造了数字化ToB企业发展服务平台“五度晟企通”&#xff0c;旨在以数…

Java重要知识点

Java JVM 参考&#xff1a;https://www.kuangstudy.com/bbs/1557549426359590914 请你谈谈你对jvm的理解&#xff1f;Java8虚拟机和之前的变化更新&#xff1f;什么是OOM&#xff1f;什么是栈溢出StackOverFlowError&#xff1f;怎么分析&#xff1f;jvm的常见调优参数有哪些&…

大数据如何应用于业务和决策?_光点科技

大数据已经成为当今商业和决策制定中的一个关键因素。随着互联网的普及和技术的不断进步&#xff0c;我们生产的数据量呈指数级增长。这些数据不仅包括来自社交媒体、传感器、移动设备等各种来源的信息&#xff0c;还包括过去难以存储和分析的结构化和非结构化数据。如何利用这…

spring boot 使用AOP+自定义注解+反射实现操作日志记录修改前数据和修改后对比数据,并保存至日志表

一、添加aop starter依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency>二&#xff1a;自定义字段翻译注解。&#xff08;修改功能时&#xff0c;需要显示如…

高压放大器在制备功能材料中的应用

高压放大器在制备功能材料中具有广泛的应用。功能材料是一类具有特殊性能和功能的材料&#xff0c;可以在各个领域中发挥重要作用&#xff0c;如能源存储、电子、光电、催化等。高压放大器在制备功能材料的研究和应用中起到关键的作用&#xff0c;本文将介绍高压放大器在制备功…

快速查询快递单号物流,跟踪物流详情

如果你是一位经常网购的人&#xff0c;那么你一定对快递单号物流查询的过程不陌生。每次收到快递&#xff0c;我们都会在快递官网或者第三方平台上输入快递单号进行查询&#xff0c;整个过程比较繁琐。但是&#xff0c;现在有一款名为“固乔快递查询助手”的软件&#xff0c;可…

WRFDA资料同化实践技术应用

数值预报已经成为提升预报质量的重要手段&#xff0c;而模式初值质量是决定数值预报质量的重要环节。资料同化作为提高模式初值质量的有效方法&#xff0c;成为当前气象、海洋和大气环境和水文等诸多领域科研、业务预报中的关键科学方法。资料同化新方法的快速发展&#xff0c;…

向量数据库Milvus Cloud 核心组件Knowhere升级,支持 GPU 索引和 Cosine 相似性类型

熟悉我们的朋友都知道,在 Milvus Cloud和 Zilliz Cloud 中,有一个至关重要的组件——Knowhere。 Knowhere 是什么?如果把向量数据库整体看作漫威银河护卫队宇宙,那么 Knowhere 就是名副其实的总部,它的主要功能是对向量精确搜索其最近邻或通过构建索引进行低延迟、近似…

解决Microsoft Edge无法正常运行的有效方案分享!

Microsoft Edge打不开或不能加载网页是用户在Windows 10、Android、Mac和iOS设备上的网络浏览器上遇到的许多错误之一。其他Microsoft Edge问题可能包括浏览器窗口和选项卡冻结、网站崩溃、互联网连接错误消息以及丢失Microsoft Edge书签、收藏夹、密码和收藏。 Microsoft Edg…