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)构造方法:参数为…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...
pycharm 设置环境出错
pycharm 设置环境出错 pycharm 新建项目,设置虚拟环境,出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...
【Qt】控件 QWidget
控件 QWidget 一. 控件概述二. QWidget 的核心属性可用状态:enabled几何:geometrywindows frame 窗口框架的影响 窗口标题:windowTitle窗口图标:windowIconqrc 机制 窗口不透明度:windowOpacity光标:cursor…...
