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日
weilaizhisheng LV21
2023年1月9日
18356557758 LV5
2022年7月10日
locklock LV2
2022年6月24日
wubinbin LV11
2022年5月25日
yanguobin LV7
2022年5月3日
taoshen95 LV16
2022年3月14日
随风者 LV3
2022年2月2日
895919265 LV1
2022年1月24日
silencecfx LV1
2021年12月26日