java - request.setcharacterencoding() 方法似乎在源代码中没有执行任何操作

标签 java http servlets jakarta-ee request

在servlet java类中,我输入request.setCharacterEncoding("utf-8"),然后我想看看这个方法在源代码中实际上是什么,我使用了CTRL+左键单击进入方法的源代码
然后进入ServletRequest接口(interface),接口(interface)中方法的代码为

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

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

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

最佳答案

该方法由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 并查看实现。

关于java - request.setcharacterencoding() 方法似乎在源代码中没有执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41428185/

相关文章:

java - 如何将curl调用转换为java HttpPost : curl --form "archive=@test.pdf;type=application/pdf"

java - 多对一关系的复合主键不支持映射报错

java - 以编程方式将 HttpSessionListener 添加到 Jetty 不起作用

internet-explorer - Internet Explorer 9 不为内嵌附件使用文件名

java - 如何将 Swing JFrame 配置为 Spring bean?

java - AsyncServerRequestHandler 如何设置响应 header ?

java - 如何在 Java 代码中使用 OpenMP?

http - 为什么我不能将正文添加到 http 重定向?

java - 为什么对象类方法在接口(interface)中可用?

java - 在 Eclipse 中查看 http POST 和 GET 数据的最简单/最佳方法?任何插件/工具?