• 用过滤器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

  • 相关阅读:
    详解机器学习中的熵、条件熵、相对熵、交叉熵
    使用Keras进行深度学习:(三)使用text-CNN处理自然语言(上)
    粒子群优化算法(PSO)之基于离散化的特征选择(FS)(一)
    DNN模型训练词向量原理
    TensorFlow 实战卷积神经网络之 LeNet
    五大经典卷积神经网络介绍:LeNet / AlexNet / GoogLeNet / VGGNet/ ResNet
    Oracle 查询版本号
    C# 递归获取 文件夹的 所有文件
    SQL Server 常用语句
    Oracle 导入大量数据
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/8035759.html
Copyright © 2020-2023  润新知