JSP servlet包含输出tuncated

时间:2015-08-13 23:57:16

标签: java jsp tomcat servlets

我试图使用以下命令在jsp页面中包含来自servlet的响应:

<li><jsp:include page="/icr/TasksServlet.html"/></li>

servlet返回一个词:

try (PrintWriter out = response.getWriter()) {
        out.println("OOps");
        out.flush();
        out.close();
    }

结果是我的页面在&#34; OOps&#34;

之后被直接截断
    <ul class="navList">
    <li>ICR Open Tasks</li>
    <li>
        <ul>
    <li>OOps

tomcat抛出此错误:

org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet 
[validateUser] in context with path [/CAS] threw exception
[java.lang.IllegalStateException: Exception occurred when flushing data]
with root cause
java.io.IOException: Stream closed

我试图添加和删除out.flush();和out.close();以及添加flush =&#34; true&#34;到jsp:include标记。

我运行tomcat 8.0.24;具有春季MVC的Netbeans。

编辑:它有点类似于reported bug,但是在tomcat版本8.0.18之后修复了一个。我明天将在glassfish服务器上运行代码,看看它是否是服务器问题。

1 个答案:

答案 0 :(得分:1)

关闭servlet中的HttpServletResponse会阻止JSP页面写入响应。 try with resources块也将在完成时关闭HttpServletResponse。

使用普通的try语句,不要关闭响应。