在开发购物网站的过程中经常会遇到进入结算界面时,如果用户未登录,要求用户登录的界面,这就是过滤器起的作用
这是本人写的过滤器,供大家参考
1.在web.xml中进行配置
<filter>
<filter-name>buyerLogonValidateFilter</filter-name>
<filter-class>com.lv.filter.BuyerLogonValidateFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>buyerLogonValidateFilter</filter-name>
<url-pattern>/customer/*</url-pattern>
</filter-mapping>
2.编辑BuyerLogonValidateFilter类
public class BuyerLogonValidateFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request=(HttpServletRequest)req;
String userName=(String)request.getSession().getAttribute("user");
if(userName==null){
String url="/customer/shopping/deliver.do";
request.setAttribute("url", url);
request.getRequestDispatcher("/jsp/login.jsp").forward(req, res);
}else{
chain.doFilter(req, res);
}
}
public void init(FilterConfig arg0) throws ServletException {
}
}
这样如果用户未登录,就回自动跳转到用户登录界面
3.对用户登录方法进行相应的修改
一.可以在jsp界面中增加相应的隐藏字段,如果是正常登录隐藏字段的之为空,如果是从过滤器请求而来就不为空
<input type="hidden" name="url" value="${url}">
然后在formbean中设置相应的字段url,在action中的登录方法中对url进行判断 ,如果" ".equals(url)为假,则跳转到如,结算页面即可。。。。。。