java web中配置Filter解決jsp中文亂碼問題

今天在做DynaActionForm練習的時候,在表單提交時,遇到了提交中文出現亂碼的問題。雖然以前解決過類似的問題,但總是沒有記錄相關的筆記。後來在網的找了一大堆的文章看了以後,大部都是亂說一通,感覺行得通,但太麻煩了,於是找到自己以前做過的小項目中,看了一下以前設計的Filter,讓站點內所有的編碼都爲utf-8的形式輸出!於是也在自己DynaActionForm的練習中配置了一下Filter,之後,整個Project裏面的東西,都沒有出現亂碼的問題了。下面說一下具體的做法:
建立一個實現Filter接口的類。這個類需要三個方法,分別是:doFilter、init和destroy。doFilter方法包含主要的過濾代碼,init方法建立設置操作,而destroy方法進行清除。
比如我建立的是FilterChar.java

package com.gtxy.dynaActionForm.web.filter;

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.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* 以 UTF-8 輸入輸出
*
* @author ZhongHuiQiang
*
*/

public class FilterChar implements Filter {

  private String config;

  public void destroy() {
    this.config = null;
  }

  /**
    * name="FilterChar" <br>
    * init-param name="config" value="utf-8"<br>
    * mapping url-pattern="/*"<br>
    */

  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    HttpServletRequest req;
    req = (HttpServletRequest) request;

    HttpServletResponse res;
    res = (HttpServletResponse) response;

    req.setCharacterEncoding(config);
    res.setCharacterEncoding(config);
    chain.doFilter(req, res);

  }

  /**
    * 獲得web.xml中初始化的參數
    */

  public void init(FilterConfig config) throws ServletException {
    this.config = config.getInitParameter("chars");
  }

}
 


OK,FilterChar類寫完後,就要配置web.xml了!
在web.xml裏面,最主要是下面這段代碼

<filter>
    <filter-name>FilterChar</filter-name>
    <filter-class>
     com.gtxy.dynaActionForm.web.filter.FilterChar
    </filter-class>
    <init-param>
      <param-name>chars</param-name>
      <param-value>utf-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>FilterChar</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

 

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