简介
此篇主要介绍在平常工作中的有关SpringMVC遇到的问题
问题
springmvc两个参数实体的封装
默认封装 (可以)
请求url : localhost:8080/mytest/mytest?outputcode=1243&id&netweight=321
后台代码
结果
@RequestBody封装 (不可以)
结果
contentType为form-data时无法接收参数
问题 : contentType为form-data时无法接收参数
原因 : 如果不是文件类型请求,我们使用request.getParameter(“”);方法是可以获取到参数内容的,如果是文件类型的请求即请求的头部信息为“multipart/form-data”,时,需要如下处理:
解决 :
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
String contentType = req.getContentType();
if (contentType != null && contentType.contains("multipart/form-data")) {
MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
MultipartHttpServletRequest multipartRequest = resolver.resolveMultipart(request);
// 将转化后的 request 放入过滤链中
request = multipartRequest;
}
通过spring的轮子,实现request的转换,然后使用request.getParameter(“”);
@Bean(name = "multipartResolver")
public MultipartResolver multipartResolver() {
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setDefaultEncoding("UTF-8");
//resolveLazily属性启用是为了推迟文件解析,以在在UploadAction中捕获文件大小异常
resolver.setResolveLazily(true);
resolver.setMaxInMemorySize(40960);
//上传文件大小 5M 5*1024*1024
resolver.setMaxUploadSize(5 * 1024 * 1024);
return resolver;
}
方式一
方式二
方式三