2017-01-02 41 views
0

在servlet的java類中,我輸入request.setCharacterEncoding(「utf-8」),然後我想看看這個方法實際上是在源代碼,我用CTRL +左鍵單擊輸入法的源代碼
然後它去的ServletRequest接口,在接口方法的代碼是request.setcharacterencoding()方法在源代碼中似乎什麼也沒做

public void setCharacterEncoding(String env) 
    throws java.io.UnsupportedEncodingException; 

這是肯定的空方法,因爲ServletRequest是一個接口。

我在哪裏可以看到這個方法實際上做了什麼來設置編碼?

+1

我建議使用調試器並設置一個斷點,然後使用「step into」跳入實現類。據我所知,真正的類將由諸如tomcat,jetty等servlet容器提供。 – f1sh

+0

@ f1sh謝謝,我使用這種方式,最後在類Request中找到了相關的代碼。 – jacky

回答

1

該方法由servlet容器實現。例如爲Tomcat 8.5執行駐留在 org.apache.catalina.connector.Request#的setCharacterEncoding ,看起來像:

public void setCharacterEncoding(String enc) throws UnsupportedEncodingException { 
     if(!this.usingReader) { 
      B2CConverter.getCharset(enc); 
      this.coyoteRequest.setCharacterEncoding(enc); 
     } 
    } 

正如你可以看到它是驗證編碼名稱,並設置內部請求執行領域,其中編碼存儲。您可以搜索您的servlet容器源代碼implements HttpServletRequest並查看實現。

+0

謝謝,我在類Request中找到了相關的源代碼 – jacky

相關問題