Filter过滤器的简单实用与学习

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!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值