Servlet过滤器机制分析及应用(二)

2  应用实例

  从上面分析可知,实现Servlet过滤器,需要两步:第一步开发过滤器,设计一个实现Filter接口的类;第二步通过web.xml配置过滤器,实现过滤器和Servlet、jsp页面之间的映射。

  以下设计一个简单的IP地址过滤器,根据用户的IP地址进行对网站的访问控制。

  (1) 过滤器类的设计 ipfilter.java

  package ipf;

        import javax..servlet.*;

  import  java.io.IOException;

  public class ipfilter implements Filter  //实现Filter接口

  { protected FilterConfig config;

    protected String rejectedIP;

    public void init(FilterConfig filterConfig)throws ServletException

    { this.config=filterConfig;  //从Web服务器获取过滤器配置对象

     rejectedIP=config.getInitParameter("RejectedIP");  //从配置中取得过滤IP

     if(rejectedIP==null) {rejectedIP=""}

    }

    public void doFilter(ServletRequest request,ServletResponse response,FilterChain )

                       throwsIOException

    {RequestDispatcher dispatcher=request.getRequestDispatcher("rejectedError.jsp"); 

                 String remoteIP=request.getRemoteAddr();   //获取客户请求IP

     int i=remoteIP.lastIndexOf(".");

     int r=rejectedIP.lastIndexOf(".");

     String reIPscope= rejectedIP.substring(0,r);  //过滤IP段                                                                                                if (reIPscope.equals(remoteIP.substring(0,i)))
                    { dispatcher.forward(request, response);   //重定向到rejectedError.jsp 页面
                       return;    //阻塞, 直接返Web回客户端 }
                    else { chain.doFilter(request, response);   // 调用过滤链上的下一个过滤器   

                     }

  }

        public void destroy(){}  //过滤器功能完成后,由Web服务器调用执行,回收

        }//过滤器资源

  注意:chain.doFilter()语句以前的代码用于对客户请求的处理,以后的代码用于对响应进行处理。

  (2) 配置过滤器

   在应用程序WEB-INF目录下的web.xml描述符文件中添加以下代码:  <filter>                                                                                                                                                                                          <filter-name>ipfilter</filter-name>//过滤器名称 

<filter-class>ipf.ipfilter</filter-class>//实现过滤器类

<init-param>

<param-name>RejectedIP</parame-name>

//过滤器初始化参数名RejectedIP

<param-value>192.168.12.*</param-value>

//参数RejectedIP的值

</init-param>

</filter>

<filter-mapping>//过滤器映射

<filter-name>ipfilter</filter-name>

<url-pattern>/*</url-pattern>

//映射到Web应用根目录下所有jsp文件

</filter-mapping>

通过以上设计与配置,就禁止了IP地址处在192.168.12网段的用户对网站的访问

  3 结束语

  Servlet过滤器功能强大,应用广泛,除支持Servlet和jsp页面的基本功能,比如日志记录、性能、安全、会话处理、XSLT转换等外,在J2EE应用程序中使用Java Servlet过滤器转换其输出,以便兼容任何类型客户端也表现出了很好的前景。Servlet过滤器能够侦测到来自使用WAP协议无线应用协议的移动客户端的呼叫,并且将答复内容转换成WML (无线标记语言)格式。Servlet过滤器也能检测到来自iMode无线客户的呼叫,并将其转变成cHTML(紧凑HTML)格式等等。因而,深刻理解Servlet过滤器的工作机制熟练掌握编程技术,在实际的开发过程中,可以不断地发现新的用途,增强组件的可重用性,提高Web应用程序的可维护性。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值