illegalException :: response getwriter()已经定义

时间:2015-12-16 05:10:53

标签: java jsp

当我运行此代码时,

  

illegalException :: response getwriter()已经定义。

<% 
            Blob image = null;
                Connection con = null;
                byte[ ] imgData = null ;
                Statement stmt = null;
                ResultSet rs = null;
                try {
                    Class.forName("com.mysql.jdbc.Driver");
                    con = DriverManager.getConnection("jdbc:mysql://localhost:3306/hicheck","root","root");
                    stmt = con.createStatement();
                    String s="sivabrahma";
                    PreparedStatement ps=con.prepareStatement("select photo from hic_relation where email=? ");  
                    ps.setString(1,"sivabrahma");
                    rs=ps.executeQuery();  
                    if (rs.next()) {
                    image = rs.getBlob(1);
                    imgData = image.getBytes(1,(int)image.length());
                    }
                     else {
                    out.println("Display Blob Example");
                    out.println("image not found for given id");
                    return;
                    }
                    // display the image
                    response.setContentType("image/gif");
                    response.getOutputStream();
                    ServletOutputStream o = response.getOutputStream();
                    o.write(imgData);
                    o.flush();
                    o.close();
                      System.out.println(o.toString());
          System.out.println(imgData.toString());
                } catch (Exception e) {
                    out.println("Unable To Display image");
                    out.println("Image Display Error=" + e.getMessage());
//                    return;
                } finally {
                try {
                    rs.close();
                    stmt.close();
                    con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }

                } %>

当我从数据库检索图像时发生异常。

2 个答案:

答案 0 :(得分:0)

您可以在JSP中获取OutputStreamWriter而不是两者。因为JSP scriptlet已经隐含out,您无法调用getOutputStream()

getOutputStream()的文档:https://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html#getOutputStream()

  

IllegalStateException - 如果已调用getWriter方法   这个回应

答案 1 :(得分:0)

您无法安全地在JSP中调用response.getOutputStream()getWriter()。 JSP已经为响应创建了编写器,并将使用它。

想一想。 JSP引擎如何知道JSP组装的输出的正确交错,并输出JSP代码片段(&#34; scriptlets&#34;)直接写入流/写入器。

如果你想直接写&#34;&#34;在JSP中的响应流中,使用隐式声明的JSP out变量...它为您提供了JSP使用的JSPWriter。