通過Filter進行統一編碼的實現

package com.struts3;

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;

public class setCharEncodingFilter implements Filter {

 protected FilterConfig filterConfig;

 public void init(FilterConfig filterConfig) throws ServletException {
  this.filterConfig = filterConfig;
 }

 public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain chain) throws IOException, ServletException {
  if (this.filterConfig.getInitParameter("enable").equals("true")) {
   request.setCharacterEncoding(this.filterConfig.getInitParameter("encoding"));
   response.setCharacterEncoding(this.filterConfig.getInitParameter("encoding"));
  }
  chain.doFilter(request, response);
  System.out.println("do Filter!");
 }

 public void destroy() {
 }
}
web.xml配置:

<filter>
    <filter-name>setCharEncoding</filter-name>
    <filter-class>com.struts3.setCharEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
    </init-param>
    <init-param>
      <param-name>enable</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>setCharEncoding</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

 

可以通過web.xml進行Filter的encoding編碼選擇,以及是否使用該filter。

另外要注意jsp文件的pageEncoding如果和web.xml中的參數不一致會導致編碼錯誤,所以建議jsp不指定pageEncoding。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章