第3章:SpringMVC获取请求参数

一、SpringMVC获取请求参数

1.通过servletAPI获取

HttpServletRequest作为控制器方法的形参,此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的对象

<a th:href="@{/testServletAPI(username='admin',password=123456)}">测试API</a>
@Controller
public class ParamController {@RequestMapping("/testServletAPI")public String testAPI(HttpServletRequest request){String username = request.getParameter("username");String password = request.getParameter("password");System.out.println("username="+username+"password="+password);return "success";}
}

2.通过控制器方法形参获取请求参数

在控制器方法的形参位置,设置和请求参数同名的形参,当浏览器发送请求,匹配到请求映射时,在DispatcherServlet中就会将请求参数赋值给相应的形参

<a th:href="@{/testServletAPI(username='admin',password=123456)}">测试API</a>
@Controller
public class ParamController {@RequestMapping("/testServletAPI")public String testAPI(String username, String password){System.out.println("username="+username+"-password="+password);return "success";}
}

如果有重名参数hobby

<form th:action="@{/testServletAPI}">用户名:<input type="text" name="username"><br>密码:<input type="password" name="password"><br>爱好:<input type="checkbox" name="hobby" value="java">java<input type="checkbox" name="hobby" value="C">c<input type="submit" value="提交"><br>
</form>

①方法1字符串

输出

username=11-password=111,hobby=java,C

②方法2字符串数组

输出

username=111-password=111,hobby=[java, C]

【注意】

  • 若请求所传输的请求参数中有多个同名的请求参数,此时可以在控制器方法的形参中设置字符串数组或者字符串类型的形参接收此请求参数
  • 若使用字符串数组类型的形参,此参数的数组中包含了每一个数据
  • 若使用字符串类型的形参,此参数的值为每个数据中间使用逗号拼接的结果

3.@ RequestParam请求参数和形参映射关系

  • @RequestParam是将请求参数和控制器方法的形参创建映射关系
  • @RequestParam注解一共有三个属性:
  • value:指定为形参赋值的请求参数的参数名
  • required:设置是否必须传输此请求参数,默认值为true
  • 若设置为true时,则当前请求必须传输value所指定的请求参数,若没有传输该请求参数,且没有设置defaultValue属性,则页面报错400:Required String parameter ‘xxx’ is not present;若设置为false,则当前请求不是必须传输value所指定的请求参数,若没有传输,则注解所标识的形参的值为null
  • defaultValue:不管required属性值为true或false,当value所指定的请求参数没有传输或传输的值为""时,则使用默认值为形参赋值
<form th:action="@{/testServletAPI}">用户名:<input type="text" name="username"><br>密码:<input type="password" name="password"><br>爱好:<input type="checkbox" name="hobby" value="java">java<input type="checkbox" name="hobby" value="C">c<input type="checkbox" name="hobby" value="c++">c++<input type="submit" value="提交"><br>
</form>

①用@RequestParam("username") String name 来获取属性值,默认required = true

@RequestMapping("/testServletAPI")
public String testAPI(@RequestParam("username") String name,@RequestParam("password") String word, @RequestParam("hobby")String[] hobb){System.out.println("username="+name+"-password="+word+",hobby="+ Arrays.toString(hobb));return "success";
}

删除username会出现错误

 ②@RequestParam(value = "username",required = false) username可以不写

 ③@RequestParam(value = "username",required = true,defaultValue = "admin")

  • 当username为空的时候,此时name 获取的值是“admin”
  • 当username不为空时,name是输入的值

 4、@RequestHeader 请求头信息和形参创建关系

  • @RequestHeader是将请求头信息和控制器方法的形参创建映射关系
  • @RequestHeader注解一共有三个属性:value、required、defaultValue,用法同@RequestParam

测试输出

host:localhost:8080

5、@CookieValue

  • @CookieValue是将cookie数据和控制器方法的形参创建映射关系
  • @CookieValue注解一共有三个属性:value、required、defaultValue,用法同@RequestParam

 6.通过POJO获取请求参数

可以在控制器方法的形参位置设置一个实体类类型的形参,此时若浏览器传输的请求参数的参数名和实体类中的属性名一致,那么请求参数就会为此属性赋值。不一致就是空

①创建User.class

 根据form表单创建User的javaBean对象

前端控制器

@RequestMapping("/pojo")
public String TestPojo(User user){System.out.println(user);return "success";
}

7.解决获取请求参数的乱码问题

解决post获取请求参数的乱码问题,可以使用SpringMVC提供的编码过滤器CharacterEncodingFilter,但是必须在web.xml中进行注册

<!--配置springMVC的编码过滤器-->
<filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceResponseEncoding</param-name><param-value>true</param-value></init-param>
</filter>
<filter-mapping><filter-name>CharacterEncodingFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>

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

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

相关文章

Qcom_hexagon编译自动获取目录和特定文件的方法

一&#xff0c;简介 本文主要介绍&#xff0c;如何在高通hexagon ide中的hexagon.min中添加获取目录和.c文件的方法&#xff0c;供参考。 二&#xff0c;具体命令 OBJ_PATH : ./awinic_sp_module/algo_libINCLUDE_PATH : $(shell find $(OBJ_PATH ) -type d) SRC_C_FILE : …

supervisor的使用教程

原文链接&#xff1a;http://blog.csdn.net/xyang81/article/details/51555473 Supervisor&#xff08;http://supervisord.org/&#xff09;是用Python开发的一个client/server服务&#xff0c;是Linux/Unix系统下的一个进程管理工具&#xff0c;不支持Windows系统。它可以很方…

supervisor的用法

supervisor是什么&#xff1a; 守护进程的一个工具&#xff1b;比如PM2、Forever、 Python底层写的supervisor 等等... 用法&#xff1a; 1、安装 我用的是yum安装&#xff0c;还有其他的很多安装方式就不一一介绍&#xff0c;有兴趣的中级查 yum install supervisor2、Supervi…

Supervisor的使用方法

Supervisor 是基于 Python 的进程管理工具 当执行一些需要以守护进程方式执行的程序&#xff0c;比如一个后台任务&#xff0c;常用它来进程管理。 Supervisor 还能友好的管理程序在命令行上输出的日志&#xff0c;可以将日志重定向到自定义的日志文件中 它有两个主要的组成部…

Supervisor使用教程

在项目中&#xff0c;经常有脚本需要常驻运行的需求。以PHP脚本为例&#xff0c;最简单的方式是&#xff1a; $ nohup php cli.php &复制代码 这样能保证当前终端被关闭或者按CRTLC后&#xff0c;脚本仍在后台运行。但是没法保证脚本异常后自动重启等。 Supervisor 是用P…

8:00面试,8:03就出来了 ,问的些许变态了吧

这年头&#xff0c;面试没两把刷子&#xff0c;还真不容易 我刚从外包出来&#xff0c;没想到还没多久就死在另一家大厂了 自从加入这家外包公司&#xff0c;每天不是在加班就是在加班的路上&#xff0c;钱倒是给的不少&#xff0c;所以也就忍了。没想到3月一纸通知&#xff0…

supervisor的使用与管理

原文链接&#xff1a;http://blog.csdn.net/xyang81/article/details/51555473 Supervisor&#xff08;http://supervisord.org/&#xff09;是用Python开发的一个client/server服务&#xff0c;是Linux/Unix系统下的一个进程管理工具&#xff0c;不支持Windows系统。它可以很…

飞浆AI studio人工智能课程学习(4)-优质Prompt分享

文章目录 最具商业价值Prompt分享与颁奖02最具商业价值Prompt分享与颁奖-Top102最具商业价值Prompt分享与颁奖-Top202最具商业价值Prompt分享与颁奖-Top302最具商业价值Prompt分享与颁奖-Top402最具商业价值Prompt分享与颁奖-Top502最具商业价值Prompt分享与颁奖-Top602最具商业…

安装第三方库时的问题—复现带setup.py的项目

目录 题目分析&#xff1a; 正片开始&#xff1a; 题目分析&#xff1a; 事情的经过大致是这样&#xff1a; 今天在github上拿到一个处理时间序列的迁移学习项目的复现代码&#xff0c;项目文件如下所示&#xff1a; 或者我们来关注一下tl4sm这个文件夹里的东西&#xff1…

PyTorch 深度学习 || PyTorch 编程基础

PyTorch 编程基础 文章目录 PyTorch 编程基础1. backword 求梯度2. 常用的激活函数2.1 Sigmoid 函数2.2 ReLu 激活函数2.3 Leakly ReLu 激活函数 2. 常用损失函数2.1 均方误差损失函数2.2 L1范数误差损失函数2.3 交叉熵损失函数 3. 优化器 1. backword 求梯度 import torchw …

统计linux日志中请求被拒绝的ip

grep -oP dial tcp \K\S(?:[[:digit:]]) log.log.2023-06-03 | sort | uniq 结果&#xff1a;

NRF52832空中升级DFU

1.工具环境搭建 gcc-arm-none-eabi编译环境&#xff1a;GCC编译环境 Downloads | GNU Arm Embedded Toolchain Downloads – Arm Developer mingw 平台&#xff08;win版的Linux命令行&#xff09; Download MinGW - Minimalist GNU for Windows micro-ecc-master源码 GitHu…

hash传递攻击

简介 Pass the hash也就是Hash传递攻击&#xff0c;简称为PTH。模拟用户登录不需要用户明文密码只需要hash值就可以直接来登录目标系统。 利用前提条件是&#xff1a; 开启445端口开启ipc$共享 Metasploit pesexec模块 windows/smb/psexec 这里主要设置smbuser、smbPass …

月互联网十大热词出路 世博庙会、天上人间入选

世 博庙会、世 界杯家规、伪娘、京 十二条、菜奴、天 上人间、词媒体、零薪族、张悟本 世 博庙会 世博庙会是互动百科的智愿者针对上海世博会里游人熙熙攘攘排队、热热闹闹拍照、匆匆忙忙盖章的“走马观花”式的逛庙会游览方式的一种形象说法。世 界杯家规 世界杯家规&#xf…

2011最新整理分享平台代码参考

平台代码URL115收藏夹115http://fav.115.com139社区139http://www.139.com139邮箱139mailhttp://mail.10086.cn42区42quhttp://42qu.com5151http://www.51.com淘男网51taonanhttp://www.51taonan.com豆瓣9点9dianhttp://9.douban.com/就喜欢网9favhttp://www.9fav.comAsk.comas…

Web的基本漏洞--越权漏洞

目录 一、越权漏洞介绍 1.越权漏洞的原理 2.越权漏洞的分类 3.越权漏洞产生的原因 一、越权漏洞介绍 越权漏洞指的是应用在检查授权时存在纰漏&#xff0c;可以让攻击者获得低权限用户账户后&#xff0c;利用一些方式绕过权限检查&#xff0c;可以访问或者操作其他用户或者…

DevOps该怎么做?

年初在家待了一段时间看了两本书收获还是挺多的. 这些年一直忙于项目, 经历了软件项目的每个阶段, 多多少少知道每个阶段是个什么, 会做哪些事情浮于表面, 没有深入去思考每个阶段背后的理论基础, 最佳实践和落地工具. 某天leader说你书看完了, 只有笔记没有总结, 你就写个总结…

Java009——Java数据类型简单认识

围绕以下3点学习&#xff1a; 1、什么是Java数据类型&#xff1f; 2、Java数据类型的作用&#xff1f; 3、Java有哪些数据类型&#xff1f; 4、熟悉Java8大基本数据类型 一、什么是Java数据类型&#xff1f; 当我们写Java代码时&#xff0c;需要把数据保存在变量&#xff08;…

win7系统卸载360管家之后无法上网怎么回事?

win7系统卸载360管家之后无法上网怎么回事&#xff1f;有用户电脑安装的360管家软件卸载了之后&#xff0c;发现网络连接也同时出现了错误。那么这个情况是什么原因呢&#xff1f;接下来一起来看看如何解决因为卸载360软件而导致的电脑无法上网问题的解决方法吧。 解决方法 1、…

360天擎无密码退出和卸载

无密码退出 删除配置&#xff08;360Safe\EntClient\conf\EntBase.dat&#xff09; **注&#xff1a;**删除时提示权限不够无法删除&#xff0c;使用360自带的文件粉碎机将文件粉碎即可无密码退出360天擎&#xff08;重新打开程序时EntBase.dat会再次生成&#xff09; 修改配置…