j2ee中配置字符过滤器


1.实现javax.servlet.Filter接口来创建对象

package com.shinecode.jfreechart.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

/**
 * 字符编码过滤器
 *
 * 统一所有的web组件的字符编码
 *
 * @author Alax
 *
 * @version 1.0 $Date:2008-04-03 10:28
 *
 */
public class EncodingFilter implements Filter {

 // 过滤配置对象,有服务器加载的时候创建
 private FilterConfig config = null;

 // 字符编码,可以从web.xml中设置
 private String encoding = null;

 // 是否在控制台显示字符集
 private boolean encodingShow = false;

 /**
  * 销毁服务变量
  */
 public void destroy() {
  this.encoding = null;
  this.config = null;

 }

 /**
  * 执行过滤
  */
 public void doFilter(ServletRequest arg0, ServletResponse arg1,
   FilterChain arg2) throws IOException, ServletException {

  // 起始时间
  long startTime = System.currentTimeMillis();

  if (this.config != null) {
   if (this.encoding != null) {
    arg0.setCharacterEncoding(this.encoding);
    arg1.setCharacterEncoding(this.encoding);
   }
   if (this.encodingShow) {
    System.out.println(this.encoding);
   }
  }

  // 结束时间
  long stopTime = System.currentTimeMillis();

  // 输出事件日志
  config.getServletContext().log(
    this.toString() + ": " + (stopTime - startTime)
      + " milliseconds");

  // 传到下一个过滤器(过滤链)
  arg2.doFilter(arg0, arg1);
 }

 /**
  * 初始化信息
  */
 public void init(FilterConfig arg0) throws ServletException {
  this.config = arg0;
  this.encoding = config.getInitParameter("encoding").toString();
  this.encodingShow = Boolean.parseBoolean(config.getInitParameter(
    "encodingShow").toString());

  // web.xml中过滤器的名称
  // System.out.println(arg0.getFilterName());
 }

}


2.配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

 <!-- 配置过滤器 -->
 <filter>
  <filter-name>filter</filter-name>
  <filter-class>
   com.shinecode.jfreechart.filter.EncodingFilter
  </filter-class>

  <!-- 字符集 -->
  <init-param>
   <param-name>encoding</param-name>
   <param-value>GBK</param-value>
  </init-param>

  <!-- 是否在控制台显示字符集 -->
  <init-param>
   <param-name>encodingShow</param-name>
   <param-value>true</param-value>
  </init-param>
 </filter>

 <!--所有请求都要进行过滤  -->
 <filter-mapping>
  <filter-name>filter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
</web-app>

3.启用服务器测试 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值