Myeclipse中預設的編碼是“ISO—8859-1”,由於中文的特殊性(可用GBK、UTF-8,推薦使用UTF-8,國際通用),在開發中比可避免編碼轉化問題,今天我們用過濾器技術解決jsp等編碼問題。原理就不再說了,例項說明一下。
工具/原料
Myeclipse 6.5
方法/步驟
開啟web專案,在src中新建一個類,規範一下程式設計習慣我們就把它放到一個包中去,專案右鍵新建“class”,包名填寫例如“com.test.struts.filters”(習慣是域名反轉),檔名首字母大寫,例如“SetCharacterEncoding”。下面是類中的程式碼,實際上就是實現了Filter介面,重寫了一下doFilter函式。
package com.test.hibernate.filters;
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;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SetCharacterEncoding implements Filter {
/* (non-Javadoc)
* @see com.sun.net.httpserver.Filter#doFilter(com.sun.net.httpserver.HttpExchange, com.sun.net.httpserver.Filter.Chain)
*/
public void doFilter(ServletRequest srequest, ServletResponse sresponse,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)srequest;
HttpServletResponse response = (HttpServletResponse)sresponse;
// 注意這裡請求和響應都強制轉化了一下
request.setCharacterEncoding("UTF-8"); //設定請求編碼“UTF-8”比較通用
response.setCharacterEncoding("UTF-8"); //設定相應編碼
chain.doFilter(srequest, sresponse);//轉發請求
}
public void destroy() {
// TODO Auto-generated method stub
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
web配置檔案配置filter檔案,開啟web.xml檔案,在
配置完後執行一下專案就不再看到那煩人的亂碼了!