springMVC 过滤器获取bean 和 multipart/form-data请求参数
2017-09-26 16:16
1246 查看
在web项目中,有时我们需要在自定义的过滤器中对请求进行身份验证或者其他一些操作,这里就可能出现一些问题,如获取不到multipart/form-data请求参数,无法注入bean等。
这里介绍其中一种简单的解决方案:
过滤器中获取bean
可以通过spring上下文实现,主要操作是:
获取 multipart/form-data 请求参数
可通过CommonsMultipartResolver 类的
总结
1、web.xml 配置
如果一个过滤器要配置多个url-pattern,请配置多个filter-mapping,如下:
2、自定义过滤器 MyFilter.java
这里介绍其中一种简单的解决方案:
过滤器中获取bean
可以通过spring上下文实现,主要操作是:
ServletContext sc = filterConfig.getServletContext(); XmlWebApplicationContext cxt = (XmlWebApplicationContext) WebApplicationContextUtils.getWebApplicationContext(sc); DemoBean demoBean = (DemoBean) cxt.getBean("demoBean");
获取 multipart/form-data 请求参数
可通过CommonsMultipartResolver 类的
resolveMultipart(final HttpServletRequest request)方法将HttpServletRequest转化为MultipartHttpServletRequest,然后通过MultipartHttpServletRequest对象的
getParameter(String var1)方法获取对应的属性值。
String contentType = request.getContentType(); if (contentType != null && contentType.contains("multipart/form-data")) { MultipartHttpServletRequest multiReq = multipartResolver.resolveMultipart(request); } String var = request.getParameter("var");
总结
1、web.xml 配置
<filter> <filter-name>myFilter</filter-name> <filter-class>cn.ted.smsparser.web.filter.MyFilter</filter-class> </filter> <filter-mapping> <filter-name>myFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
如果一个过滤器要配置多个url-pattern,请配置多个filter-mapping,如下:
<filter> <filter-name>myFilter</filter-name> <filter-class>cn.ted.smsparser.web.filter.MyFilter</filter-class> </filter> <filter-mapping> <filter-name>myFilter</filter-name> <url-pattern>/pattern1/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>myFilter</filter-name> <url-pattern>/pattern2/*</url-pattern> </filter-mapping>
2、自定义过滤器 MyFilter.java
public class MyFilter implements Filter { private CommonsMultipartResolver multipartResolver; private FilterConfig filterConfig; @Override public void init(FilterConfig filterConfig) throws ServletException { multipartResolver = new CommonsMultipartResolver(); this.filterConfig = filterConfig; } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; // 获取bean ServletContext sc = filterConfig.getServletContext(); XmlWebApplicationContext cxt = (XmlWebApplicationContext) WebApplicationContextUtils.getWebApplicationContext(sc); DemoBean demoBean = (DemoBean) cxt.getBean("demoBean"); // 处理 multipart/form-data 请求 String contentType = request.getContentType(); if (contentType != null && contentType.contains("multipart/form-data")) { MultipartHttpServletRequest multiReq = multipartResolver.resolveMultipart(request); // 将转化后的 request 放入过滤链中 servletRequest = multiReq; request = multiReq; } //todo : your code filterChain.doFilter(servletRequest, servletResponse); } @Override public void destroy() {} }
相关文章推荐
- 过滤器中处理multipart/form-data头部的post请求request.getParameter(")获取不到参数问题
- springMvc 完美解决 multipart/form-data 方式提交请求 在 Filter 中 ServletRequest.getParameter方法 获取不到参数的问题
- springMvc 完美解决 multipart/form-data 方式提交请求 在 Filter 中 ServletRequest.getParameter方法 获取不到参数的问题
- springMvc 完美解决 multipart/form-data 方式提交请求 在 Filter 中 ServletRequest.getParameter方法 获取不到参数的问题
- web过滤器中获取请求的参数(content-type:multipart/form-data)
- web过滤器中获取请求的参数(content-type:multipart/form-data)
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
- enctype=“multipart/form-data”,Servlet获取参数
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
- HTTP AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
- enctype="multipart/form-data"的表单无法获取表单中除了type=file以外的其他参数 commons-fileupload 获取除file外其他参数
- post multipart/form-data 类型表单如何获取File外其他参数
- spring put multipart/form-data 获取不到参数
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
- enctype="multipart/form-data" 文件上传,获取form 表单参数的问题
- enctype=“multipart/form-data”,Servlet获取参数 原创 2017年03月21日 18:46:44 标签:enctype /servlet文件上传 2094 HTML表
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式