现在的位置: 首页 > 综合 > 正文

servlet–过滤器之Ip过滤器

2017年08月23日 ⁄ 综合 ⁄ 共 2735字 ⁄ 字号 评论关闭

下面介绍了一个简单的Ip地址过滤器 包括过滤器类的编写和 web.xml的配置 

 http://blog.csdn.net/javaxiaochouyu/article/details/6367709

 

1.适配器模式 (让适配器类空实现适配器接口 ):

 

  1. package com.Jeelon.FilterAdapter;  
  2. import java.io.IOException;  
  3. import javax.servlet.Filter;  
  4. import javax.servlet.FilterChain;  
  5. import javax.servlet.FilterConfig;  
  6. import javax.servlet.ServletException;  
  7. import javax.servlet.ServletRequest;  
  8. import javax.servlet.ServletResponse;  
  9. public class IpFilterAdapter implements Filter {  
  10.     public void destroy() {  
  11.     }  
  12.     public void doFilter(ServletRequest arg0, ServletResponse arg1,  
  13.             FilterChain arg2) throws IOException, ServletException {  
  14.     }  
  15.     public void init(FilterConfig arg0) throws ServletException {  
  16.     }  
  17. }  

 

 

 

2.过滤器类 它继承至过滤器适配器并且实现其中关键方法:

 

  1. package com.Jeelon.ipFilter;  
  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 com.Jeelon.FilterAdapter.IpFilterAdapter;  
  10. public class IpFilter extends IpFilterAdapter{  
  11.     @Override  
  12.     public void doFilter(ServletRequest request, ServletResponse response,  
  13.             FilterChain chain) throws IOException, ServletException {  
  14.         HttpServletRequest request1  = (HttpServletRequest)request;  
  15.         HttpServletResponse response1 = (HttpServletResponse)response;  
  16.           
  17.         //获得客户端的IP地址  
  18.         String ip = request.getRemoteAddr() + "";  
  19.         System.out.println(ip);  
  20.         //以转义字符//对.进行转义  拆分   一般用,- | 用的比较多 用.就回出错 需要用转义字符转义  
  21.         /* 
  22.          ips[0] = 192 
  23.          ips[1]  = 168 
  24.          ips[2]  = 2 
  25.          ips[3]  = 47 
  26.           
  27.          */  
  28.         String ips[] = ip.split("//.");  
  29.           
  30.         //192.168.0.1  
  31.           
  32.         int ad = Integer.parseInt(ips[3]);  
  33.           
  34.         /* 
  35.          * 以上拆分方法还可以用以下代替: 
  36.          * int ad = Integer.parseInt(ip.substring(ip.lastIndexOf(".") + 1)); 
  37.          */  
  38.         if(ad >= 1 && ad <= 50){  
  39.             /*response.setContentType("text/html;charset=utf-8"); 
  40.             response.getWriter().print("您没有权限访问");*/  
  41.             request1.getRequestDispatcher("error.jsp").forward(request1, response1);  
  42.         }  
  43.         else{  
  44.             chain.doFilter(request, response);  
  45.         }  
  46.     }  
  47. }  

 

 

 

3.web.xml的配置 :

 

  1. <filter>  
  2.   <filter-name>IPFilter</filter-name>  
  3.   <filter-class>com.Jeelon.ipFilter.IpFilter</filter-class>  
  4.   </filter>  
  5.     
  6.   <filter-mapping>  
  7.   <filter-name>IPFilter</filter-name>  
  8.   <url-pattern>/*</url-pattern>  
  9.   </filter-mapping>  

 

 

这样 一个简单的Ip地址过滤器就产生了,在我们知道对方Ip的情况下 就可以阻止对方的访问!!

抱歉!评论已关闭.