当我运行此代码时,
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();
}
} %>
当我从数据库检索图像时发生异常。
答案 0 :(得分:0)
您可以在JSP中获取OutputStream
或Writer
而不是两者。因为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。