org.springframework.web.filter.CharacterEncodingFilter
這是一個過濾器,是Spring在web請求中定義request和response的編碼。java
當客戶端和服務端使用了不一樣的字符集進行編碼,就會出現亂碼的問題。這就須要服務端在收到客戶端發來的數據,或返回給客戶端的數據時,可以使用統一的字符集進行編碼,以免亂碼的出現。web
具體是在wen.xml中進行設置,具體使用方法以下:spring
<filter> <filter-name>encodingFilter</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>encodingFilter</filter-name> <url-pattern>*.do</url-pattern> <url-pattern>*.jsp</url-pattern> <url-pattern>/api/content</url-pattern> <url-pattern>/servlet/userSelect</url-pattern> </filter-mapping>
CharacterEncodingFilter類具備encoding和forceEncoding兩個屬性,其中encoding是表示設置request的編碼,forceEncoding表示是否同時設置response的編碼。api
@Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)throws ServletException, IOException { if (this.encoding != null && (this.forceEncoding || request.getCharacterEncoding() == null)) { request.setCharacterEncoding(this.encoding); if (this.forceEncoding) { response.setCharacterEncoding(this.encoding); } } filterChain.doFilter(request, response); }
經過源碼也能看見,encodin用於設置request的編碼,而forceEncoding爲ture時設置response的編碼。app