全域編碼過濾器

來源:互聯網
上載者:User

標籤:

import java.io.IOException;import java.io.UnsupportedEncodingException; 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.HttpServletRequestWrapper;import javax.servlet.http.HttpServletResponse; public class EncodingFilter implements Filter {         private static String encoding;    private static final String DEFAULT_CHARSET="UTF-8";    @Override    public void destroy() {        System.out.println("--------destroy---------");    }     @Override    public void doFilter(ServletRequest request, ServletResponse response,            FilterChain chain) throws IOException, ServletException {        System.out.println("--------doFilter---------");        HttpServletRequest httpRequest = (HttpServletRequest) request;          HttpServletResponse httpResponse=(HttpServletResponse)response;        if("GET".equals(httpRequest.getMethod())){            EncodingHttpServletRequest wrapper = new EncodingHttpServletRequest(httpRequest, encoding);               chain.doFilter(wrapper, response);          }else{            httpRequest.setCharacterEncoding(encoding);            httpResponse.setContentType("text/html;charset="+encoding);            chain.doFilter(request, response);          }    }    private static class  EncodingHttpServletRequest extends HttpServletRequestWrapper{         private HttpServletRequest request;         public EncodingHttpServletRequest(HttpServletRequest request,String encoding) {           super(request);           this.request = request;         }         @Override        public String getParameter(String name) {               String value = request.getParameter(name);               try {                value = new String(value.getBytes("iso8859-1"), encoding);               } catch (UnsupportedEncodingException e) {                e.printStackTrace();               }               return super.getParameter(name);        }    }    @Override    public void init(FilterConfig config) throws ServletException {         System.out.println("--------init---------");           encoding = config.getInitParameter("encoding");         if(encoding==null||"".equals(encoding))             encoding=DEFAULT_CHARSET;    } }
<!-- 設定全域的編碼格式,針對get,post請求,預設編碼為UTF-8 -->  <filter>      <filter-name>characterFilter</filter-name>      <filter-class>com.mscncn.jsd1404.EncodingFilter</filter-class>      <init-param>          <param-name>encoding</param-name>          <param-value>UTF-8</param-value>      </init-param>  </filter>  <filter-mapping>      <filter-name>characterFilter</filter-name>      <!-- 攔截所有的請求,為所有的請求設定編碼 -->      <url-pattern>/*</url-pattern>  </filter-mapping>

 

全域編碼過濾器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.