SpringMVC第四阶段:Controller中如何接收请求参数
Controller中如何接收请求参数
1、原生API参数类型
1.1、HttpServletRequest类
只需要在Controller的目标方法中, 直接写上HttpServletRequest对象即可获取 原生API的 request对象实例。
@RequestMapping(value = "/p1")
public String param1(HttpServletRequest request){System.out.println(" httpServletRequest对象 : " + request);System.out.println("获取请求的参数: " + request.getParameter("username"));System.out.println("获取工程路径: " + request.getContextPath());System.out.println("获取请求资源路径: " + request.getRequestURI());return "ok";
}
1.2、HttpSession类 和HttpServletResponse类
@RequestMapping(value = "/p2")
public String param2(HttpSession session , HttpServletResponse response){System.out.println(" 会话id: " + session.getId());System.out.println(" 是否是新创建的: " + session.isNew() );System.out.println( "response对象" + response );return "ok";
}
以上这几个原生API 只需要在Controller 控制器的方法上直接写参数就可以获取,使用跟原来一样.
2、普通类型入参
/*** 在SpringMVC框架中,如果要获取请求的参数,只需要把参数直接写在Controller的方法上即可.<br/>* 注意点: <br/>* 1 参数的类型要一致 <br/>* 2 参数名要一致! <br>*/
@RequestMapping(value = "/p3")
public String param3(String username,Integer age,String password){System.out.println("请求参数 username 的值是: " + username);System.out.println("年龄 : " + age);System.out.println("密码 : " + password);return "ok";
}
3、普通类型数组的参数
/*** 如果要使用SpringMVC获取多个参数值的时候,只需要直接写成数组即可!!! <br/>* 注意点: <br/>* 1 参数的类型要一致 <br/>* 2 参数名要一致! <br>*/
@RequestMapping(value = "/p4")
public String param4(String[] hobby){System.out.println("兴趣爱好: " + Arrays.asList(hobby));System.out.println("爱好1 : " + hobby[0]);System.out.println("爱好2 : " + hobby[1]);return "ok";
}
4、普通类型使用@RequestParam入参
示例代码:
/*** 客户端的参数名是username, 服务器参数名是user. 是否可以取值.<br/>* @RequestParam(name = "username") String user <br/>* 表示把请求参数 username 的值,赋给方法参数 user <br/>** 如果没有传递就会报错. <br/>* required = false 表示客户端不传递不报错.值为null <br/>* defaultValue 表示默认值 <br/>* @param user* @return*/
@RequestMapping(value = "/p5")
public String param5(@RequestParam(name = "username",required = false,defaultValue = "哟!!") String user){System.out.println("user的值是: " + user);return "ok";
}
如果指定的参数客户端 不传递 , 就会报以下错误。
5、@RequestHeader获取请求头入参
@RequestParam注解是获取指定请求参数的值注入到Controller方法参数中
@ReqeustHeader 注解是将指定请求头的值注入到Controller方法参数中
@RequestParam和@ReqeustHeader 注解的使用规则一样
@RequestMapping(value = "/p6")
public String param6(@RequestHeader(name="User-Agent") String userAgent,@RequestHeader(name="Connection")String connection ){System.out.println("请求头 userAgent 的值是: " + userAgent);System.out.println("请求头 connection 的值是: " + connection);return "ok";
}
6、@CookieValue获取Cookie值入参
@CookieValue注解和@RequestParam注解和@ReqeustHeader 注解使用规则完全一样.
把请求的Cookie的值注入到Controller方法参数中
@RequestMapping(value = "/p7")
public String param7(@CookieValue(name = "JSESSIONID") String jSessionId){System.out.println("Cookie jSessionId 的值是: " + jSessionId);return "ok";
}
@CookieValue注解:获取Cookie值注入方法参数
@RequestParam注解:获取客户端参数值注入方法参数
@ReqeustHeader 注解 :获取请求头注入方法参数
7、Pojo对象类型的参数
只需要注意请求的参数名要和JavaBean的属性名一致即可
表单:
<%--斜杠表示绝对路径.如果是浏览器解析 , 得到的路径是: http://ip:port/ <br/>如果是服务器解析 , 得到的路径是: http://ip:port/工程路径/
--%>
<form action="${pageContext.request.contextPath}/addperson" method="get">编号: <input id="id" name="id" /> <br>名称: <input id="name" name="name" /> <br>年龄: <input id="age" name="age" /> <br>电话: <input id="phone" name="phone" /> <br><input type="submit" value="提交" />
</form>
JavaBean对象:
public class Person {private Integer id;private String name;private Integer age;private String phone;}
Controller中的代码:
/*** 请求的参数名要和javaBean的属性名一致!!!*/
@RequestMapping(value = "/addperson")
public String person(Person person){System.out.println("用户信息保存 ==>>> " + person);return "ok";
}
8、对象中套对象(级联属性)
表单:
<%--斜杠表示绝对路径.如果是浏览器解析 , 得到的路径是: http://ip:port/ <br/>如果是服务器解析 , 得到的路径是: http://ip:port/工程路径/
--%>
<form action="${pageContext.request.contextPath}/addperson" method="get">编号: <input id="id" name="id" /> <br>名称: <input id="name" name="name" /> <br>年龄: <input id="age" name="age" /> <br>电话: <input id="phone" name="phone" /> <br><%--使用级联属性赋值--%>车名: <input id="car.name" name="car.name" /> <br>车牌: <input id="car.carNo" name="car.carNo" /> <br><input type="submit" value="提交" />
</form>
JavaBean代码 :
public class Car {private String name;private String carNo;
}
public class Person {private Integer id;private String name;private Integer age;private String phone;private Car car;
}
相关文章:

SpringMVC第四阶段:Controller中如何接收请求参数
Controller中如何接收请求参数 1、原生API参数类型 1.1、HttpServletRequest类 只需要在Controller的目标方法中, 直接写上HttpServletRequest对象即可获取 原生API的 request对象实例。 RequestMapping(value "/p1") public String param1(HttpServletRequest …...
第三十回: LisvtView响应事件
我们在上一章回中介绍了如何给ListView添加分隔线,本章回中将介绍ListView响应事件相关的知识.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在这里说的ListView响应事件主要分两种类型: 一种是滑动ListView时ListView做出响应,我们…...

重磅!用友荣登全球5强
近日,全球权威信息技术研究和顾问公司Gartner发布《Market Share: All Software Markets, Worldwide,2022》报告,用友在EAM(资产管理)市场再创新高,市场占有率位居全球第五位,亚太第一位&#x…...

计算机组成原理实验报告二-认识汇编语言
实验资料: https://wwpv.lanzoue.com/b05drqjef 密码:d19t 使用txt文档编写下面C源码,文档命名为【学号_hello.c】并使用Mingw工具(是 Minimalist GNU for Windows的缩写)的bin文件夹下gcc.exe带选项编译()…...
都说计算机今年炸了,究竟炸到什么程度呢?
近期,最大的计算机领域新闻莫过于Intel CPU严重漏洞曝光。该漏洞被称为“Meltdown”和“Spectre”,几乎涵盖了所有使用Intel芯片的计算机,包括PC、笔记本电脑、服务器和移动设备。 Meltdown漏洞的主要风险是黑客可以利用此漏洞访问操作系统的…...

0Ω的电阻作用
0欧姆电阻即电阻标值为0欧姆的电阻,多用于PCB设计等方面,是一种理想电阻。那0欧姆电阻是表示没有电阻吗?当然不是,0欧姆电阻的阻值不是0欧姆,只是接近0欧姆。 1、调试方便或者兼容设计:可以选择器件、功能…...
02 PostGIS常用空间分析函数
常用的PostGIS空间分析函数清单: 序号函数名描述示例1ST_AsText(geometry)将几何对象转换为文本形式的WKT字符串ST_AsText(ST_GeomFromText(‘POINT(1 2)’)) 返回 ‘POINT(1 2)’2ST_GeometryType(geometry)返回几何对象的类型,如POINT、LINESTRING、P…...

[Golang] 管理日志信息就用Zap包
😚一个不甘平凡的普通人,致力于为Golang社区和算法学习做出贡献,期待您的关注和认可,陪您一起学习打卡!!!😘😘😘 🤗专栏:算法学习 &am…...

【pytest】执行环境切换的两种解决方案
一、痛点分析 在实际企业的项目中,自动化测试的代码往往需要在不同的环境中进行切换,比如多套测试环境、预上线环境、UAT环境、线上环境等等,并且在DevOps理念中,往往自动化都会与Jenkins进行CI/CD,不论是定时执行策略…...

2023国赛tomcat题
环境: 10.10.120.128 安装 tomcaA 10.10.120.129 安装tomcatB 10.10.120.130 安装 nginx 配置dns: 正向解析 反向解析 Tomcat ssl配置 [root@localhost ~]# tar -zxvf jdk-11.0.8_linux-x64_bin.tar.gz [root@localhost ~]# mv jdk-11.0.8 /usr/local/ Vim /etc/profile …...

计算机视觉——day 92 基于跨领域协作学习的单图像去雨
基于跨领域协作学习的单图像去雨 1. Introduction3. Proposed method3.1 网络架构 4. Experiments and results4.1 数据集和指标4.3 合成图像的结果4.8 建模复杂度和运行时间 5. Conclusion 1. Introduction 深度卷积神经网络(DCNN)在图像解析任务中取得了优异的性能。然而&am…...
Java 正则表达式
Java 正则表达式 正则表达式定义了字符串的模式。 正则表达式可以用来搜索、编辑或处理文本。 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。 示例 boolean b String.matches(String regex) ;regex 有2种形式: 字符串 直接就是一…...
Oracle索引知识看这一篇就足够
🏆 文章目标:本篇介绍Oracle索引知识以及案例场景 🍀 Oracle索引知识看这一篇就足够 ✅ 创作者:Jay… 🎉 个人主页:Jay的个人主页 🍁 展望:若本篇讲解内容帮助到您,请帮忙…...
kafka命令行操作
新老版本kafka命令行操作 啓動Kafka: kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties Kafka命令行操作 查看当前集群中已存在的主题topic 旧的方式 kafka-topics.sh --zookeeper bdphdp01:2181 --list kafka-topics.sh --zookeeper bdphd…...

Pinia 上手使用(store、state、getters、actions)
参考链接:https://juejin.cn/post/7121209657678364685 Pinia官方:https://pinia.vuejs.org/zh/introduction.html 一、安装 npm i pinia -S二、main.js 引入 import { createApp } from "vue" import App from "./App.vue" impor…...

C++小项目之文本编辑器mynote(1.0.0版本)
2023年5月19日,周五晚上: 今天晚上突然想写一个运行在命令行上的文本编辑器,因为平时写文本时老是要创建新的文本文件,觉得太麻烦了。捣鼓了一个晚上,才选出一个我觉得比较满意的。我把这个程序添加到了系统环境变量中…...

人工智能的界面革命,消费者与企业互动的方式即将发生变化。
本文来源于 digitalnative.substack.com/p/ais-interface-revolution 描述了一种社会现象: 随着真实友谊的减少和虚拟友谊的增加,越来越多的人开始将AI聊天机器人视为自己的朋友,甚至建立了深厚的情感纽带。这可能与当前人们越来越孤独的现实…...

深度学习课程:手写体识别示例代码和详细注释
Pytorch 的快速入门,参见 通过两个神经元的极简模型,清晰透视 Pytorch 工作原理。本文结合手写体识别项目,给出一个具体示例和直接关联代码的解释。 1. 代码 下面代码展示了完整的手写体识别的 Python 程序代码。代码中有少量注释。在本文后…...

10-03 单元化架构设计
设计原则 透明 对开发者透明 在做实现时,不依赖于单元划分和部署对组件透明 在组件运行时,不感知其承载单元对数据透明 数据库并不知道为哪个单元提供服务 业务可分片 系统业务复杂度足够高系统可以按照某一维度进行切分系统数据必须可以被区分 业务…...

JAVA—实验3 继承与多态
一、实验目的 1.掌握类的继承机制 2.掌握抽象类的定义方法 2.熟悉类中成员变量和方法的访问控制 3.熟悉成员方法或构造方法的多态性 二、实验内容 1. Circle类及其子类 【问题描述】 实现类Circle,半径为整型私有数据成员 1)构造方法:参数为…...

第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...

Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...

分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...

以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...