Eclipse 中不可以直接创建过滤器 这给我们的编码造成了困难,过滤器的作用最普遍的是过滤中文乱码。

现在向大家介绍我如何在Eclipse中建立 中文过滤器的。

首先大家先把Web项目建立好 例如 我的项目名为:FilterDemo

项目建立完成 现在开始建立 filter

点击 File(文件)-> new(新建) -> Class(类文件)

这时候会出现一个建立类文件的对话框

包路径 package:后面的文本框中填写 例如: com.company.filterDemo.biz.filter

类文件名 name:文本框中填写 例如 CharSetFilter

接口 interfaces:列表框旁边有一个 add的按钮 关键就在这里 点击 add 按钮 会出现一个新的对话框 让我们选择接口

Choose interfaces (选择接口)
其下方 输入 filter 下面会列出所有与filter 相关的接口
这里我们选择 Filter - javax.servlet 然后点击OK 然后Finish完成 这时候我们的Filter的构造 如下:

package com.company.filterDemo.biz.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; 


public class CharSetFilter implements Filter { 

//释放 

public void destroy() { 

 // TODO Auto-generated method stub 

} 

//执行Filter 

public void doFilter(ServletRequest arg0, ServletResponse arg1, 

 FilterChain arg2) throws IOException, ServletException { 

 // TODO Auto-generated method stub 

 arg0.setCharacterEncoding("GBK"); 

 arg1.doFilter(request,response); 

} 

//初始化 

public void init(FilterConfig config) throws ServletException { 

 // TODO Auto-generated method stub 

} 

}



是不是发现以上代码 和我们在Jbuilder2006中自动生成的有一些区别呢。没关系我们改动一下 你看看有什么不一样。

package com.accp.car.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; 

public class CharSetFilter implements Filter { 

//初始化 

public void init(FilterConfig config) throws ServletException { 

 // TODO Auto-generated method stub 

} 

//执行Filter 

public void doFilter(ServletRequest request, ServletResponse response, 

 FilterChain chain) throws IOException, ServletException { 

 // TODO Auto-generated method stub 

 request.setCharacterEncoding("GBK"); 

 chain.doFilter(request,response); 

} 

//释放 

public void destroy() { 

 // TODO Auto-generated method stub 

} 


}


好了 Filter的代码文件我们是建立好了 但是现在我们的这个代码还是不起作用的 关键是要在 WEB-INF\web.xml
中添加配置。

配置如下:

<filter> 

 <filter-name>CharSetFilter</filter-name> //类名 

 <filter-class>com.company.filterDemo.biz.filter.CharSetFilter</filter-class>//代码文件所在的包的完整路径 

 </filter> 


 <filter-mapping > 

 <filter-name>CharSetFilter</filter-name> //类名 这个名要跟上面的类名保持一致 

 <url-pattern>/*</url-pattern> //这里的路径/*代表过滤所有页面。 

 </filter-mapping>



切忌 如果发现有时页面的乱码并没有正确转换的话 你一定要保证 filter配置信息在所有servlet配置的上面。
因为 web.xml的读取机制是从上到下读取的所以要保证 filter最先读取 才能启动中文过滤的作用。

第一次接触filter
我想做的是用filter保护界面,而这个例子是解决编码
感觉差不多吧。当做一个例子学习,很好!
在此基础之上,如果你有兴趣,也可以把它改成一个保护页面的filter!