[java]如何使用過濾器解決jsp亂碼?

Tags: 過濾器, 亂碼,

Myeclipse中預設的編碼是“ISO—8859-1”,由於中文的特殊性(可用GBK、UTF-8,推薦使用UTF-8,國際通用),在開發中比可避免編碼轉化問題,今天我們用過濾器技術解決jsp等編碼問題。原理就不再說了,例項說明一下。

[java]如何使用過濾器解決jsp亂碼

[java]如何使用過濾器解決jsp亂碼

[java]如何使用過濾器解決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

}

}

[java]如何使用過濾器解決jsp亂碼

[java]如何使用過濾器解決jsp亂碼

web配置檔案配置filter檔案,開啟web.xml檔案,在 之間加入如下配置, 是設定類路徑的, 是用來對映指定路徑檔案到filter的。

setEncoding

com.test.struts.filters.SetCharacterEncodingFilter

setEncoding

/*

[java]如何使用過濾器解決jsp亂碼

配置完後執行一下專案就不再看到那煩人的亂碼了!

[java]如何使用過濾器解決jsp亂碼

相關問題答案