过滤器实例——字符编码Filter
生活随笔
收集整理的這篇文章主要介紹了
过滤器实例——字符编码Filter
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
字符編碼過濾器是一種快速解決Tomcat服務(wù)器中request和response亂碼問題的解決方案。一般程序中要解決request、resopnse傳中文參數(shù)亂碼問題時(shí)一般通過在取參數(shù)前對(duì)request進(jìn)行setCharacterEncoding("UTF-8")編碼設(shè)置,這種方法需要在每個(gè)要使用的頁面中都進(jìn)行編碼設(shè)置,用起來十分麻煩。字符編碼過濾器通過在每個(gè)頁面訪問前執(zhí)行Filter進(jìn)行自動(dòng)編碼設(shè)置,只需要編寫一個(gè)Filter頁面并將Filter在web.xml中配置到需要的頁面(本文設(shè)置到全部頁面)即可。
首先創(chuàng)建CharacterEncodingFilter類,繼承自javax.servlet.Filter。
package 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 CharacterEncodingFilter implements Filter {private String characterEncoding;private boolean enabled;@Overridepublic void init(FilterConfig arg0) throws ServletException {//web程序啟動(dòng)時(shí)初始化Filter,通過FilterConfig對(duì)象從web.xml文件獲取初始化參數(shù)值characterEncoding=arg0.getInitParameter("characterEncoding");enabled="true".equalsIgnoreCase(arg0.getInitParameter("enabled".trim()));}@Overridepublic void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2) throws IOException, ServletException {//當(dāng)初始化的參數(shù)為啟用狀態(tài)時(shí),對(duì)request對(duì)象和response對(duì)象進(jìn)行編碼設(shè)置if(enabled||characterEncoding!=null){arg0.setCharacterEncoding(characterEncoding);arg1.setCharacterEncoding(characterEncoding);}arg2.doFilter(arg0, arg1);}@Overridepublic void destroy() {
//web程序關(guān)閉時(shí),銷毀Filter時(shí)將資源對(duì)象置為空characterEncoding=null;} }
然后在web.xml中進(jìn)行Filter配置即可。
<filter><filter-name>characterEncodingFilter</filter-name><filter-class>filter.CharacterEncodingFilter</filter-class><init-param><param-name>characterEncoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>enabled</param-name><param-value>true</param-value></init-param> </filter> <filter-mapping><filter-name>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern>//所有頁面訪問前都要進(jìn)行過濾 </filter-mapping>? 接下來就可以在使用request和response中直接傳遞和獲取中文參數(shù),不必每次使用之前都進(jìn)行配置了。
?
轉(zhuǎn)載于:https://www.cnblogs.com/2017Crown/p/7157766.html
總結(jié)
以上是生活随笔為你收集整理的过滤器实例——字符编码Filter的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: P1338 末日的传说
- 下一篇: 学习笔记#Android Studio