81,122
社区成员




/ 用于创建MultipartHttpServletRequest
private MultipartResolver multipartResolver = null;
public void init(FilterConfig filterConfig) throws ServletException {
//获取multipartResolver 类
WebApplicationContext webApplicationContext = ContextLoader
.getCurrentWebApplicationContext();
ServletContext context = webApplicationContext.getServletContext();
WebApplicationContext ctx = WebApplicationContextUtils
.getWebApplicationContext(context);
multipartResolver = (MultipartResolver) ctx.getBean("multipartResolver");
}
2、再doFilter方法判断form表单中的entype是否有multipart,如果有,则把request替换成MultipartHttpServletRequest传递下去
public void doFilter(ServletRequest req, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)req;
HttpSession session = request.getSession();
CurrentUserBean sysUser = (CurrentUserBean)session.getAttribute("http_session_atribute_current_user_info");
//判断在新增修改时,如果form表中的entype中有multipart/form-data,则把request换成MultipartHttpServletRequest,这样
//才可以获取到form表中的值,并且进行过滤
String enctype = req.getContentType();
if (StringUtils.isNotBlank(enctype) && enctype.contains("multipart/form-data")){
// 返回 MultipartHttpServletRequest 用于获取 multipart/form-data 方式提交的请求中 上传的参数
chain.doFilter(new LocalXssHttpServletRequestWrapper(multipartResolver.resolveMultipart(request),filterChar,replaceChar,splitChar), response);
}else {
chain.doFilter(new LocalXssHttpServletRequestWrapper(request,filterChar,replaceChar,splitChar), response);
}
}
3、这样,你再接下来的request中就能获取到值了。