Java中的过滤器[有实例]

2009-10-06 17:36:54|  分类: Servlet|字号 订阅

在平时的编码中我们常常会遇到乱码的问题,这个往往带给我们一些不必要的麻烦, 针对这个问题,想要做到一个很好的解决方式, 那么过滤器无非是个非常好的方式,简单而且方便!下面就是我本人写的一个过滤器的实际的例子,如果有什么不完善的地方请见谅!

一,创建Servlet 继承于HttpServlet 并实现Filter这个过滤器的借口

package com.sun.test;

import java.io.IOException;

import javax.servlet.*;

import javax.servlet.http.HttpServlet;

/***

 *

 * @author 孙海明

 * 功能:处理中文乱码的过滤器  (一个Servlet  实现  Filter的接口)

 *

 */

public class MyFilter extends HttpServlet  implements   Filter {

    protected String encoding = null;  //声明一个存储编码的属性

    protected FilterConfig filterConfig = null//创建一个过滤器配置对象

   /**

    * 销毁

    */

    public void destroy() {

          this.encoding = null;

          this.filterConfig = null;

     System.out.println("------------------孙海明告诉您:过滤器执行结束了--------------");

    }

 /**

  * 执行

  */

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain  chain) throwsIOException, ServletException {

       System.out.println("------------------孙海明告诉您:正在执行过滤器------------------");

          // 选择并设置要使用的字符编码

          if((request.getCharacterEncoding()==null)){

              String encoding = selectEncoding();  //或得配置文件里面的编码设置

              if(encoding!=null){

                 request.setCharacterEncoding(encoding); //重新设置字符编码  顾虑完毕

              }

          }

          // 将控制权传递到下一个过滤器

          chain.doFilter(request, response);

    }

/**

 * 初始化

 */

    public void init(FilterConfig filterConfig) throws ServletException {

        System.out.println("------------孙海明告诉您:正在初始化--------------");

          this.filterConfig = filterConfig; //初始化过滤器的配置

          this.encoding = filterConfig.getInitParameter("charset"); //获得配置文件里面的编码并初始化给声明的存储编码的属性

    }

    //对编码的设置进行封装

    protected String selectEncoding() {

          return (this.encoding);

          }

}

二,过滤器写好了还要在配置文件(web.xml)里面声明,并将其映射到整个程序里面使用:

<!-- 配置一个过滤器 -->

    <filter>

      <filter-name>TestFilter</filter-name>

      <filter-class>com.sun.TestFilter</filter-class>

      <init-param>

        <param-name>charset</param-name>

        <param-value>gb2312</param-value>

      </init-param>

    </filter>

   <!-- 映射到程序中使用 -->

    <filter-mapping>

      <filter-name>TestFilter</filter-name>

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

    </filter-mapping>

[一个处理中文乱码的过滤器就写好了!是不是很简单!额 ,本来就不难哈哈!]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值