SpringMVC的数据响应
jackson格式
Jackson 是当前用的比较广泛的,用来序列化和反序列化 json 的 Java 的开源框架。 Spring MVC 的默认 json 解析器便是 Jackson。 Jackson 优点很多。 Jackson 所依赖的 jar 包较少 ,简单易用。与其他 Java 的 json 的框架 Gson 等相比, Jackson 解析大的 json 文件速度比较快;Jackson 运行时占用内存比较低,性能比较好;Jackson 有灵活的 API,可以很容易进行扩展和定制。
开发中往往要将复杂的java对象转换成json格式的字符串, 我们可以使用web阶段学习过的json转换工具jackson进行转换,导入jackson依赖。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.8</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.8</version>
</dependency>
Jackson 最常用的 API 就是基于"对象绑定" 的 ObjectMapper
使用mvc的注解驱动
<mvc:annotation-driven/>
-
自动加载 RequestMappingHandlerMapping(处理映射器)和 RequestMappingHandlerAdapter( 处 理 适 配 器 ),可用在Spring-mvc.xml配置文件中使用它来 替代注解处理器和适配器的配置。 -
默认底层就会集成jackson进行对象或集合的json格式字符串的转换。
SpringMVC 获得请求数据
获得请求参数
获得基本类型参数
获得POJO类型参数和获得数组类型参数
Controller中的业务方法的POJO参数的属性名与请求参数的name一致,参数值会自动映射匹配。
获得集合类型参数
指定放行静态资源
请求数据乱码问题
当post请求时,数据会出现乱码,我们可以设置一个过滤器来进行编码的过滤。
<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>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Restful风格
自定义类型转换器
自定义类型转换器的开发步骤:
① 定义转换器类实现Converter接口
创建了一个uitls文件夹,下面创建该类:
public class DateConverter implements Converter<String, Date> {
@Override
public Date convert(String s) {
Date parse = null;
if (s != null && !("".equals(s))) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try {
parse = format.parse(s);
} catch (ParseException e) {
e.printStackTrace();
}
}
return parse;
}
}
② 在spring-mvc.xml 配置文件中声明转换器
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="com.文件名.utils.DateConverter"/>
</list>
</property>
</bean>
③ 在< annotation-driven>中引用转换器
<mvc:annotation-driven conversion-service="converterService"/>
获得Servlet相关API
文件上传
步骤: ① 导入fileupload和io坐标
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.3</version>
</dependency>
② 配置文件上传解析器
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"/>
<property name="maxUploadSize" value="1048576"/>
</bean>
③ 编写文件上传代码
public class UploadFile {
public static ResponseJson upload(HttpServletRequest request, MultipartFile file) throws IOException {
String realPath = request.getServletContext().getRealPath("/upload");
File dir = new File(realPath);
if (!dir.exists()) {
dir.mkdirs();
}
String oldName = file.getOriginalFilename();
String suffix = oldName.substring(oldName.lastIndexOf('.') + 1);
String newName = UUID.randomUUID().toString().replace("-", "") + "." + suffix;
file.transferTo(new File(realPath + File.separator + newName));
return new ResponseJson(100, "上传成功!", "upload/" + newName);
}
}
多文件上传实现
多文件上传,只需要将页面修改为多个文件上传项,将方法参数MultipartFile类型修改为MultipartFile[]即可
|