java中用過濾器解決字符編碼問題

java中用過濾器解決字符編碼問題

java的web程序經常出現中文亂碼的問題,用一個實現了Filter接口的過濾器類可以較好地解決這個問題。

新增過濾器類EncodingFilter

import java.io.IOException;
import javax.servlet.*;

public class EncodingFilter implements Filter {

    
private FilterConfig filterConfig = null;
    
private String encoding = null;

     @Override
    
public void destroy() {
         filterConfig
= null;
         encoding
= null;
     }

     @Override
    
public void doFilter(ServletRequest request, ServletResponse response,
             FilterChain filterChain)
throws IOException, ServletException {
        
if (request.getCharacterEncoding() == null) {
            
if (encoding != null) {
                 request.setCharacterEncoding(encoding);
             }
             filterChain.doFilter(request, response);
         }
     }

     @Override
    
public void init(FilterConfig filterConfig) throws ServletException {
        
this.filterConfig = filterConfig;
        
this.encoding = filterConfig.getInitParameter("encoding");
     }
}

web.xml中加入

  <filter>
      
<filter-name>EncodingFilter</filter-name>
      
<filter-class>EncodingFilter</filter-class>
      
<init-param>
          
<param-name>encoding</param-name>
          
<param-value>UTF-8</param-value>
      
</init-param>
  
</filter>
  
<filter-mapping>
      
<filter-name>EncodingFilter</filter-name>
      
<url-pattern>/*</url-pattern>
  
</filter-mapping>

jsp頁面中設置pageEncoding="UTF-8" ,表單提交方法method="post"

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