SpringMVC系列五: SpringMVC映射请求数据

SpringMVC映射请求数据

  • 💞获取参数值
    • 说明
    • 应用实例
  • 💞获取http请求消息头
  • 💞获取JavaBean对象
    • 使用场景说明
    • 应用实例
    • 注意事项和细节
  • 💞获取servlet api
    • 说明
    • 应用实例
    • 注意事项和细节

上一讲, 我们学习的是SpringMVC系列四: Rest-优雅的url请求风格

现在打开springmvc项目

在这里插入图片描述

💞获取参数值

说明

开发中, 如何获取到http://ip:port/url?参数名=参数值&参数名=参数值

应用实例

1.com.zzw.web.requestParam新建VoteHandler

@RequestMapping("/vote")
@Controller
public class VoteHandler {/*** 解读* 1.获取到超链接传递的数据 请求 http://localhost:8080/springmvc/vote/vote01?name=xx* 2.@RequestParam 表示会接收提交的参数* 3,value="name" 表示提交的参数名是name* 4.required=false 表示该参数可以没有; 默认是true, 表示必须有这个参数* 5.当我们使用了 @RequestParam(value="name", required=false)后 请求的参数名和方法的形参名可以不一致*/@RequestMapping(value = "/vote01")public String test01(@RequestParam(value = "name", required = false) String username) {System.out.println("得到username=" + username);return "success";}
}

2.web路径下新建request_parameter.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>测试 request parameter</title>
</head>
<body>
<h2>获取到超链接参数值</h2>
<hr>
<a href="vote/vote01?name=zzw">获取超链接的参数</a>
</body>
</html>

3.Postman测试

get方式提交
在这里插入图片描述post方式提交
在这里插入图片描述

💞获取http请求消息头

●说明
1.在开发中, 如何获取到http请求的消息头信息
2.使用较少

案例
1.修改VoteHandler.java, 增加方法 test02

@RequestMapping("/vote")
@Controller
public class VoteHandler {/*** 需求: 获取http请求头信息, 获取到Accept-Encoding 和 Host* [涉及到知识点 http协议]* @param a1* @param a2* @return*/@RequestMapping(value = "/vote02")public String test02(@RequestHeader("Accept-Encoding") String a1, @RequestHeader("Host") String a2) {System.out.println("Accept-Encoding=" + a1);System.out.println("Host=" + a2);//返回一个结果return "success";}
}

2.修改request_parameter.jsp

<h2>获取到消息头</h2>
<a href="vote/vote02">获取到Http消息头信息</a>

3.Postman测试
在这里插入图片描述

💞获取JavaBean对象

使用场景说明

开发中, 如何获取到javabean对象, 就是以前的entity/pojo对象数据

应用实例

1.com.zzw.web.requestParam.entity包下新建Pet

public class Pet {private Integer id;private String name;//setter, getter, toString方法
}

2.同包下新建Master

public class Master {private Integer id;private String name;private Pet pet;//对象的属性是另外一个对象[涉及到属性级联]//setter, getter, toString方法
}

3.修改VoteHandler.java, 增加方法 test03

public class VoteHandler {/*** 演示如何获取到提交数据->封装成java对象* 说明* 1.方法的形参用对应的类型来指定即可, SpringMVC会自动的进行封装* 2.如果要自动地完成封装, 要求提交的数据, 参数名和对象的字段名保持一致* 3.如果属性是对象, 这里仍然是通过 字段名.字段名 比如Master [pet]*   , 即提交的数据 参数名 是 pet.id pet.name, 这就是级联操作* 4.如果提交的数据 的参数名和对象的字段名不匹配, 则对象的属性值就是null* @return*/@RequestMapping(value = "/vote03")public String test03(Master master) {System.out.println("master=" + master);//返回结果return "success";}
}

4.修改request_parameter.jsp

<%--解读
1.这是一个表单, 表单的数据对应Master对象
2.提交的数据参数名和对象的字段名一致即可
--%>
<h1>添加主人信息</h1>
<form action="vote/vote03" method="post">主人:<input type="text" name="id"/><br/>主人:<input type="text" name="name"/><br/>宠物名:<input type="text" name="pet.id"/><br/>宠物名:<input type="text" name="pet.name"/><br/><input type="submit" value="添加主人和动物"/>
</form>

5.Postman测试

get方式提交
在这里插入图片描述post方式提交
在这里插入图片描述

注意事项和细节

1.支持级联数据获取
2.表单的控件名称name需要和javabean对象名称呼应, 否则就是null

💞获取servlet api

说明

1.开发中, 我们可以需要使用到原生的servlet api
2.使用servlet api, 需要引入tomcat/lib下的servlet-api.jar

应用实例

1.修改VoteHandler.java, 增加方法 test04

@RequestMapping("/vote")
@Controller
public class VoteHandler {/*** 使用servlet api, 来获取提交的数据* @param request* @param response* @return*/@RequestMapping(value = "/vote04")public String test04(HttpServletRequest request,HttpServletResponse response) {String username = request.getParameter("username");String password = request.getParameter("password");System.out.println("username=" + username);System.out.println("password=" + password);//返回结果return "success";}
}

2.修改request_parameter.jsp

<h1>演示 servlet api的使用</h1>
<form action="vote/vote04" method="post">用户名:<input type="text" name="username"/><br/>密 码:<input type="password" name="password"/><br/><input type="submit" value="提交"/>
</form>

3.Postman测试

post方式提交
在这里插入图片描述

注意事项和细节

1.除了HttpServletRequest, HttpServletResponse其它对象还可以以这样的方式获取
2.HttpSession, java.security.Principal, InputStream, OutputStream, Reader, Writer
3.其中一些对象也可以通过 HttpServletRequest / HttpServletResponse对象获取, 比如Session对象, 既可以通过参数传入, 也可以通过request.getSession()获取, 效果一样, 推荐使用参数形式传入, 更加简单明了

@RequestMapping("/vote")
@Controller
public class VoteHandler {/*** 使用servlet api, 来获取提交的数据* @param request* @param response* @return*/@RequestMapping(value = "/vote04")public String test04(HttpServletRequest request,HttpServletResponse response,HttpSession session2) {//获取到session//servlet的原生的方式HttpSession session = request.getSession();System.out.println("session=" + session);//注意: 通过参数传入的 session2 和 通过request.getSession()得到的 session对象是同一个System.out.println("session2=" + session2);//返回结果return "success";}
}

在这里插入图片描述

下一讲, 我们学习 SpringMVC系列六: 视图和视图解析器

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux_内核缓冲区

目录 1、用户缓冲区概念 2、用户缓冲区刷新策略 3、用户缓冲区的好处 4、内核缓冲区 5、验证内核缓冲区 6、用户缓冲区存放的位置 7、全缓冲 结语 前言&#xff1a; Linux下的内核缓冲区存在于系统中&#xff0c;该缓冲区和用户层面的缓冲区不过同一个概念&#x…

SpringBoot 快速入门(保姆级详细教程)

目录 一、Springboot简介 二、SpringBoot 优点&#xff1a; 三、快速入门 1、新建工程 方式2&#xff1a;使用Spring Initializr创建项目 写在前面&#xff1a; SpringBoot 是 Spring家族中的一个全新框架&#xff0c;用来简化spring程序的创建和开发过程。SpringBoot化繁…

【调试笔记-20240618-Windows-pnpm 更新出现 Cannot find module 问题的解决方法】

调试笔记-系列文章目录 调试笔记-20240618-Windows-pnpm 更新出现 Cannot find module 问题的解决方法 文章目录 调试笔记-系列文章目录调试笔记-20240618-Windows-pnpm 更新出现 Cannot find module 问题的解决方法 前言一、调试环境操作系统&#xff1a;Windows 10 专业版调…

vue3实现表格的分页以及确认消息弹窗

表格的分页实例展示 效果1:表格按照每行10条数据分页,且编号也会随之分页自增 实现按照页码分页效果 第二页 展示编号根据分页自动增长 固定表格高度 这边设置了滚动条,同时表格高度实现自适应滚动条高度 template部分 表格代码 编号是按照页码条数进行循环并根据索引自增…

【Linux 杂记】TOP命令

top命令用于动态显示系统中正在运行的进程的详细信息&#xff0c;以及系统的整体资源使用情况。以下是其主要输出解释&#xff1a; Header 表头信息&#xff1a; top&#xff1a;当前时间和运行时间。Tasks&#xff1a;进程统计信息&#xff0c;如总进程数、运行中、睡眠中等。…

qt+halcon实战

注意建QT工程项目用的是MSVC&#xff0c;如果选成MinGW,则会报错 INCLUDEPATH $$PWD/include INCLUDEPATH $$PWD/include/halconcppLIBS $$PWD/lib/x64-win64/halconcpp.lib LIBS $$PWD/lib/x64-win64/halcon.lib#include "halconcpp/HalconCpp.h" #include &quo…

【系统架构设计师】三、数据库系统(事务并发|封锁协议|数据库安全|商业智能|SQL语句)

目录 一、事务并发 1.1 事务概述 1.2 并发控制 1.3 封锁 1.3.1 X 封锁和 S 封锁 1.3.2 三级封锁协议 二、数据库安全 2.1 备份(转储)与恢复 2.2 备份分类 2.3 数据库故障 三、商业智能 3.1 数据仓库 3.2 数据仓库的结构-OLAP 3.3 数据挖掘 3.4 分布式数据库 四…

【猫狗分类】Pytorch VGG16 实现猫狗分类1-数据清洗+制作标签文件

Pytorch 猫狗分类 用Pytorch框架&#xff0c;实现分类问题&#xff0c;好像是学习了一些基础知识后的一个小项目阶段&#xff0c;通过这个分类问题&#xff0c;可以知道整个pytorch的工作流程是什么&#xff0c;会了一个分类&#xff0c;那就可以解决其他的分类问题&#xff0…

intouch的报警怎么发到企业微信机器人

厂务报警通知系列博客目录 intouch的报警怎么发到微信上 intouch的报警怎么发到邮件上 intouch的报警怎么发到短信上 intouch的报警怎么发到企业微信机器人 intouch的报警怎么发到飞书机器人 intouch的报警怎么用语音通知到手机用户 创建企业微信群机器人 打开企业微信客…

java基于ssm+jsp 母婴用品网站

1管理员功能模块 管理员登录&#xff0c;管理员通过输入用户名、密码等信息进行系统登录&#xff0c;如图1所示。 图1管理员登录界面图 管理员登录进入母婴用品网站可以查看主页、个人中心、用户管理、商品分类管理、商品信息管理、留言板管理、成长交流、系统管理、订单管理、…

6月27日云技术研讨会 | 中央集中架构新车型功能和网络测试解决方案

会议摘要 “软件定义汽车”新时代下&#xff0c;整车电气电气架构向中央-区域集中式发展已成为行业共识&#xff0c;车型架构的变革带来更复杂的整车功能定义、更多的新技术的应用&#xff08;如SOA服务化、TSN等&#xff09;和更短的车型研发周期&#xff0c;对整车和新产品研…

视频与音频的交响:探索达摩院VideoLLaMA 2的技术创新

一、简介 文章&#xff1a;https://arxiv.org/abs/2406.07476 代码&#xff1a;https://github.com/DAMO-NLP-SG/VideoLLaMA2 VideoLLaMA 2是由阿里巴巴集团的DAMO Academy团队开发的视频大型语言模型&#xff08;Video-LLM&#xff09;&#xff0c;旨在通过增强空间-时间建模…

Axios进阶

目录 axios实例 axios请求配置 拦截器 请求拦截器 响应拦截器 取消请求 axios不仅仅是简单的用基础请求用法的形式向服务器请求数据&#xff0c;一旦请求的端口与次数变多之后&#xff0c;简单的请求用法会有些许麻烦。所以&#xff0c;axios允许我们进行创建axios实例、ax…

Python基础入门

目录 1. 什么是Python&#xff1f; 2. 安装Python 3. Python基础语法 4. 数据结构 5. 文件操作 6. Python标准库 总结 1. 什么是Python&#xff1f; Python是一种高级编程语言&#xff0c;由Guido van Rossum于1991年发布。它以其简单易读的语法和强大的功能而闻名&…

DataWhale - 吃瓜教程学习笔记(二)

学习视频&#xff1a;第3章-一元线性回归_哔哩哔哩_bilibili 西瓜书对应章节&#xff1a; 3.1 - 3.2 一元线性回归 - 最小二乘法 - 极大似然估计 - 梯度 多元函数的一阶导数 - 海塞矩阵 多元函数的二阶导数 - 机器学习三要素

LLC开关电源开发:第四节,LLC软件设计报告

LLC源代码链接 数控全桥LLC开发板软件设计报告  1. LLC硬件及软件框架2. LLC软件设计2.1 工程文件说明2.2 LLC中断设计2.2.1 20us中断2.2.2 5ms中断 2.3 LLC状态机设计2.3.1 初始化状态2.3.2 空闲状态2.3.3 软启动状态2.3.4 正常运行状态2.3.5 故障状态 2.4 环路设计2.4.1 环路…

EasyRecovery数据恢复软件2024免费版下载

EasyRecovery数据恢复软件&#xff0c;是我在电脑使用过程中遇到的神器&#xff01;它不仅功能强大&#xff0c;操作简便&#xff0c;还帮我找回了丢失的重要文件。今天&#xff0c;我就来给大家分享一下我的使用体验和心得。 让我来介绍一下EasyRecovery的功能。这款软件可以恢…

【字符串 状态机动态规划】1320. 二指输入的的最小距离

本文涉及知识点 动态规划汇总 字符串 状态机动态规划 LeetCode1320. 二指输入的的最小距离 二指输入法定制键盘在 X-Y 平面上的布局如上图所示&#xff0c;其中每个大写英文字母都位于某个坐标处。 例如字母 A 位于坐标 (0,0)&#xff0c;字母 B 位于坐标 (0,1)&#xff0…

org.springframework.boot:spring-boot-starter-parent:pom:2.3.4.RELEAS

前言 git上拉了一个项目构建过程中无论是clean还是install都报错 注&#xff1a;很看不惯某博主一点简单的经验分享都要开VIP才能查看的作风 org.springframework.boot:spring-boot-starter-parent:pom:2.3.4.RELEASE failed to transfer from https://maven.aliyun.com/rep…

3D视觉引导机器人提升生产线的自动化水平和智能化程度

随着智能化技术的不断发展&#xff0c;汽车制造企业正积极寻求提升智能化水平的途径。富唯智能的3D视觉引导机器人抓取技术为汽车制造企业提供了一种高效、智能的自动化解决方案。 项目目标 某汽车制造企业希望通过引入智能化技术提升生产线的自动化水平和智能化程度。他们希望…