在springMVC中,可以通过配置来过滤静态资源,
也可以在web.xml中进行配置,通过自定义Filter来实现。
web.xml配置如下。
<filter> <filter-name>securityFilter</filter-name> <filter-class>com.wswhr.SecurityFilter</filter-class> <init-param> <param-name>ignores</param-name> <param-value>/perm/getCanalChargeUsers,/changePW,/app/appNavs,/app/download,/tulogin,/tulogout,/static,/login,/img/select,/tokenMethod,/deleteToken</param-value> </init-param> </filter> <span style="white-space:pre"> </span><filter-mapping> <span style="white-space:pre"> </span><filter-name>securityFilter</filter-name> <span style="white-space:pre"> </span><url-pattern>*</url-pattern> <span style="white-space:pre"> </span></filter-mapping>
Filter中,有个init方法,会在web容器创建Filter的时候调用,因此,可以利用这个方法来传一些参数。
参考文章:http://www.cnblogs.com/hellojava/archive/2012/12/19/2824444.html
用户在配置filter时,可以使用<init-param>为filter配置一些初始化参数,当web容器实例化Filter对象,调用其init方法时,会把封装了filter初始化参数的filterConfig对象传递进来。
Filter代码如下:
package com; import java.io.IOException; import java.util.HashSet; import java.util.Set; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class SecurityFilter implements Filter { private Set<String> prefixIignores = new HashSet<String>(); public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; if (canIgnore(request)) { chain.doFilter(req, res); return; } try { chain.doFilter(request, response);//已经登录 } catch (Exception e) { e.printStackTrace(); } finally { } } public void init(FilterConfig config) throws ServletException { String cp = config.getServletContext().getContextPath(); String ignoresParam = config.getInitParameter("ignores"); String[] ignoreArray = ignoresParam.split(","); for (String s : ignoreArray) { prefixIignores.add(cp + s); } } @Override public void destroy() { prefixIignores = null; } private boolean canIgnore(HttpServletRequest request) { String url = request.getRequestURI(); for (String ignore : prefixIignores) { if (url.startsWith(ignore)) { return true; } } return false; } }