request.setcharacterencoding()方法似乎在源代码中什么都不做

时间:2017-01-02 13:55:28

标签: java http servlets java-ee request

在servlet java类中,我输入 request.setCharacterEncoding(“utf-8”),然后我想看看这个方法在源代码中实际是什么,我使用CTRL + LEFT-CLICK输入方法的源代码
然后进入 ServletRequest接口,在接口中方法的代码是

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

这肯定是一个空方法,因为ServletRequest是一个接口。

我在哪里可以看到这种方法实际上设置了什么编码?

1 个答案:

答案 0 :(得分: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);
        }
    }

正如您所看到的,它只是验证编码名称并设置存储编码的内部请求实现字段。您可以搜索implements HttpServletRequest的servlet容器源代码并查看实现。