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 LV4
2022年5月3日
taoshen95 LV14
2022年3月14日
随风者 LV3
2022年2月2日
895919265 LV1
2022年1月24日
silencecfx LV1
2021年12月26日