java - 响应在自定义 servlet 转发中被写入两次

标签 java tomcat servlets

我需要转发到一个 servlet,该 servlet 是由自定义类加载器使用外部配置文件从主 servlet 从 jar 动态加载的。 servlet 本身没有映射到 web.xml 中。 我已经能够加载 servlet 并使用反射和强制转换构造一个新实例:

Object o = loadedClass.newInstance() ;
HttpServlet loadedServlet = (HttpServlet) o ;

我已将 servlet 初始化为:

loadedServlet.init(getServletConfig()) ;

然后在主 servlet 中实现每个 do... 方法:

loadedServlet.service(request, response) ;

除了响应输出两次外,一切都按预期工作:

hello, world!hello, world!

不是加载的 servlet 的问题:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter printWriter = response.getWriter() ;
    printWriter.write("hello, world!") ;
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doGet(request, response) ;
}

抱歉,如果这不够具体。关于我应该看什么的任何提示?

最佳答案

没关系,我自己找到了解决方案。 在调用 servlet.service() 之后调用 response.reset() 就是我所需要的。

loadedServlet.service(request, response) ;
response.reset() ;

关于java - 响应在自定义 servlet 转发中被写入两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26904005/

相关文章:

eclipse - 显示 Tomcat 管理器应用程序?

java - 尽管身份验证成功,但 RequestListener 中的 request.getUserPrincipal() 为 null

java - 如何将文件从远程Linux机器复制到JSP Web目录

java - InitialContext.lookup 从错误的 context.xml 中获取数据

JAVA - JMenuItem文本角左右

java - Spring Activity 将于元旦起火

java - 哪个 ODBC-JDBC 桥将自己的调用映射到 JDBC 驱动程序?

Java Single Link List-将现有对象(节点)移动到后端

Spring Boot - 带有独立 tomcat 的自定义 404 页面

java - 我应该在哪里放置在 Tomcat 上运行的 servlet、jsp 应用程序的数据文件?