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

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

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


filter过滤器的编写(解决中文乱码问题)_第1张图片
 

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

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


filter过滤器的编写(解决中文乱码问题)_第2张图片
 


filter过滤器的编写(解决中文乱码问题)_第3张图片
 

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





filter过滤器的编写(解决中文乱码问题)_第4张图片
 
  

 

 

过滤器类: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>指定参数的值。

你可能感兴趣的:(filter)