首页>代码>java HttpSessionListener实现对在线用户的精确统计>/onlineUserCounter/src/com/kaka/filter/LoginFilter.java
package com.kaka.filter;

import java.io.IOException;

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;

import org.apache.log4j.Logger;

public class LoginFilter implements Filter{
	
	private Logger logger = Logger.getLogger(LoginFilter.class);
	
	private static final String SHOW_LOGIN_PATH = "SHOW_LOGIN_PATH";    //显示登录页面  
    private static final String LOGIN_PERSONID = "LOGIN_PERSONID";      //登录用户在session中的属性key -- session.setAttribute(key,value)  
    private String showloginPath;  
    private String loginPersonId;  
      
    public void init(FilterConfig config) throws ServletException { 
    	logger.info("LoginFilter init...");
        showloginPath = config.getInitParameter(SHOW_LOGIN_PATH);  
        loginPersonId = config.getInitParameter(LOGIN_PERSONID);  
        if(showloginPath==null || showloginPath.equals("") || showloginPath.equals("null") ){  
            throw new ServletException("登录页面配置出错...");  
        }  
    }  
    
    /**
     * 对未登录的用户,请求跳转到登陆页面
     */
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {  
    	 
    	logger.info("LoginFilter doFilter...");
    	HttpServletRequest  httpReq  = (HttpServletRequest) request;  
        HttpServletResponse httpResp = (HttpServletResponse) response;  
        //判断是否是登陆页面  
        String servletPath = httpReq.getServletPath();  
        //flag:若为登陆页面的路径 /login.jsp,则赋值true,否则赋值false  
        if(servletPath.equals(showloginPath)){  
            chain.doFilter(request, response);  
            return;  
        }else{   //如果不是登录页面,则需先判断用户是否已登录  
            Object loginId = httpReq.getSession().getAttribute(loginPersonId);  
            if(loginId != null){//如果不为空,则进行已登录处理  
                chain.doFilter(request, response);  
            }else{//如果为空,则进行未登录处理  
                httpReq.getRequestDispatcher(showloginPath).forward(httpReq,httpResp);  
            }  
         }  
    }  
      
    public void destroy(){  
    	logger.info("LoginFilter destroy...");
    }  

}
最近下载更多
JiangYing009  LV8 2023年11月16日
wubinbin  LV11 2022年5月25日
随风者  LV3 2022年2月2日
895919265  LV1 2022年1月24日
kay523393  LV2 2021年10月8日
breakCY  LV15 2021年8月18日
yawhaaa  LV1 2021年3月23日
炤杰爱玩代码菌  LV1 2020年11月17日
jifang  LV1 2020年10月28日
不是菜鸡是蔡文姬  LV2 2020年9月25日
最近浏览更多
JiangYing009  LV8 2023年11月16日
weilaizhisheng  LV21 2023年1月9日
18356557758  LV5 2022年7月10日
locklock  LV2 2022年6月24日
wubinbin  LV11 2022年5月25日
yanguobin  LV4 2022年5月3日
taoshen95  LV14 2022年3月14日
随风者  LV3 2022年2月2日
895919265  LV1 2022年1月24日
silencecfx  LV1 2021年12月26日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友