SSH設定字符集過濾器解決中文亂碼問題
阿新 • • 發佈:2019-01-31
web.xml配置(必須放在struts2配置之前):
<!-- 字元編碼過濾器配置--> <filter> <filter-name>CharEncodingFilter</filter-name> <filter-class>com.crm.tools.CharEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- Struts2過濾器配置--> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 其它配置-->
自定義CharEncodingFilter類實現Filter介面:
package com.crm.tools; 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; import javax.servlet.annotation.WebFilter; /** * 字元過濾器 */ @WebFilter("/CharEncodingFilter") public class CharEncodingFilter implements Filter { //設定為UTF-8 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); chain.doFilter(request, response); } //初始化 public void init(FilterConfig filterConfig) throws ServletException { } //銷燬 public void destroy() { } }
字元編碼過濾器必須放在其它過濾器之前,還有請求的表單必須為post,反正我試過,不指定method屬性進行提交的話,會出現亂碼