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