SpringMVC-获取参数
目录
- 环境
- 通过ServletAPI获取
- 通过控制器方法的形参获取请求参数
- @RequestParam
- @RequestHeader
- @CookieValue
- 通过POJO获取请求参数
- 解决乱码
环境
IDE:idea 2020.3
构建工具:maven-3.8.1
服务器:tomcat9
Spring版本:5.3.1
org.springframework
spring-webmvc
5.3.1
ch.qos.logback
logback-classic
1.2.3
javax.servlet
javax.servlet-api
3.1.0
provided
org.thymeleaf
thymeleaf-spring5
3.0.12.RELEASE
<?xml version="1.0" encoding="UTF-8"?>
springMVC
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springMVC.xml
1
springMVC
/
通过ServletAPI获取
首页
hello
hello
/**
*HelloController
*/
@RequestMapping("/")
public String index() {
return "index";
}
@RequestMapping("/testParam")
public String testParam(HttpServletRequest request) {
String userName = request.getParameter("userName");
System.out.println("userName = " + userName);
return "hello";
}
通过控制器方法的形参获取请求参数
在控制器方法中设置与请求参数名一样的形参,DispatcherServlet就会将请求参数赋值给相应的形参
如果请求参数中有多个同名的参数,可以设置一个数组来接收
@RequestParam
@RequestParam将请求参数和控制器方法的形参进行绑定,有三个属性:
1:value:指定为形参赋值的请求参数的参数名
2:required:设置是否必须传输此请求参数,默认值为true
3:defaultValue:不管required属性值为true或false,当value所指定的请求参数没有传输或传输的值为""时,则使用默认值为形参赋值
@RequestHeader
@RequestHeader是将请求头信息和控制器方法的形参创建映射关系,用法同@RequestParam
@CookieValue
@CookieValue是将cookie数据和控制器方法的形参创建映射关系,用法同@RequestParam
通过POJO获取请求参数
可以在控制器方法中设置一个实体类类型的形参,如果请求参数的参数名和实体类中的属性名一致,那么请求参数就会为此属性赋值
package com.fly.entity;
/**
* @author 26414
*/
public class Person {
private String userName;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Person() {
}
@Override
public String toString() {
return "Person{" +
"userName='" + userName + '\'' +
'}';
}
public Person(String userName) {
this.userName = userName;
}
}
解决乱码
在web.xml中注册编码过滤器CharacterEncodingFilte
通过源码可以得出过滤器
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceResponseEncoding
true
CharacterEncodingFilter
/*