Spring配置CharacterEncodingFilter【有效解決中文亂碼問題】

Spring的字符集過濾器可以解決中文亂碼問題,而只需要在web.xml文件中配置一下該過濾器,設置兩個參數(encoding和forceEncoding)即可:

<!-- 配置請求過濾器,編碼格式設爲UTF-8,避免中文亂碼-->
<filter>
    <filter-name>springUtf8Encoding</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>springUtf8Encoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

1、第一個方法setEncoding()相當於:ServletRequest.setCharacterEncoding(java.lang.String)

2、第二個方法setForceEncoding()的作用是:
  強制ServletResponse的編碼格式和ServletRequest的編碼格式一樣。
也就是說,無論是request還是response,encoding設置了兩者的編碼格式,

  • 只不過forceEncoding默認值爲false,此時就只是設置了request的編碼格式,
    即在Servlet中:
request.setCharacterEncoding("XXXX"); 
  • 如果設置forceEncoding的值爲true時,相當於Servlet中
 request.setCharacterEncoding("XXXX"); 
 response.setCharacterEncoding(“XXXX”);  

web.xml中那部分過濾器的配置 相當於Servlet中的:

@RequestMapping(value="XXXXX") 
public void XXXXX(User user,HttpServletRequest  req,HttpServletResponse         resp) throws UnsupportedEncodingException 
{ 
       //對服務器響應進行重新編碼
       resp.setCharacterEncoding("UTF-8"); 
      //對請求進行重新編碼
       req.setCharacterEncoding("UTF-8"); 
...... 
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章