流程:
先写Filter类,然后在web.xml中配置
public class BuyerLogonValidateFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)req;
Buyer buyer = WebUtil.getBuyer(request);
if(buyer == null){
String url = WebUtil.getRequestURIWithParam(request);//得到当前请求路径
String directUrl = new String(Base64.encodeBase64(url.getBytes()));
HttpServletResponse response = (HttpServletResponse)res;
response.sendRedirect("/user/logon.do?directUrl="+ directUrl);
}else{
chain.doFilter(req, res);
}
}
public void init(FilterConfig arg0) throws ServletException {
}
}
配置信息为:
<!-- 购物车集过滤器,解决/customer/* 购买 -->
<filter>
<filter-name>BuyerLogonValidateFilter</filter-name>
<filter-class>com.etean.web.filter.BuyerLogonValidateFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>BuyerLogonValidateFilter</filter-name>
<url-pattern>/customer/*</url-pattern>
</filter-mapping>
注释:粗粒度过滤,用与过滤在/customer/* 下面的页面必须登录后才能访问
也就是buyer 不能为空,如果为空,就跳转至登录页面/user/logon.do