我需要转发到一个 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/