﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-无所惧，无所悔,为梦想执着的拼搏-文章分类-Eclipse技术文档</title><link>http://www.blogjava.net/DreamFight/category/36919.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 24 Dec 2008 09:47:17 GMT</lastBuildDate><pubDate>Wed, 24 Dec 2008 09:47:17 GMT</pubDate><ttl>60</ttl><item><title>Eclipse中创建Filter</title><link>http://www.blogjava.net/DreamFight/articles/248043.html</link><dc:creator>DreamFight</dc:creator><author>DreamFight</author><pubDate>Wed, 24 Dec 2008 04:52:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/248043.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/248043.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/248043.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/248043.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/248043.html</trackback:ping><description><![CDATA[Eclipse 中不可以直接创建过滤器 这给我们的编码造成了困难，过滤器的作用最普遍的是过滤中文乱码。<br />
<br />
现在向大家介绍我如何在Eclipse中建立 中文过滤器的。<br />
<br />
首先大家先把Web项目建立好 例如 我的项目名为:FilterDemo<br />
<br />
项目建立完成 现在开始建立 filter<br />
<br />
点击 File（文件）-&gt; new(新建) -&gt; Class(类文件)<br />
<br />
这时候会出现一个建立类文件的对话框<br />
<br />
包路径 package：后面的文本框中填写 例如： com.company.filterDemo.biz.filter<br />
<br />
类文件名 name：文本框中填写 例如 CharSetFilter<br />
<br />
接口 interfaces：列表框旁边有一个 add的按钮 关键就在这里 点击 add 按钮 会出现一个新的对话框 让我们选择接口<br />
<br />
Choose&nbsp;&nbsp;interfaces （选择接口）<br />
其下方 输入 filter 下面会列出所有与filter 相关的接口<br />
这里我们选择 Filter - javax.servlet&nbsp;&nbsp;然后点击OK&nbsp;&nbsp;然后Finish完成 这时候我们的Filter的构造 如下：<br />
<br />
<font face="Verdana "><font size="3">package com.company.filterDemo.biz.filter;</font></font><br />
<font face="Verdana "><font size="3">import java.io.IOException;</font></font><br />
<font face="Verdana "><font size="3">import javax.servlet.Filter;<br />
import javax.servlet.FilterChain;<br />
import javax.servlet.FilterConfig;<br />
import javax.servlet.ServletException;<br />
import javax.servlet.ServletRequest;<br />
import javax.servlet.ServletResponse;</font></font><br />
<font face="Verdana "><font size="3"></font></font><br />
<font face="Verdana "><font size="3">public class CharSetFilter implements Filter {</font></font><br />
<font face="Verdana "><font size="3">//释放</font></font><br />
<font face="Verdana "><font size="3">public void destroy() {<br />
&nbsp;&nbsp;// TODO Auto-generated method stub</font></font><br />
<font face="Verdana "><font size="3">}</font></font><br />
<font face="Verdana "><font size="3">//执行Filter</font></font><br />
<font face="Verdana "><font size="3">public void doFilter(ServletRequest <font color="blue">arg0</font>, ServletResponse <font color="blue">arg1</font>,<br />
&nbsp; &nbsp;FilterChain <font color="blue">arg2</font>) throws IOException, ServletException {<br />
&nbsp;&nbsp;// TODO Auto-generated method stub<br />
&nbsp;&nbsp;arg0.setCharacterEncoding("GBK");<br />
&nbsp;&nbsp;arg1.doFilter(request,response); <br />
}</font></font><br />
<font face="Verdana "><font size="3">//初始化</font></font><br />
<font face="Verdana "><font size="3">public void init(FilterConfig config) throws ServletException {<br />
&nbsp;&nbsp;// TODO Auto-generated method stub</font></font><br />
<font face="Verdana "><font size="3">}</font></font><br />
<font face="Verdana "><font size="3">}<br />
</font></font><br />
是不是发现以上代码 和我们在Jbuilder2006中自动生成的有一些区别呢。没关系我们改动一下 你看看有什么不一样。<br />
<br />
<font face="Arial "><font size="3">package com.accp.car.filter;</font></font><br />
<font face="Arial "><font size="3">import java.io.IOException;</font></font><br />
<font face="Arial "><font size="3">import javax.servlet.Filter;<br />
import javax.servlet.FilterChain;<br />
import javax.servlet.FilterConfig;<br />
import javax.servlet.ServletException;<br />
import javax.servlet.ServletRequest;<br />
import javax.servlet.ServletResponse;</font></font><br />
<font face="Arial "><font size="3">public class CharSetFilter implements Filter {</font></font><br />
<font face="Arial "><font size="3">//初始化</font></font><br />
<font face="Arial "><font size="3">public void init(FilterConfig config) throws ServletException {<br />
&nbsp;&nbsp;// TODO Auto-generated method stub</font></font><br />
<font face="Arial "><font size="3">}</font></font><br />
<font face="Arial "><font size="3">//执行Filter</font></font><br />
<font face="Arial "><font size="3">public void doFilter(ServletRequest <font color="red">request</font>, ServletResponse <font color="red">response</font>,<br />
&nbsp; &nbsp;FilterChain <font color="red">chain</font>) throws IOException, ServletException {<br />
&nbsp;&nbsp;// TODO Auto-generated method stub<br />
&nbsp;&nbsp;request.setCharacterEncoding("GBK");<br />
&nbsp;&nbsp;chain.doFilter(request,response); <br />
}</font></font><br />
<font face="Arial "><font size="3">//释放</font></font><br />
<font face="Arial "><font size="3">public void destroy() {<br />
&nbsp;&nbsp;// TODO Auto-generated method stub</font></font><br />
<font face="Arial "><font size="3">}</font></font><br />
<font face="Arial "><font size="3"></font></font><br />
<font face="Arial "><font size="3">}<br />
</font></font><br />
<font face="Arial "><font size="3">好了 Filter的代码文件我们是建立好了 但是现在我们的这个代码还是不起作用的 关键是要在 WEB-INF\web.xml</font></font><br />
<font face="Arial "><font size="3">中添加配置。</font></font><br />
<font face="Arial "><font size="3"></font></font><br />
<font face="Arial "><font size="3">配置如下：</font></font><br />
<font face="Arial "><font size="3"></font></font><br />
<font face="Arial "><font size="3">&nbsp;&nbsp;&lt;filter&gt;<br />
&nbsp;&nbsp;&lt;filter-name&gt;<font color="blue">CharSetFilter</font>&lt;/filter-name&gt;&nbsp; &nbsp; //类名<br />
&nbsp;&nbsp;&lt;filter-class&gt;<font face="Verdana ">com.company.filterDemo.biz.filter</font>.CharSetFilter&lt;/filter-class&gt;//<font color="red">代码文件所在的包的完整路径</font><br />
&nbsp;&nbsp;&lt;/filter&gt;</font></font><br />
<font face="Arial "><font size="3"><br />
&nbsp;&nbsp;&lt;filter-mapping &gt;<br />
&nbsp;&nbsp;&lt;filter-name&gt;<font color="blue">CharSetFilter</font>&lt;/filter-name&gt;&nbsp;&nbsp;//类名 这个名要跟上面的类名保持一致<br />
&nbsp;&nbsp;&lt;url-pattern&gt;/*&lt;/url-pattern&gt;&nbsp;&nbsp;//<font color="red">这里的路径/*代表过滤所有页面。</font><br />
&nbsp;&nbsp;&lt;/filter-mapping&gt;</font></font><br />
<font face="Arial "><font size="3"></font></font><br />
<font face="Arial "><font size="3">切忌 如果发现有时页面的乱码并没有正确转换的话 你一定要保证 filter配置信息在所有servlet配置的上面。</font></font><br />
<font face="Arial "><font size="3">因为 web.xml的读取机制是从上到下读取的所以要保证 filter最先读取 才能启动中文过滤的作用。</font></font><br />
<font face="Arial "><font size="3"></font></font><br />
<font face="Arial "><font size="3">我们的filter中文乱码过滤就完成了</font></font><br />
<font face="Arial "><font size="3"></font></font><br />
<font face="Arial "><font size="3">建立filter的方法多种多种 这是我认为很方便的一种做法。 模板的做法比较繁琐 这里就不介绍了。</font></font><br />
<font face="Arial "><font size="3"></font></font><br />
<font face="Arial "><font size="3">呵呵 有不足的地方希望大家指正。 谢谢大家。<br />
</font></font>
<img src ="http://www.blogjava.net/DreamFight/aggbug/248043.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">DreamFight</a> 2008-12-24 12:52 <a href="http://www.blogjava.net/DreamFight/articles/248043.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>