刚刚接触Filter求注释能加深理解,该怎么解决
刚刚接触Filter求注释能加深理解
•public class CheckLoginFilter
• implements Filter
•{
• protected FilterConfig filterConfig = null;
• private String redirectURL = null;
• private List notCheckURLList = new ArrayList();
• private String sessionKey = null;
•
• public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException
• {
• HttpServletRequest request = (HttpServletRequest) servletRequest;
• HttpServletResponse response = (HttpServletResponse) servletResponse;
•
• HttpSession session = request.getSession();
• if(sessionKey == null)
• {
• filterChain.doFilter(request, response);
• return;
• }
• if((!checkRequestURIIntNotFilterList(request)) && session.getAttribute(sessionKey) == null)
• {
• response.sendRedirect(request.getContextPath() + redirectURL);
• return;
• }
• filterChain.doFilter(servletRequest, servletResponse);
• }
•
• public void destroy()
• {
• notCheckURLList.clear();
• }
•
• private boolean checkRequestURIIntNotFilterList(HttpServletRequest request)
• {
• String uri = request.getServletPath() + (request.getPathInfo() == null ? "" : request.getPathInfo());
• return notCheckURLList.contains(uri);
• }
•
• public void init(FilterConfig filterConfig) throws ServletException
• {
• this.filterConfig = filterConfig;
• redirectURL = filterConfig.getInitParameter("redirectURL");
• sessionKey = filterConfig.getInitParameter("checkSessionKey");
•
• String notCheckURLListStr = filterConfig.getInitParameter("notCheckURLList");
•
• if(notCheckURLListStr != null)
• {
• StringTokenizer st = new StringTokenizer(notCheckURLListStr, ";");
• notCheckURLList.clear();
• while(st.hasMoreTokens())
• {
• notCheckURLList.add(st.nextToken());
• }
• }
• }
•}
求专家帮我把这个过滤器方法中一些主要代码加下注释,IF判断条件也帮忙注释一下,在下不胜感激!
------解决方案--------------------
//这是一个检查请求安全权限的Filter,可以配置。起作用时会将不符合条件的请求重定向。
•public class CheckLoginFilter
• implements Filter //过滤器都要实现该接口
•{
• protected FilterConfig filterConfig = null; //用于保存配置信息
• private String redirectURL = null;
• private List notCheckURLList = new ArrayList(); //可以免于处理的URL清单
• private String sessionKey = null; //若null则过滤器不起作用,希望启动本过滤器的时候要设一个非null值
•
• public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException
• {
• HttpServletRequest request = (HttpServletRequest) servletRequest; //类型转换,方便后面调用getSession等方法
• HttpServletResponse response = (HttpServletResponse) servletResponse; //类型转换
•
• HttpSession session = request.getSession(); //取当前请求对应的会话
• if(sessionKey == null)
• {
• filterChain.doFilter(request, response); //放行
• return;
• }
• if((!checkRequestURIIntNotFilterList(request)) && session.getAttribute(sessionKey) == null)
• { //如果本URL必须处理,同时其会话中又没有sessionKey记号,则拦截这些请求,重定向到指定URL
• response.sendRedirect(request.getContextPath() + redirectURL);
• return;
• }
• filterChain.doFilter(servletRequest, servletResponse); //如果上面的检查通过,则放行
• }
•public class CheckLoginFilter
• implements Filter
•{
• protected FilterConfig filterConfig = null;
• private String redirectURL = null;
• private List notCheckURLList = new ArrayList();
• private String sessionKey = null;
•
• public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException
• {
• HttpServletRequest request = (HttpServletRequest) servletRequest;
• HttpServletResponse response = (HttpServletResponse) servletResponse;
•
• HttpSession session = request.getSession();
• if(sessionKey == null)
• {
• filterChain.doFilter(request, response);
• return;
• }
• if((!checkRequestURIIntNotFilterList(request)) && session.getAttribute(sessionKey) == null)
• {
• response.sendRedirect(request.getContextPath() + redirectURL);
• return;
• }
• filterChain.doFilter(servletRequest, servletResponse);
• }
•
• public void destroy()
• {
• notCheckURLList.clear();
• }
•
• private boolean checkRequestURIIntNotFilterList(HttpServletRequest request)
• {
• String uri = request.getServletPath() + (request.getPathInfo() == null ? "" : request.getPathInfo());
• return notCheckURLList.contains(uri);
• }
•
• public void init(FilterConfig filterConfig) throws ServletException
• {
• this.filterConfig = filterConfig;
• redirectURL = filterConfig.getInitParameter("redirectURL");
• sessionKey = filterConfig.getInitParameter("checkSessionKey");
•
• String notCheckURLListStr = filterConfig.getInitParameter("notCheckURLList");
•
• if(notCheckURLListStr != null)
• {
• StringTokenizer st = new StringTokenizer(notCheckURLListStr, ";");
• notCheckURLList.clear();
• while(st.hasMoreTokens())
• {
• notCheckURLList.add(st.nextToken());
• }
• }
• }
•}
求专家帮我把这个过滤器方法中一些主要代码加下注释,IF判断条件也帮忙注释一下,在下不胜感激!
------解决方案--------------------
//这是一个检查请求安全权限的Filter,可以配置。起作用时会将不符合条件的请求重定向。
•public class CheckLoginFilter
• implements Filter //过滤器都要实现该接口
•{
• protected FilterConfig filterConfig = null; //用于保存配置信息
• private String redirectURL = null;
• private List notCheckURLList = new ArrayList(); //可以免于处理的URL清单
• private String sessionKey = null; //若null则过滤器不起作用,希望启动本过滤器的时候要设一个非null值
•
• public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException
• {
• HttpServletRequest request = (HttpServletRequest) servletRequest; //类型转换,方便后面调用getSession等方法
• HttpServletResponse response = (HttpServletResponse) servletResponse; //类型转换
•
• HttpSession session = request.getSession(); //取当前请求对应的会话
• if(sessionKey == null)
• {
• filterChain.doFilter(request, response); //放行
• return;
• }
• if((!checkRequestURIIntNotFilterList(request)) && session.getAttribute(sessionKey) == null)
• { //如果本URL必须处理,同时其会话中又没有sessionKey记号,则拦截这些请求,重定向到指定URL
• response.sendRedirect(request.getContextPath() + redirectURL);
• return;
• }
• filterChain.doFilter(servletRequest, servletResponse); //如果上面的检查通过,则放行
• }