• Filter过滤器的写法


    http://pengenjing.iteye.com/blog/1607248

    这里写的过滤器用的是适配器模式,思路为:

    先写一个类实现Filter,然后在让你写的过滤器来继承自这个类;

    步骤:1.建一个AbstractFilter实现Filter;2.建一个类来继承AbstractFilter,还要在web.xml中配置;

    web.xml中的配置:

    Java代码  收藏代码
    1. <filter>  
    2.         <filter-name>validateFilter</filter-name>  
    3.         <filter-class>com.peng.ValidateFilter(这里写的是类的完全限定名)</filter-class>  
    4.     </filter>  
    5.     <filter-mapping>  
    6.         <filter-name>validateFilter</filter-name>  
    7.         <url-pattern>/*(这里是让所有的通过)</url-pattern>  
    8.     </filter-mapping>  

    Abstractr.java

    Java代码  收藏代码
    1. public abstract class AbstractFilter implements Filter{  
    2.   
    3.     public void destroy() {}  
    4.   
    5.     public abstract void doFilter(ServletRequest request, ServletResponse response,  
    6.             FilterChain chain) throws IOException, ServletException ;  
    7.   
    8.     public void init(FilterConfig filterConfig) throws ServletException {}  
    9.   
    10. }  

     下面是我自己写的过滤器:我给他取名为  ValidateFilter;

    ValidateFilter.java

    Java代码  收藏代码
    1. package com.kaishengit.web.filter;  
    2. import java.io.IOException;  
    3. import javax.servlet.FilterChain;  
    4. import javax.servlet.ServletException;  
    5. import javax.servlet.ServletRequest;  
    6. import javax.servlet.ServletResponse;  
    7. import javax.servlet.http.HttpServletRequest;  
    8. import javax.servlet.http.HttpServletResponse;  
    9. import javax.servlet.http.HttpSession;  
    10.   
    11. import com.kaishengit.entity.User;  
    12. import com.kaishengit.util.Const;  
    13.   
    14. public class ValidateFilter extends AbstractFilter{  
    15.   
    16.     @Override  
    17.     public void doFilter(ServletRequest req, ServletResponse resp,  
    18.             FilterChain chain) throws IOException, ServletException {  
    19.           
    20.         HttpServletRequest request = (HttpServletRequest) req;  
    21.         HttpServletResponse response = (HttpServletResponse) resp;  
    22.           
    23.         //判断如果是index.jspx 放行  
    24.         String uri = request.getRequestURI();  
    25.         uri = uri.substring(uri.lastIndexOf("/")+1);  
    26.         //System.out.println("当前请求的路径: " + uri);  
    27.           
    28.           
    29.           
    30.         if("".equals(uri) || "index.jsp".equals(uri) || "index.jspx".equals(uri) || "login.jspx".equals(uri) || uri.endsWith("png") || uri.endsWith("jpg")) {  
    31.             //所有人都能请求到的URI,放行  
    32.             chain.doFilter(request, response);  
    33.         } else {    //下面是判断是否有session,也就是用户是否已登录状态;                                                                                                                                          
    34.             HttpSession session = request.getSession();  
    35.             User user = (User) session.getAttribute(Const.USER_IN_SESSION);  
    36.             if(user == null) {  
    37.                 System.out.println("URI:" + uri + ">>>>访问被拒绝!");  
    38.                 response.sendRedirect("index.jspx?code=10002");  
    39.             } else {  
    40.                 chain.doFilter(request, response);  
    41.             }  
    42.         }     
    43.           
    44.     }  
    45.   
    46. }  
  • 相关阅读:
    SCI写作经典替换词,瞬间高大上!(转)
    最佳化常用测试函数 Optimization Test functions
    算法复杂度速查表
    VS 代码行统计
    CPLEX IDE 菜单栏语言设置( 中文 英文 韩文 等多国语言 设置)
    如何从PDF文件中提取矢量图
    Matlab无法打开M文件的错误( Undefined function or method 'uiopen' for input arguments of type 'char)
    visual studio 资源视图 空白 解决方案
    MFC DialogBar 按钮灰色不响应
    嗨翻C语言笔记(二)
  • 原文地址:https://www.cnblogs.com/master-zxc/p/6054328.html
Copyright © 2020-2023  润新知