關鍵字: ? 使用filter解決中文亂碼問題????
一.在web.xml中配置
xml 代碼
-
<
filter
>
??
-
????????
<
filter-name
>
EncodingFilter
</
filter-name
>
??
-
????????
<
filter-class
>
com.kenshin.base.SysFilter
</
filter-class
>
??
-
????????
<
init-param
>
??
-
????????????
<
param-name
>
encoding
</
param-name
>
??
-
????????????
<
param-value
>
UTF-8
</
param-value
>
??
-
????????
</
init-param
>
??
-
????????
<
init-param
>
??
-
????????????
<
param-name
>
enable
</
param-name
>
??
-
????????????
<
param-value
>
true
</
param-value
>
??
-
????????
</
init-param
>
??
-
????
</
filter
>
??
-
????
<
filter-mapping
>
??
-
????????
<
filter-name
>
EncodingFilter
</
filter-name
>
??
-
????????
<
url-pattern
>
*.do
</
url-pattern
>
??
-
????
</
filter-mapping
>
??
?
二.filter類代碼
java 代碼
-
package
?com.kenshin.base; ??
-
??
-
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
?org.apache.commons.logging.Log; ??
-
import
?org.apache.commons.logging.LogFactory; ??
-
import
?org.hibernate.Session; ??
-
import
?org.hibernate.SessionFactory; ??
-
import
?org.hibernate.Transaction; ??
-
??
-
public
?
class
?SysFilter?
implements
?Filter?{ ??
-
????
protected
?String?sEncodingName; ??
-
??
-
????
protected
?FilterConfig?sysFilter; ??
-
??
-
????
protected
?
boolean
?bEnable; ??
-
??
-
????
protected
?Log?logger?=?LogFactory.getLog(SysFilter.
class
); ??
-
??
-
????
public
?
void
?destroy()?{ ??
-
??
-
????} ??
-
??
-
????
public
?
void
?doFilter(ServletRequest?arg0,?ServletResponse?arg1, ??
-
????????????FilterChain?arg2)?
throws
?IOException,?ServletException?{ ??
-
????????
??
-
????????
if
?(
this
.bEnable)?{ ??
-
????????????
try
?{???
??
-
????????????????arg0.setCharacterEncoding(
this
.sEncodingName); ??
-
????????????????arg1.setContentType(
"text/html;charset="
?+?
this
.sEncodingName); ??
-
????????????????arg1.setCharacterEncoding(
this
.sEncodingName); ??
-
????????????????arg2.doFilter(arg0,?arg1); ??
-
??
-
????????????}?
catch
?(Exception?e)?{ ??
-
????????????????logger.info(
"出錯了"
); ??
-
????????????} ??
-
????????????
??
-
????????}?
else
?{ ??
-
????????????arg2.doFilter(arg0,?arg1); ??
-
????????} ??
-
????} ??
-
??
-
????
public
?
void
?init(FilterConfig?arg0)?
throws
?ServletException?{ ??
-
????????
??
-
????????
this
.sysFilter?=?arg0; ??
-
????????
this
.loadFilterSetting(); ??
-
????} ??
-
??
-
????
private
?
void
?loadFilterSetting()?{ ??
-
????????
this
.sEncodingName?=?
this
.sysFilter.getInitParameter(
"encoding"
); ??
-
????????logger.info(
"encoding:"
?+?sEncodingName); ??
-
????????String?sEnable?=?
this
.sysFilter.getInitParameter(
"enable"
); ??
-
????????
if
?(sEnable?!=?
null
?&&?sEnable.equalsIgnoreCase(
"true"
))?{ ??
-
????????????
this
.bEnable?=?
true
; ??
-
????????}?
else
?{ ??
-
????????????
this
.bEnable?=?
false
; ??
-
????????} ??
-
????} ??
-
??
-
??
-
} ??
|