zoukankan      html  css  js  c++  java
  • 用过滤器Filter判断用户是否登陆

    用过滤器Filter判断用户是否登陆

    WEB.XML 

    [html] view plain copy
     
    1. <!-- 用户session的 键   sessionKEY -->  
    2.   <context-param>  
    3.     <param-name>userSessionKey</param-name>  
    4.     <param-value>USERSESSIONKEY</param-value>  
    5.   </context-param>  
    6.   <!-- 重定向的页面 -->  
    7.   <context-param>  
    8.     <param-name>rediretPage</param-name>  
    9.     <param-value>/u_member/Login.jsp</param-value>  
    10.   </context-param>  
    11.   <!-- 不需要过滤的页面 -->  
    12.   <context-param>  
    13.     <param-name>uncheckUrls</param-name>  
    14.     <param-value>/u_member/insert.jsp,/u_member/Login.jsp</param-value>  
    15.   </context-param>  

    Filter 过滤器代码

    [java] view plain copy
     
    1. package go.onlineShop.filter;  
    2.   
    3. import java.io.IOException;  
    4. import java.util.Arrays;  
    5. import java.util.List;  
    6.   
    7. import javax.servlet.Filter;  
    8. import javax.servlet.FilterChain;  
    9. import javax.servlet.FilterConfig;  
    10. import javax.servlet.ServletException;  
    11. import javax.servlet.ServletRequest;  
    12. import javax.servlet.ServletResponse;  
    13. import javax.servlet.annotation.WebFilter;  
    14. import javax.servlet.http.HttpServletRequest;  
    15. import javax.servlet.http.HttpServletResponse;  
    16.   
    17. /** 
    18.  * Servlet Filter implementation class IsLoginFilter 
    19.  * 判断是否登陆过滤器 
    20.  */  
    21. @WebFilter("/u_member")  
    22. public class IsLoginFilter implements Filter {  
    23.   
    24.     //从xml中取值  
    25.     String uncheckUrls =null;  
    26.     String userSessionKey=null;  
    27.     String rediretPage=null;  
    28.     /** 
    29.      * Default constructor.  
    30.      */  
    31.     public IsLoginFilter() {  
    32.         // TODO Auto-generated constructor stub  
    33.     }  
    34.   
    35.     /** 
    36.      * @see Filter#destroy() 
    37.      */  
    38.     public void destroy() {  
    39.         // TODO Auto-generated method stub  
    40.     }  
    41.   
    42.     /** 
    43.      * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) 
    44.      */  
    45.     public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {  
    46.         // TODO Auto-generated method stub  
    47.         //1.得到访问路径  
    48.         HttpServletRequest request = (HttpServletRequest)req;  
    49.         HttpServletResponse response = (HttpServletResponse)res;  
    50.         String reqUrl = request.getRequestURL().toString();  
    51.         String reqURI = request.getRequestURI();  
    52.           
    53.         String servletPath = request.getServletPath();  
    54.           
    55.     //  String[] uncheckUrl = uncheckUrls.split(",");  
    56.         List<String> urls = Arrays.asList(uncheckUrls.split(","));  
    57.         //2.如果是属于不需要过滤的地址就直接  放行  方法结束  
    58.         if(urls.contains(servletPath)){  
    59.             chain.doFilter(request, response);  
    60.             return;  
    61.         }  
    62.           
    63.         //3.从session中获取sessionKey对应的值;若不存在  则跳转到登陆页面  
    64.           
    65.         Object user = request.getSession().getAttribute(userSessionKey);  
    66.         if(user==null){  
    67.             request.getRequestDispatcher(rediretPage).forward(request, response);  
    68.             return;  
    69.         }  
    70.         //4若存在 则放行;  
    71.         chain.doFilter(request, response);  
    72.     }  
    73.   
    74.     /** 
    75.      * @see Filter#init(FilterConfig) 
    76.      */  
    77.     public void init(FilterConfig fConfig) throws ServletException {  
    78.         rediretPage=fConfig.getServletContext().getInitParameter("rediretPage");  
    79.         uncheckUrls=fConfig.getServletContext().getInitParameter("uncheckUrls");  
    80.         userSessionKey=fConfig.getServletContext().getInitParameter("userSessionKey");  
    81.     }  
    82.   
    83. }  

    Login页面

    参考:

    用过滤器Filter判断用户是否登陆 - CSDN博客
    http://blog.csdn.net/u010634066/article/details/38769577

  • 相关阅读:
    jhljx跑跑跑(找规律)
    FFT教你做乘法(FFT傅里叶变换)
    寻找最远点对(凸包求解)
    捡火柴的Nova君(n个线段相交问题)
    生命游戏/Game of Life的Java实现
    如果看了此文你还不懂傅里叶变换,那就过来掐死我吧【完整版】(转)
    北航第十一届程序设计竞赛网络预赛题解
    LeetCode 3 Longest Substring Without Repeating Characters(最长不重复子序列)
    UVa 112
    LeetCode 2 Add Two Numbers(链表操作)
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/8035759.html
Copyright © 2011-2022 走看看