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的方法多种多种 这是我认为很方便的一种做法。 模板的做法比较繁琐 这里就不介绍了。
呵呵 有不足的地方希望大家指正。 谢谢大家。