2.在web.xml中配置过滤器时,一个filter对应多个filter-mapping,不建议一个filter-mapping里边写多个url-pattern。
<filter>
<filter-name>login</filter>
<filter-class>com.xxx.xxx.XXXFilter</filter-class>
<filter>
<filter-mapping>
<filter-name>login</filter>
<url-mapping>/order/*</url-mapping>
</filter-mapping>
<filter-mapping>
<filter-name>login</filter>
<url-mapping>/cart/*</url-mapping>
</filter-mapping>
- 将要过滤的资源放在filter的初始化参数,在filter初始化时读取到这些参数,在dofilter中获取请求的url,判断如果url包含这些资源就执行过滤,如果不包含就放行。
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>com.xxx.filter.LoginFilter</filter-class>
<init-param>
<param-name>ignores</param-name>
<!-- 将要过滤的资源放在这里 -->
<param-value>/cart/,/order/,/address/,/addr/</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
public class LoginFilter implements Filter {
/**
* 将要过滤的资源放在init-param中
* 在web.xml中配置filter的init-param
*/
private String includedPaths;
private String [] includedPathArray;
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
boolean flag = false; // 判断是否要过滤
String uri = request.getRequestURI();
for (String path : includedPathArray)
if (uri.contains(path)) {
flag = true;
break;
}
if (flag) {
User user = (User) request.getSession().getAttribute("user");
if(user == null) {
response.sendRedirect(request.getContextPath() + "/user/login_form.jsp");
} else {
chain.doFilter(req,resp);
}
} else {
chain.doFilter(req,resp);
}
}
public void init(FilterConfig config) throws ServletException {
// 初始化时读取web.xml中配置的init-param
includedPaths = config.getInitParameter("include");
if(StringUtils.isNotBlank(includedPaths) && StringUtils.isNotEmpty(includedPaths)) {
includedPathArray = includedPaths.split(",");
}
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- ovod.cn 版权所有 湘ICP备2023023988号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务