StrutsPrepareAndExecuteFilter为struts2.3版本的过滤器,但是其影响struts上传文件;故而改造如下:
继承StrutsPrepareAndExecuteFilter,并修改doFilter设置。红色为不需要过滤的部分;
public class MyStrutsFilter extends StrutsPrepareAndExecuteFilter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
String url = request.getRequestURI();
try {
if (url.indexOf("/oa/") > -1) {
chain.doFilter(req, res);
} else {
super.doFilter(req, res, chain);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
web.xml的配置如下:
<filter>
<filter-name>struts</filter-name>
<filter-class>
com.xxx.login.action.MyStrutsFilter
</filter-class>
<init-param>
<param-name>config</param-name>
<param-value>struts-default.xml,struts-plugin.xml,conf/struts/struts.xml </param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>