加载jsp时尝试调用servlet

艾哈迈德·艾尔·汉纳威

我正在构建一个简单的Train预订系统,现在我试图打开jsp以从数据库中选择数据,然后返回到相同的servlet,然后再次调用该servlet,但是我一直遇到错误。

这是我的trip.jsp

<body>
     <% if ((request.getAttribute("trips") == null)) {
    %>

    <jsp:include page="/trips" flush="true" />
    <% } %>
    <table>
        <tr>
            <th>Trip Number</th>
            <th>Train Number</th>
            <th>Source</th>
            <th>Destination</th>
            <th>Departure Time</th>
            <th>Arrival Time</th>
            <th>Date</th>
            <th>Reserved Seats</th>
            <th>Price</th>
        </tr>
    <%
        //ArrayList list = new ArrayList();
        List trip = new ArrayList();
        Iterator viewTrip;
        if(request.getAttribute("trips")!=null && request.getAttribute("trips")!=""){
            List allTrips = (ArrayList)request.getAttribute("trips");
            Iterator itr = allTrips.iterator();

            while(itr.hasNext()){
                trip = (ArrayList)itr.next();
                viewTrip = trip.iterator();
                %>
                <tr>
                    <%
                        while(viewTrip.hasNext()){
                            %>
                            <td>
                                <%=viewTrip.next()%>
                            </td>
                            <%
                        }
                    %>
                </tr>
                <%
            }
        }
    %>

    </table>
</body>

这是我的servlet。trips.java

protected void processRequest(HttpServletRequest request,     HttpServletResponse response)
        throws ServletException, IOException, SQLException {
    response.setContentType("text/html;charset=UTF-8");
    try (PrintWriter out = response.getWriter()) {
        Connection con = DB.getActiveConnection();
        Statement stmt = con.createStatement();
        ResultSet rs = null;

        ArrayList trip = new ArrayList();
        ArrayList data = null;

        try {
            String query = "select * from trips";
            rs = stmt.executeQuery(query);

            while(rs.next()){
                data = new ArrayList();

                data.add(rs.getString(9)); // trip number
                data.add(rs.getInt(1)); // train number
                data.add(rs.getString(2)); // source 
                data.add(rs.getString(3)); // destination
                data.add(rs.getTime(4)); //departure time
                data.add(rs.getTime(5));// arrival time
                data.add(rs.getDate(6));// date
                data.add(rs.getInt(7));// reserved seats 
                data.add(rs.getDouble(8));//price


                trip.add(data);
            }
            request.setAttribute("trips", trip);
            con.close();
            RequestDispatcher requestDispatcher = request.getRequestDispatcher("/updateTrip.jsp");
            requestDispatcher.include(request, response);
            //out.close();
            //return;
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }

这是我得到的错误

    25-Dec-2016 15:47:01.822 SEVERE [http-nio-8084-exec-4]         
    org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for     servlet [jsp] in context with path [/Train] threw exception [java.lang.IllegalStateException: Exception occurred when flushing data] with root cause
 java.io.IOException: Stream closed
    at org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:200)
    at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:105)
    at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:184)
    at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:120)
    at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:75)
    at org.apache.jsp.updateTrip_jsp._jspService(updateTrip_jsp.java:199)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
古尔温德·辛格

您正在使用try with resources,它会在退出try块时自动关闭流。

try (PrintWriter out = response.getWriter()) {
....
}

trip.jsp将请求和响应对象传递到servlet trips.java,在servlet中,您将在其中获得PrintWriter响应(由于某种原因,未在任何地方使用它)try with resource,这将在try块的末尾关闭基础流。现在,当您的包含操作完成并且控件返回到trip.jsp并尝试编写jsp内容时,由于流已关闭,它将失败

只需将代码更改为:

PrintWriter out = response.getWriter();
try {
....
} catch (IOException e) {
....
}

或者,如果您不想在此处处理异常,则只需完全删除该尝试即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当我尝试使用锚标记从我的jsp页面调用servlet页面时,显示错误

来自分类Dev

如何在JSP页面加载时调用Servlet

来自分类Dev

如何从jsp调用servlet

来自分类Dev

JSP include不调用servlet

来自分类Dev

在jsp / servlet中加载js文件时出现路径404问题

来自分类Dev

页面加载时,JSP将隐藏的输入值传递给servlet

来自分类Dev

尝试在Debian上运行的tomcat上加载servlet时出现UnsuportedClassVersionError

来自分类Dev

将Bean从Servlet加载到JSP

来自分类Dev

doGet()Servlet方法未从JSP调用

来自分类Dev

显示JSP之前调用servlet的doGet()

来自分类Dev

如何从不带脚本的jsp调用servlet?

来自分类Dev

如何从servlet调用jsp中定义的函数?

来自分类Dev

尝试调用.php文件获取数据时,环聊应用XMLHttpRequest无法加载错误

来自分类Dev

尝试从本地 JSON 文件调用图像时不会加载图像

来自分类Dev

打开jsp时servlet出现错误

来自分类Dev

尝试通过JSP访问在servlet中创建的bean

来自分类Dev

调用supplyAsync时尝试并捕获

来自分类Dev

Servlet在启动时未加载

来自分类Dev

在Servlet中加载FCL文件时出错

来自分类Dev

Spray-Servlet加载时出现死信

来自分类Dev

将数据从TEXT文件加载到JSP Servlet页面

来自分类Dev

使用特定的servlet在pageload上加载动态.jsp页面

来自分类Dev

无法加载类javax.servlet.jsp.el.ImplicitObjectELResolver $ ImplicitObjects

来自分类Dev

CSS 和 JS 未加载到 JSP servlet 映射上

来自分类Dev

如何在 JSP-Servlet 中执行延迟加载?

来自分类Dev

从servlet调用servlet,并在一个应用程序中调用JSP(wo Form)

来自分类Dev

JSP,Java和数据库。如果尝试登录时提交了错误的数据,如何再次调用同一index.jsp?

来自分类Dev

如何使用ajax调用从servlet到jsp获取arraylist数据

来自分类Dev

从JSP页面的表单动作中调用servlet

Related 相关文章

  1. 1

    当我尝试使用锚标记从我的jsp页面调用servlet页面时,显示错误

  2. 2

    如何在JSP页面加载时调用Servlet

  3. 3

    如何从jsp调用servlet

  4. 4

    JSP include不调用servlet

  5. 5

    在jsp / servlet中加载js文件时出现路径404问题

  6. 6

    页面加载时,JSP将隐藏的输入值传递给servlet

  7. 7

    尝试在Debian上运行的tomcat上加载servlet时出现UnsuportedClassVersionError

  8. 8

    将Bean从Servlet加载到JSP

  9. 9

    doGet()Servlet方法未从JSP调用

  10. 10

    显示JSP之前调用servlet的doGet()

  11. 11

    如何从不带脚本的jsp调用servlet?

  12. 12

    如何从servlet调用jsp中定义的函数?

  13. 13

    尝试调用.php文件获取数据时,环聊应用XMLHttpRequest无法加载错误

  14. 14

    尝试从本地 JSON 文件调用图像时不会加载图像

  15. 15

    打开jsp时servlet出现错误

  16. 16

    尝试通过JSP访问在servlet中创建的bean

  17. 17

    调用supplyAsync时尝试并捕获

  18. 18

    Servlet在启动时未加载

  19. 19

    在Servlet中加载FCL文件时出错

  20. 20

    Spray-Servlet加载时出现死信

  21. 21

    将数据从TEXT文件加载到JSP Servlet页面

  22. 22

    使用特定的servlet在pageload上加载动态.jsp页面

  23. 23

    无法加载类javax.servlet.jsp.el.ImplicitObjectELResolver $ ImplicitObjects

  24. 24

    CSS 和 JS 未加载到 JSP servlet 映射上

  25. 25

    如何在 JSP-Servlet 中执行延迟加载?

  26. 26

    从servlet调用servlet,并在一个应用程序中调用JSP(wo Form)

  27. 27

    JSP,Java和数据库。如果尝试登录时提交了错误的数据,如何再次调用同一index.jsp?

  28. 28

    如何使用ajax调用从servlet到jsp获取arraylist数据

  29. 29

    从JSP页面的表单动作中调用servlet

热门标签

归档