SSM框架学习-请求映射路径、请求参数、json数据传送参数以及日期型参数传递

news2024/12/29 11:01:58

1. 请求映射路径

在进行多人开发,每个人设置不同的请求路径,要解决冲突问题

设置模块名作为请求路径前缀

两种方式

  1. 方式一:
public class BookController {
    //请求路径映射
    @RequestMapping("/book/save")
    @ResponseBody
    public String save(){
        System.out.println("book save ...");
        return "{'module':'book save'}";
    }
}
  1. 方式二:
//类上方配置的请求映射与方法上面配置的请求映射连接在一起,形成完整的请求映射路径
@RequestMapping("/user")
public class UserController {
    //请求路径映射
    @RequestMapping("/save")
    @ResponseBody
    public String save(){
        System.out.println("user save ...");
        return "{'module':'user save'}";
    }
}

2. 请求参数

2.1 普通参数请求

2.1.1 Get请求

    //普通参数:请求参数与形参名称对应即可完成参数传递
    @RequestMapping("/commonParam")
    @ResponseBody
    public String commonParam(String name ,int age){
        System.out.println("普通参数传递 name ==> "+name);
        System.out.println("普通参数传递 age ==> "+age);
        return "{'module':'common param'}";
    }

URL路径(请求参数与形参名称对应即可完成参数传递)

http://localhost:80/commonParam?name=123&age=123

后台打印输出

在这里插入图片描述

2.1.2 Post请求

URL路径

在这里插入图片描述

后台打印输出

在这里插入图片描述

最后处理一下post请求中文乱码问题,在ServletContainerInitConfig文件中处理乱码设置过滤器

    //乱码处理
    @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter filter = new CharacterEncodingFilter();
        filter.setEncoding("UTF-8");
        return new Filter[]{filter};
    }

对于get请求乱码问题,在pom文件configuration中加上

<uriEncoding>UTF-8</uriEncoding>

2.2 五种类型的参数传递

在这里插入图片描述

2.2.1 普通参数

前面介绍的是请求参数书与形参名相同时(自动映射),不同时使用@RequestParam注解关联请求参数名称与形参名称之间的关系

    @RequestMapping("/commonParamDifferentName")
    @ResponseBody
    public String commonParamDifferentName(@RequestParam("name") String userName , int age){
        System.out.println("普通参数传递 userName ==> "+userName);
        System.out.println("普通参数传递 age ==> "+age);
        return "{'module':'common param different name'}";
    }

在这里插入图片描述

控制台响应

在这里插入图片描述

2.2.2 POJO类型参数

    //POJO参数:请求参数与形参对象中的属性对应即可完成参数传递
    @RequestMapping("/pojoParam")
    @ResponseBody
    public String pojoParam(User user){
        System.out.println("pojo参数传递 user ==> "+user);
        return "{'module':'pojo param'}";
    }

在这里插入图片描述

2.2.3 嵌套POJO类型参数

请求参数名与形参对象属性名相同,定义POJO类型形参即可接收参数

    //嵌套POJO参数:嵌套属性按照层次结构设定名称即可完成参数传递
    @RequestMapping("/pojoContainPojoParam")
    @ResponseBody
    public String pojoContainPojoParam(User user){
        System.out.println("pojo嵌套pojo参数传递 user ==> "+user);
        return "{'module':'pojo contain pojo param'}";
    }   

在这里插入图片描述

控制台输出

在这里插入图片描述

2.2.4 数组类型参数

    //数组参数:同名请求参数可以直接映射到对应名称的形参数组对象中
    @RequestMapping("/arrayParam")
    @ResponseBody
    public String arrayParam(String[] likes){
        System.out.println("数组参数传递 likes ==> "+ Arrays.toString(likes));
        return "{'module':'array param'}";
    }

在这里插入图片描述

自动识别装入一个数组中,控制台输出

在这里插入图片描述

2.2.5 集合类型参数

要使用@RequestParam进行注释,否则会自动识别为pojo类型

    //集合参数:同名请求参数可以使用@RequestParam注解映射到对应名称的集合对象中作为数据
    @RequestMapping("/listParam")
    @ResponseBody
    public String listParam(@RequestParam List<String> likes){
        System.out.println("集合参数传递 likes ==> "+ likes);
        return "{'module':'list param'}";
    }

在这里插入图片描述
在这里插入图片描述

3. json数据传送参数

首先要打入json坐标,做数据的类型转换

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.0</version>
    </dependency>

在postman中发送json数据

在这里插入图片描述
在这里插入图片描述

其次,SpringMVC并不能处理数据转换,从客户端传来的json数据它并不知道要进行转换,要开启一个功能键;
在配置文件中添加类型转换器

//开启json数据类型自动转换
@EnableWebMvc

3.1 json集合

    //集合参数:json格式
    //1.开启json数据格式的自动转换,在配置类中开启@EnableWebMvc
    //2.使用@RequestBody注解将外部传递的json数组数据映射到形参的集合对象中作为数据
    @RequestMapping("/listParamForJson")
    @ResponseBody
    public String listParamForJson(@RequestBody List<String> likes){
        System.out.println("list common(json)参数传递 list ==> "+likes);
        return "{'module':'list common for json param'}";
    }

3.2 json数据(POJO)

    //POJO参数:json格式
    //1.开启json数据格式的自动转换,在配置类中开启@EnableWebMvc
    //2.使用@RequestBody注解将外部传递的json数据映射到形参的实体类对象中,要求属性名称一一对应
    @RequestMapping("/pojoParamForJson")
    @ResponseBody
    public String pojoParamForJson(@RequestBody User user){
        System.out.println("pojo(json)参数传递 user ==> "+user);
        return "{'module':'pojo for json param'}";
    }

3.3 json数据(集合对象)

    //集合参数:json格式
    //1.开启json数据格式的自动转换,在配置类中开启@EnableWebMvc
    //2.使用@RequestBody注解将外部传递的json数组数据映射到形参的保存实体类对象的集合对象中,要求属性名称一一对应
    @RequestMapping("/listPojoParamForJson")
    @ResponseBody
    public String listPojoParamForJson(@RequestBody List<User> list){
        System.out.println("list pojo(json)参数传递 list ==> "+list);
        return "{'module':'list pojo for json param'}";
    }

最后说明一下RequestParam与RequestBody的区别

在这里插入图片描述

4. 日期类型参数传递

日期类型,形参注解@DateTimeFormat

    //日期参数
    //使用@DateTimeFormat注解设置日期类型数据格式,默认格式yyyy/MM/dd
    @RequestMapping("/dataParam")
    @ResponseBody
    public String dataParam(Date date,
                            @DateTimeFormat(pattern="yyyy-MM-dd") Date date1,
                            @DateTimeFormat(pattern="yyyy/MM/dd HH:mm:ss") Date date2){
        System.out.println("参数传递 date ==> "+date);
        System.out.println("参数传递 date1(yyyy-MM-dd) ==> "+date1);
        System.out.println("参数传递 date2(yyyy/MM/dd HH:mm:ss) ==> "+date2);
        return "{'module':'data param'}";
    }

在这里插入图片描述

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

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

相关文章

新一代企业数字化联盟成立,甄知科技与众多企业“强强联手”搭建品牌服务生态

5月18日&#xff0c;新一代企业数字化联盟&#xff08;以下简称“新一代联盟”&#xff09;成立大会在上海举行。该联盟由包括甄云科技、得帆信息、甄知科技、盖雅工场、甄零科技、易立德信息、鼎医、数划云在内的8家创新型数字化软件科技企业发起&#xff0c;旨在希望通过强强…

【Java入门】数据类型与变量

前言 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐的一位博主。 &#x1f4d7;本文收录于Java入门篇系列&#xff0c;该专栏主要讲解&#xff1a;什么是java、java的数据类型与变…

PyCharm 点击运行,没有执行所有的py文件内容

&#xff08;JDD_KK原创&#xff09; 基于 Pycharm&#xff0c;python3 问题&#xff1a;编写了一个测试工程&#xff0c;创建了多个.py文件。 多个py文件为&#xff1a; data_test/test_datademo.py interface_test/test_interface1.py test_test/test_test.py web_test/test…

【LCD 应用编程】获取LCD屏幕参数信息(分辨率、像素深度、RGB格式)

目录 一、LCD显示的基本原理 1、认识 FrameBuffer 2、理解LCD的分辨率和深度 二、接口函数 ioctl 1、函数声明 2、结构体介绍 三、获取LCD屏的信息&#xff08;分辨率、深度&#xff09; 一、LCD显示的基本原理 1、认识 FrameBuffer FrameBuffer 是帧缓冲&#xff0c;…

[VPX611]基于 6U VPX 总线架构的SATA3.0 高性能数据存储板

板卡概述 VPX611 是一款基于6UVPX 总线架构的高性能数据存储板&#xff0c;该板卡采用2 片XilinxKintex-7 系列FPGA 作为主控单元&#xff0c;FPGA 内嵌RAID 控制器&#xff0c;最大支持8 个mSATA 盘&#xff0c;最大存储容量可以达到8TByte&#xff0c;持续数据写入带宽可以达…

Scrum专业能力之Scrum框架和用敏捷思维管理产品

一、理解和应用Scrum框架 理解和应用Scrum框架&#xff0c;让团队和组织最多30天就可以迭代增量式交付可上线的具有价值的完工产品。成功地应用Scrum框架要求理解和应用Scrum价值观以及经验主义的原则&#xff0c;以便在处理产品交付的内在复杂性的同时&#xff0c;专业地向组…

浑元太极和领域驱动设计-UMLChina建模知识竞赛第4赛季第2轮

DDD领域驱动设计批评文集>> 《软件方法》强化自测题集>> 《软件方法》各章合集>> 参考潘加宇在《软件方法》和UMLChina公众号文章中发表的内容作答。在本文下留言回答&#xff0c;先全部答对者得分&#xff0c;本轮总分为3分。 1. [多选] 开发团队中&am…

在 Visual Studio 2022 中使用 GitHub Copilot chat

本文通过实际应用场景和示例代码展示了 GitHub Copilot Chat 在 Visual Studio 2022 中的优势和特点。最后&#xff0c;鼓励读者在实际工作中尝试使用 Copilot Chat&#xff0c;以提升开发效率和代码质量。希望这些信息和经验能为你在使用GitHub Copilot时提供帮助和启发。 1. …

openssh kex.c拒绝服务漏洞漏洞(CVE-2016-8858)处理

一、漏洞描述 OpenSSH&#xff08;OpenBSD Secure Shell&#xff09;是OpenBSD计划组所维护的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现&#xff0c;支持对所有的传输进行加密&#xff0c;可有效阻止窃听、连接劫持以及其他网络级的攻击。OpenSSH 6.x版…

leetcode二叉树中的最大路径和(java)

二叉树中的最大路径和 leetcode 124题- 原题链接二叉树中的最大路径和 (hard)解题思路二叉树专题 leetcode 124题- 原题链接 leetcode 124 .二叉树的最大路径和 二叉树中的最大路径和 (hard) 二叉树中的 路径 被定义为一条节点序列&#xff0c;序列中每对相邻节点之间都存在一…

Selenium、JUnit、Appium…一网打尽,轻松掌握自动化测试工具

目录 前言&#xff1a; 一、 自动化测试原理 二、 自动化测试工具和技术 三、 自动化测试案例 四、 总结 前言&#xff1a; 自动化测试是现代软件开发中必不可少的组成部分&#xff0c;它可以让开发者快速、高效地测试软件&#xff0c;并确保其符合预期要求。在本文中&am…

工业开源网站

12、JCAE JAVA based environment for CAE applications. jCAE - Java Computer Aided Engineering 13、gCAD3D gCAD3D.org 14、boardcad http://www.boardcad.com/ 15、solvespace SolveSpace - parametric 3d CAD 16、DraftSight 不开源 2D CAD Drafting and 3D Design | Dra…

公司来了个00后卷王,卷的让人崩溃.....

前几天我们公司一下子也来了几个新人&#xff0c;这些年前人是真能熬啊&#xff0c;本来我们几个老油子都是每天稍微加会班就打算走了&#xff0c;这几个新人一直不走&#xff0c;搞得我们也不好走。 2023年春招已结过去了&#xff0c;最近内卷严重&#xff0c;各种跳槽裁员&a…

抖音矩阵系统源码开发技术分析

在这个过程中&#xff0c;开发人员使用了多种编程语言、框架和工具&#xff0c;包括 Python、Java、Hadoop、Spark 和 Kafka 等。他们还使用了不同的数据库技术&#xff0c;例如 MySQL 和 MongoDB。 整个开发过程通常分为四个主要阶段&#xff1a;需求分析、设计、开发和测试。…

数值计算 - 常用函数值计算方法

秦九韶算法 什么是秦九韶算法&#xff1f; 可以把多项式改写为便于递推的形式&#xff1a; 泰勒展开式 什么是泰勒展开式&#xff1f; 泰勒公式&#xff0c;也称泰勒展开式。是用一个函数在某点的信息&#xff0c;描述其附近取值的公式。如果函数足够平滑&#xff0c;在已知函…

网络作业8【计算机网络】

网络作业8【计算机网络】 前言推荐网络作业8一. 单选题&#xff08;共16题&#xff0c;60分&#xff09;二. 填空题&#xff08;共2题&#xff0c;20分&#xff09;三. 阅读理解&#xff08;共1题&#xff0c;20分&#xff09; 最后 前言 2023-5-23 16:54:08 以下内容源自《【…

最优化方法Python计算:一元函数搜索算法——牛顿法

设函数 f ( x ) f(x) f(x)&#xff0c;在 [ a , b ] [a,b] [a,b]上二阶连续可微且有唯一的最小值点 x 0 x_0 x0​。由于 f ( x ) f(x) f(x)是 [ a , b ] [a,b] [a,b]上的单峰函数&#xff0c;故 f ′ ′ ( x ) > 0 f(x)>0 f′′(x)>0&#xff0c; x ∈ ( a , b ) x\in…

实时频谱-2.2数字信号处理

数字信号处理&#xff08;DSP&#xff09;概念 数字信号处理(digital signal processing)&#xff0c;是以数字运算方法实现信号变换、滤波、检测、估值、调制解调以及快速算法等处理的一门学科。数字信号处理具有高精度、高可靠性、可程序控制、可时分复用、便于集成化等优点…

【Spring篇】AOP事务管理

&#x1f353;系列专栏:Spring系列专栏 &#x1f349;个人主页:个人主页 一、AOP事务管理 1.Spring事务简介 1.相关概念介绍 事务作用&#xff1a;在数据层保障一系列的数据库操作同成功同失败Spring事务作用&#xff1a;在数据层或 业务层 保障一系列的数据库操作同成功同失…

代码随想录 字符串 Java

文章目录 &#xff08;简单&#xff09;344. 反转字符串&#xff08;简单&#xff09;541. 反转字符串||&#xff08;简单&#xff09;剑指Offer 05. 替换空格&#xff08;中等&#xff09;151. 反转字符串中的单词&#xff08;简单&#xff09;剑指 Offer 58 - II. 左旋转字符…