请求参数
1.普通参数
post和get请求参数直接写在函数方法里就可以,但是要注意参数名称必须和url中的参数名称对应起来
若参数名称不对应,则需要加注解
@RequestMapping("/commonParam")
@ResponseBody
public String commonParam(@RequestParam("username") String name){
System.out.println(name);
return "{'module':'common param'}";
}
2.POJO类型参数
直接在请求里写属性值,传到后端时框架会自动将其打包成一个符合参数要求的对象
3.嵌套POJO类型参数
对象….对象.属性
4.数组类型参数
直接传,写多个同名参数即可,后端会自动转为数组类型 eg.String[] hobbies
5.集合类型参数⭐
添加@RequestParam
参数注解,避免框架错把集合类型解析为POJO类型
日期类型参数 :
框架可以自动解析,也使用@DateFormat
注解转换格式:
@RequestMapping("/dataParam")
@ResponseBody
public String dataParam(Date date,@DataFormat(pattern="yyyy-MM-dd")Date date1,@DataFormat(pattern="yyyy/MM/dd HH:mm:ss")Date date2){
return "{'module':'data param'}";
}
中文乱码
1.配置文件中添加过滤器
//处理中文乱码问题
@Override
protected Filter[] getServletFilters() {
CharacterEncodingFilter filter = new CharacterEncodingFilter();
filter.setEncoding("UTF-8");
return new Filter[]{filter};
}
2.pom中设置tomcat编码解码方式,即<uriEncoding>UTF-8</uriEncoding>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<port>80</port>
<path>/</path>
<uriEncoding>UTF-8</uriEncoding>
</configuration>
</plugin>
</plugins>
</build>
JSON
1.导入json解析依赖
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
2.开启json转为对象功能,使用注解@EnableWebMvc
⭐
@Configuration
@ComponentScan("com.yuan.controller")
@EnableWebMvc
public class SpringMvcConfig {
}
3.参数前添加@RequestBody
注解(因为json是requestbody的内容)
@RequestMapping("/listParamForJson")
@ResponseBody
public String listParamForJson(@RequestBody List<String> likes){
System.out.println(likes);
return "{'module':'list param for json'}";
}
响应
添加解析json的依赖
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
灵活使用@ResponseBody
注解,设置当前控制器返回值作为响应体
转换过程使用的是HttpMessageConverter
接口:

注意⭐
为什么可以实现自动类型转换?
- 前端传递字符串,后端使用日期Date接收
- 前端传递JSON数据,后端使用对象接收
- …
SpringMVC中提供了很多类型转换接口和实现类
在框架中,有一些类型转换接口,其中有:
- (1) Converter接口
/**
* S: the source type
* T: the target type
*/
public interface Converter<S, T> {
@Nullable
//该方法就是将从页面上接收的数据(S)转换成我们想要的数据类型(T)返回
T convert(S source);
}
注意:Converter所属的包为org.springframework.core.convert.converter
Converter接口的实现类

框架中有提供很多对应Converter接口的实现类,用来实现不同数据类型之间的转换
- (2) HttpMessageConverter接口
该接口是实现对象与JSON之间的转换工作