您的位置:首页 > 产品设计 > UI/UE

配置FILTER过滤管道,解决乱码问题(在服务器下配置,及在JBUILDER下配置)

2008-12-04 09:05 399 查看
一、首先写一个过滤的类

package com.test.util;

import javax.servlet.Filter;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.FilterChain;

import java.io.IOException;

public class EncodingFilter implements Filter {

private FilterConfig config = null;

//目标编码,建议用UTF-8、GB2312

private String targetEncoding = "ASCII";

//GBK UTF-8

public void init(FilterConfig config) throws javax.servlet.ServletException {

this.config = config;

//从配置文件中读取初始化参数(目标编码),如果注释掉这一句,则用本类中设定的编码ASCII

this.targetEncoding = config.getInitParameter("encoding");

}

/**

* doFilter

*

* @param servletRequest ServletRequest

* @param servletResponse ServletResponse

* @param filterChain FilterChain

* @throws IOException

* @throws ServletException

* @todo Implement this javax.servlet.Filter method

*/

public void doFilter(ServletRequest servletRequest,

ServletResponse servletResponse,

FilterChain filterChain) throws

IOException, ServletException {

//控制台打印出目标编码类型

System.out.println("targetEncoding:" + targetEncoding + "/n");

//执行编码

servletRequest.setCharacterEncoding(targetEncoding);

filterChain.doFilter(servletRequest, servletResponse);

}

/**

* destroy

*

* @todo Implement this javax.servlet.Filter method

*/

public void destroy() {

config = null;

targetEncoding = null;

}

}

PS:以上代码是SUN公司给的两个例子中的一个

二、配置web.xml

<filter>

<description>EncodingFilter</description>

<display-name>EncodingFilter</display-name>

<filter-name>EncodingFilter</filter-name>

<filter-class>com.test.util.EncodingFilter</filter-class>

<init-param>

<description>gb2312</description>

<param-name>encoding</param-name>

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

</init-param>

</filter>

<filter-mapping>

<filter-name>EncodingFilter</filter-name>

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

<dispatcher>ERROR</dispatcher>

<dispatcher>FORWARD</dispatcher>

<dispatcher>INCLUDE</dispatcher>

<dispatcher>REQUEST</dispatcher>

</filter-mapping>

以上就可以了,如果需要在JBUILDER 2006中配置,JAVA代码是一样的,主要是通过可视化窗口来配置web.xml其他步骤如下

1、双击你的建立的web module

2、在Structure窗口中双击Filters,再点add,添加一个Filters

3、然后会出现一个填写的窗口

Name: EncodingFilter

Filter class:com.test.util.EncodingFilter(此处选择你所新建的类)

Language:不管,默认

Display name:EncodingFilter(随便填写)

Description:EncodingFilter(随便填写)

4、然后在Structure窗口中展开你新建的EncodingFilter

5、下面会有一个Initialization Parameters,双击

6、点ADD,新建一个

7、再双击新建的进行编辑

Name:encoding

Value:gb2312

Dscription language:不管

Dscription:gb2312

8、保存

9、在Structure窗口中双击Filter Mappings

10、点击ADD,新建,再编辑

Filter name:选择你建立的Filter name

URL pattern:/*(此处代表整个网站)

Dispatcher:可以全选也可以不选

11、保存

以上步骤,整个JBUILDER 2006中的可视化窗口配置web.xml就完成了

呵呵,是不是很简单呢

有了这个就不需要每次接收变量的时候都加上new String(request.getParameter("").getBytes("iso-8859-1"),"gb2312");

这句话了

是不是很实用!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: