当前位置: 首页 > news >正文

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响应事件相关的知识.闲话休提&#xff0c;让我们一起Talk Flutter吧。 概念介绍 我们在这里说的ListView响应事件主要分两种类型&#xff1a; 一种是滑动ListView时ListView做出响应&#xff0c;我们…...

重磅!用友荣登全球5强

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

计算机组成原理实验报告二-认识汇编语言

实验资料&#xff1a; https://wwpv.lanzoue.com/b05drqjef 密码:d19t 使用txt文档编写下面C源码&#xff0c;文档命名为【学号_hello.c】并使用Mingw工具&#xff08;是 Minimalist GNU for Windows的缩写&#xff09;的bin文件夹下gcc.exe带选项编译&#xff08;&#xff09…...

都说计算机今年炸了,究竟炸到什么程度呢?

近期&#xff0c;最大的计算机领域新闻莫过于Intel CPU严重漏洞曝光。该漏洞被称为“Meltdown”和“Spectre”&#xff0c;几乎涵盖了所有使用Intel芯片的计算机&#xff0c;包括PC、笔记本电脑、服务器和移动设备。 Meltdown漏洞的主要风险是黑客可以利用此漏洞访问操作系统的…...

0Ω的电阻作用

0欧姆电阻即电阻标值为0欧姆的电阻&#xff0c;多用于PCB设计等方面&#xff0c;是一种理想电阻。那0欧姆电阻是表示没有电阻吗&#xff1f;当然不是&#xff0c;0欧姆电阻的阻值不是0欧姆&#xff0c;只是接近0欧姆。 1、调试方便或者兼容设计&#xff1a;可以选择器件、功能…...

02 PostGIS常用空间分析函数

常用的PostGIS空间分析函数清单&#xff1a; 序号函数名描述示例1ST_AsText(geometry)将几何对象转换为文本形式的WKT字符串ST_AsText(ST_GeomFromText(‘POINT(1 2)’)) 返回 ‘POINT(1 2)’2ST_GeometryType(geometry)返回几何对象的类型&#xff0c;如POINT、LINESTRING、P…...

[Golang] 管理日志信息就用Zap包

&#x1f61a;一个不甘平凡的普通人&#xff0c;致力于为Golang社区和算法学习做出贡献&#xff0c;期待您的关注和认可&#xff0c;陪您一起学习打卡&#xff01;&#xff01;&#xff01;&#x1f618;&#x1f618;&#x1f618; &#x1f917;专栏&#xff1a;算法学习 &am…...

【pytest】执行环境切换的两种解决方案

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

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 正则表达式 正则表达式定义了字符串的模式。 正则表达式可以用来搜索、编辑或处理文本。 正则表达式并不仅限于某一种语言&#xff0c;但是在每种语言中有细微的差别。 示例 boolean b String.matches(String regex) ;regex 有2种形式&#xff1a; 字符串 直接就是一…...

Oracle索引知识看这一篇就足够

&#x1f3c6; 文章目标&#xff1a;本篇介绍Oracle索引知识以及案例场景 &#x1f340; Oracle索引知识看这一篇就足够 ✅ 创作者&#xff1a;Jay… &#x1f389; 个人主页&#xff1a;Jay的个人主页 &#x1f341; 展望&#xff1a;若本篇讲解内容帮助到您&#xff0c;请帮忙…...

kafka命令行操作

新老版本kafka命令行操作 啓動Kafka&#xff1a; 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)

参考链接&#xff1a;https://juejin.cn/post/7121209657678364685 Pinia官方&#xff1a;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日&#xff0c;周五晚上&#xff1a; 今天晚上突然想写一个运行在命令行上的文本编辑器&#xff0c;因为平时写文本时老是要创建新的文本文件&#xff0c;觉得太麻烦了。捣鼓了一个晚上&#xff0c;才选出一个我觉得比较满意的。我把这个程序添加到了系统环境变量中…...

人工智能的界面革命,消费者与企业互动的方式即将发生变化。

本文来源于 digitalnative.substack.com/p/ais-interface-revolution 描述了一种社会现象&#xff1a; 随着真实友谊的减少和虚拟友谊的增加&#xff0c;越来越多的人开始将AI聊天机器人视为自己的朋友&#xff0c;甚至建立了深厚的情感纽带。这可能与当前人们越来越孤独的现实…...

深度学习课程:手写体识别示例代码和详细注释

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

10-03 单元化架构设计

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

JAVA—实验3 继承与多态

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

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

vue3 daterange正则踩坑

<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!

目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...

【Linux】Linux安装并配置RabbitMQ

目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的&#xff0c;需要先安…...