【WEBガジェット】EncodingFilter-グローバルエンコーディングの設定

8975 ワード

1.POSTリクエストであればrequestを呼び出す必要があることを知っています.setCharacterEncoding("utf-8")
コードを設計する方法.
1 public void doGet(HttpServletRequest request, HttpServletResponse response)

2             throws ServletException, IOException {

3          request.setCharacterEncoding("gbk");  // post , get

4          response.setCharacterEncoding("gbk");

5     }

  2.GETリクエストであれば、エンコードの問題を自分で手動で処理する必要があります.
  3.EncodingFilterを使用すると、POSTおよびGET要求の符号化問題が処理される.
Webを変更します.xml:
<!--  。 GET POST, UTS-8 -->

<filter>

    <filter-name>EncodingFilter</filter-name>

    <filter-class>cn.itcast.filter.EncodingFilter</filter-class>

    <init-param>

        <param-name>charset</param-name>

        <param-value>utf-8</param-value>

    </init-param>

</filter>

<filter-mapping>

    <filter-name>EncodingFilter</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>

 
EncodingFilter()クラスソースコード:
 1 package cn.itcast.filter;

 2 

 3 import java.io.IOException;

 4 

 5 import javax.servlet.Filter;

 6 import javax.servlet.FilterChain;

 7 import javax.servlet.FilterConfig;

 8 import javax.servlet.ServletException;

 9 import javax.servlet.ServletRequest;

10 import javax.servlet.ServletResponse;

11 import javax.servlet.http.HttpServletRequest;

12 

13 

14 public class EncodingFilter implements Filter {

15     private String charset = "UTF-8";

16     @Override

17     public void destroy() {}

18 

19     @Override

20     public void doFilter(ServletRequest request, ServletResponse response,

21             FilterChain chain) throws IOException, ServletException {

22         HttpServletRequest req = (HttpServletRequest) request;

23         if(req.getMethod().equalsIgnoreCase("GET")) {

24             if(!(req instanceof GetRequest)) {

25                 req = new GetRequest(req, charset);// get 

26             }

27         } else {

28             req.setCharacterEncoding(charset);// post 

29         }

30         chain.doFilter(req, response);

31     }

32 

33     @Override

34     public void init(FilterConfig fConfig) throws ServletException {

35         String charset = fConfig.getInitParameter("charset");

36         if(charset != null && !charset.isEmpty()) {

37             this.charset = charset;

38         }

39     }

40 }