通过ServletAPI获取

test.html

<a th:href="@{/testServletAPI(username='admin',password=123456)}">链接</a>

控制器

    @RequestMapping("/testServletAPI")
public String testServletAPI(HttpServletRequest request){
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("username:"+username+" password:"+password);
return "welcome";
}
//输出:username:admin password:123456

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

在控制器方法的形参位置,设置和请求参数同名的形参,当浏览器发送请求,匹配到请求映射时,在

DispatcherServlet中就会将请求参数赋值给相应的形参

test.html

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

控制器

    @RequestMapping("/testServletAPI")
public String testServletAPI(String username, String password,String hobby){
System.out.println("username:"+username+" password:"+password+" hobby:"+hobby);
return "welcome";
}
//输出:username:admin password:123456 hobby:a,b,c

若使用字符串类型的形参,此参数的值为每个数据中间使用逗号拼接的结果

    @RequestMapping("/testServletAPI")
public String testServletAPI(String username, String password,String[] hobby){
System.out.println("username:"+username+" password:"+password+" hobby:"+ Arrays.toString(hobby));
return "welcome";
}
//输出:username:admin password:123456 hobby:[a, b, c]

若使用字符串数组类型的形参,此参数的数组中包含了每一个数据

@RequestParam

将请求参数和控制器方法的形参创建映射关系

value:指定为形参赋值的请求参数的参数名

required:设置是否必须传输此请求参数,默认值为true。若设置为true时,则当前请求必须传输value所指定的请求参数,若没有传输该请求参数,且没有设置defaultValue属性,则页面报错400:Required String parameter 'xxx' is not present;若设置为false,则当前请求不是必须传输value所指定的请求参数,若没有传输,则注解所标识的形参的值为null

defaultValue:不管required属性值为truefalse,当value所指定的请求参数没有传输或传输的值

""时,则使用默认值为形参赋值

    @RequestMapping("/testServletAPI")
public String testServletAPI(
@RequestParam(value = "user_name", required = true, defaultValue = "admin") String username,
String password,String[] hobby){
System.out.println("username:"+username+" password:"+password+" hobby:"+ Arrays.toString(hobby));
return "welcome";
}

test.html

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

输出:username:admin password:123 hobby:[a, b, c]

@RequestHeader

将请求头信息和控制器方法的形参创建映射关系

共有三个属性:valuerequireddefaultValue,用法同@RequestParam

    @RequestMapping("/testServletAPI")
public String testServletAPI(
@RequestParam(value = "user_name", required = true, defaultValue = "admin") String username,
String password,String[] hobby,
@RequestHeader(value = "Host") String host){
System.out.println("username:"+username+" password:"+password+" hobby:"+ Arrays.toString(hobby));
System.out.println(host);
return "welcome";
}
//输出:username:admin password:123 hobby:[a, b, c]
// localhost:8080

@CookieValue

将cookie数据和控制器方法的形参创建映射关系

共有三个属性:value、required、defaultValue,用法同@RequestParam

    @RequestMapping("/testServletAPI")
public String testServletAPI(
@RequestParam(value = "user_name", required = true, defaultValue = "admin") String username,
String password,String[] hobby,
@RequestHeader(value = "Host") String host,
@CookieValue("JSESSIONID") String JSESSIONID){
System.out.println("username:"+username+" password:"+password+" hobby:"+ Arrays.toString(hobby));
System.out.println(host);
System.out.println(JSESSIONID);
return "welcome";
}
//输出:username:admin password:123 hobby:[a, b, c]
// localhost:8080
// B41B43E2F9C58645137BA27918340B58

通过POJO获取请求参数

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

test.html

<form th:action="@{/testBean}" method="get">
用户名:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
性别:<input type="radio" name="sex" value="男">男<input type="radio" name="sex" value="女">女<br>
年龄:<input type="text" name="age"><br>
邮箱:<input type="text" name="email"><br>
<input type="submit" value="使用实体类接受请求参数">
</form>



按照test.html表单的字段编写User.java的bean类,包括有参和无参构造,get和set方法

控制器

    @RequestMapping("/testBean")
public String testBean(User user){
System.out.println(user);
return "welcome";
}
输出:User{id=null, username='admin', password='333', age=19, sex='男', email='123@qq.com'}

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

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

<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>

【SpringMVC】获取请求参数的更多相关文章

  1. SpringMVC 获取请求参数

    1.获取Request response对象 在SpringMVC的注解开发中,可以选择性的接收Request和Response对象来使用 2.获取request对象请求参数 a.通过request对 ...

  2. SpringMVC获取请求参数-POJO类型参数

    1.Controller中的业务方法的POJO参数的属性名与请求参数一致,参数值会自动映射匹配 1.创建POJO类 public class User { private String usernam ...

  3. SpringMVC获取请求参数-基本类型

    1.Controller中的业务方法的参数名称要与请求参数的name一致,参数值会自动映射匹配 (json形式) <dependency> <groupId>com.faste ...

  4. SpringMVC获取请求参数-集合类型

    1.创建User实体类 ```java public class User { private String username; private int age; public String getU ...

  5. 学习SpringMVC——如何获取请求参数

    @RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他(@CookieValue)!她(@ModelAndView) ...

  6. springMvc源码学习之:spirngMVC获取请求参数的方法2

    @RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他 (@CookieValue)!她(@ModelAndView ...

  7. SpringMVC之请求参数的获取方式

    转载出处:https://www.toutiao.com/i6510822190219264516/ SpringMVC之请求参数的获取方式 常见的一个web服务,如何获取请求参数? 一般最常见的请求 ...

  8. springMVC(spring)+WebSocket案例(获取请求参数)

    开发环境(最低版本):spring 4.0+java7+tomcat7.0.47+sockjs 前端页面要引入: <script src="http://cdn.jsdelivr.ne ...

  9. 学习SpirngMVC之如何获取请求参数

    学习SpringMVC——如何获取请求参数   @RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他(@Cooki ...

随机推荐

  1. 正则表达式的模式匹配----V客学院技术分享

    正则表达式是由一个字符序列形成的搜索模式. 你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容. 正则表达式可以是一个简单的字符,或一个更复杂的模式. 正则表达式可用于所有文本搜索和文本替换的 ...

  2. 手把手教你用java实现二分查找树及其相关操作

    二分查找树(Binary Search Tree)的基本操作有搜索.求最大值.求最小值.求前继.求后继.插入及删除. 对二分查找树的进行基本操作所花费的时间与树的高度成比例.例如有n个节点的完全二叉树 ...

  3. 简单快速安装Apache+PHP+MySql服务环境(三)—— 下载安装phpmyadmin

    为了方便在Linux上操作mysql数据库,打算安装一个phpmyadmin,不过在下载安装的过程中出现了一些坑,特此记录. 1. 在官网上下载phpmyadmin https://files.php ...

  4. PHP获取当日或本月时间戳范围

    在mysql数据库中使用int类型保存时间戳时,一般在程序中可能会用到统计当日,当月的一些数据.那么可以用如下的方式限定时间范围:   //当日销售 $today_start = strtotime( ...

  5. Fedora无法安装Qt4

    针对QT4,6安装时遇到的情况 安装平台:fedora14i686 Qt版本:4.6.2 1:解压qt的tar包 我们进行解压(tar xzvf ***.tar.gz),解压到指定目录的话后边加上: ...

  6. jvm源码解读--11 ldc指令的解读

    写一个java文件 public static void main(String[] args) { String str1="abc"; String str2 ="a ...

  7. 版本号是通过import合并而来的,不是继承来的

  8. Linux系统进入redis并查询值

    1.进入redisredis-cli -h ip -p port2.查看具体信息info 3.得到redis中存储的所有key值KEYS *4.获取指定key值的value值get "key ...

  9. 论文笔记:(CVPR2019)PointWeb: Enhancing Local Neighborhood Features for Point Cloud Processing

    目录 摘要 一.引言 二.相关工作 3D数据表示 点云深度学习 三.我们的方法 3.1 自适应特征调整(AFA)模块 3.1.1 影响函数fimp 3.1.2 关系函数frel 3.1.3 逐元素影响 ...

  10. Ghost ,博客系统代名词

    Ghost 博客系统是前 WordPress 的一些优秀员工的创业项目.项目仍然采用 100% 开源,加上官方的收费托管的商业模式,目前已经发展成为一个非常的博客系统. 为了更好的方便读者理解 Gho ...