servlet專案 設定編碼格式
阿新 • • 發佈:2019-02-09
在web.xml 裡面設定
<filter> <filter-name>Set Character Encoding</filter-name> <filter-class>filter.SetEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>Set Character Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
然後建立一個設定編碼格式的類叫做:SetEncodingFilter
package filter; import javax.servlet.*; import java.io.IOException; /** * Created by on 2017/3/23. */ public class SetEncodingFilter implements Filter { protected String encoding = null;//定義預設字元編碼方式 protected boolean ignore = true;//定義客戶端指定的編碼方式是否應被忽略 protected FilterConfig filterConfig = null;//定義過濾器配置物件,若為null,則說明過濾器未配置 public void destroy()//停止過濾器的工作 { this.encoding = null; this.filterConfig = null; } //設定字元編碼 public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { if (ignore || (req.getCharacterEncoding() == null)) { req.setCharacterEncoding(encoding); } chain.doFilter(req, res); } //啟動過濾器 public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; this.encoding = filterConfig.getInitParameter("encoding"); String value = filterConfig.getInitParameter("ignore"); if (value == null) this.ignore = true; else this.ignore = value.equalsIgnoreCase("true") || value.equalsIgnoreCase("yes"); } }
編碼就在 <filter>裡面設定,一般為UTF-8與前端的編碼對應就好。