当前位置: 代码迷 >> Web前端 >> filter过滤器的编写(解决中文乱码有关问题)
  详细解决方案

filter过滤器的编写(解决中文乱码有关问题)

热度:458   发布时间:2014-01-05 18:22:55.0
filter过滤器的编写(解决中文乱码问题)

1、首先编写一个Java类的filter代码。操作步骤:

? ? ? ? ?(1)在myeclipse中新建一个java类,



?

? ? ? ? (2)单击“Add”按钮,在弹出来的对话框中“选择接口”文本框中输入Filter,

? ? ? ? ? ? ?并选择匹配好的类型javax.servlet



?



?

? ? ? ? ?(3)单击“OK”按钮返回"New Java Class"对话,然后单击“Finish”按钮,就可以看到创建的过滤器框架:






?
??

?

?

过滤器类:Encoding.java,代码如下:

package com;
import java.io.IOException;

import javax.servlet.*;


public class Encoding implements Filter {
	protected String encoding=null;
	protected FilterConfig config;

	public void destroy() {
		// TODO Auto-generated method stub

	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		if(request.getCharacterEncoding()==null){
			//得倒指定的编码	
			String encode=getEncoding();
			if(encode!=null){
					//设置request的编码
				request.setCharacterEncoding(encode);
				response.setCharacterEncoding(encode);
			}
		}
			chain.doFilter(request, response);
	}

	public void init(FilterConfig filterConfig) throws ServletException {
		this.config=filterConfig;  //得到web.xml中的配置编码
		this.encoding=filterConfig.getInitParameter("Encoding");
	}
protected String getEncoding(){
		return encoding;
	
}
}

?2、在web.xml文件写入以下代码:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name></display-name>	  
<filter>   <!-- 控制编码 -->
  	<filter-name>EncodingFilter</filter-name>
  	<filter-class>com.Encoding</filter-class>
  	<init-param>  <!-- 初始化参数 -->
	  	<param-name>Encoding</param-name>
	  	<param-value>GB2312</param-value>
  	</init-param>
  </filter>
  <filter-mapping>
  	<filter-name>EncodingFilter</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

?说明:代码中红色部分(<init-param></init-param>之间的那段代码):<init-param>用于为过滤器指定初始化参数,它的子元素<param-name>指定参数的名字,子元素<param-value>指定参数的值。

  相关解决方案