Spring MVC POST中文亂碼解決方案


POST中文亂碼解決方案

以前,我都是自己編寫一個filter,來實現編碼,代碼如下:

 1 public class CharacterEncodingFilter implements Filter {
 2 
 3     private final static Logger log= LoggerFactory.getLogger(CharacterEncodingFilter.class);
 4 
 5     private String characterEncoding; //編碼方式配置在web.xml文件中
 6     private boolean enabled;   //是否啟用此Filter,配置在web.xml中
 7 
 8     @Override
 9     public void destroy() {
10         characterEncoding = null;
11     }
12 
13     @Override
14     public void doFilter(ServletRequest request, ServletResponse response,
15                          FilterChain chain) throws IOException, ServletException {
16         if (enabled || characterEncoding != null) {
17             request.setCharacterEncoding(characterEncoding);
18             response.setCharacterEncoding(characterEncoding);
19         }
20         chain.doFilter(request, response);
21     }
22 
23     @Override
24     public void init(FilterConfig config) throws ServletException {
25         characterEncoding = config.getInitParameter("characterEncoding");
26         enabled = "true".equalsIgnoreCase(config.getInitParameter("enabled").trim());
27     }
28 }

然后自己在web.xml文件中做如下配置

 1  <filter>
 2         <filter-name>characterEncodingFilter</filter-name>
 3         <filter-class>training.model.filter.CharacterEncodingFilter</filter-class>
 4         <init-param>
 5             <param-name>characterEncoding</param-name>
 6             <param-value>UTF-8</param-value>
 7         </init-param>
 8         <init-param>
 9             <param-name>enabled</param-name>
10             <param-value>true</param-value>
11         </init-param>
12     </filter>
13     <filter-mapping>
14         <filter-name>characterEncodingFilter</filter-name>
15         <url-pattern>/*</url-pattern>
16     </filter-mapping>

其實我們可以不必這么麻煩,重復造輪子。

spring Web MVC框架提供了org.springframework.web.filter.CharacterEncodingFilter用於解決POST方式造成的中文亂碼問題,具體配置如下:

 1 <filter>  
 2     <filter-name>CharacterEncodingFilter</filter-name>  
 3     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
 4     <init-param>  
 5         <param-name>encoding</param-name>  
 6         <param-value>utf-8</param-value>  
 7     </init-param>  
 8 </filter>  
 9 <filter-mapping>  
10     <filter-name>CharacterEncodingFilter</filter-name>  
11     <url-pattern>/*</url-pattern>  
12 </filter-mapping>  

  以后我們項目及所有頁面的編碼均為UTF-8。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM