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的方法多種多種 這是我認為很方便的一種做法。 模板的做法比較繁瑣 這里就不介紹了。
呵呵 有不足的地方希望大家指正。 謝謝大家。