JSP 페이지에서 데이터베이스에 저장된 이미지를 표시하려고합니다. 어떻게해야합니까?oracle 데이터베이스에서 JSP로 이미지를 검색하는 방법은 무엇입니까?
다음 JSP 코드를 시도했지만 브라우저에 아무 것도 표시하지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
<%
HttpSession ses2=request.getSession();
String email2 = (String)ses2.getAttribute("ses_email");
Connection cn2;
PreparedStatement ps2;
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
cn2=DriverManager.getConnection("jdbc:odbc:sm","system","gecbsp");
ps2=cn2.prepareStatement("select * from smreg3 where email = "+
"'"+email2+"'");
ResultSet rs2=ps2.executeQuery();
//ServletOutputStream sos=response.getOutputStream();
if(rs2.next())
{
byte[] bytearray = new byte[1024];
int size=0;
InputStream image;
image = rs2.getBinaryStream(1);
response.reset();
response.setContentType("image/jpeg");
while((size=image.read(bytearray))!= -1)
{
response.getOutputStream().write(bytearray,0,size);
}
response.flushBuffer();
image.close();
rs2.close();
}
}
catch(Exception ee)
{
ee.printStackTrace();
}
%>
오류 :
java.lang.IllegalStateException
at org.apache.catalina.connector.ResponseFacade.reset(ResponseFacade.java:310)
at org.apache.jsp.profile_jsp._jspService(profile_jsp.java:193)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
[둘러보기] (http://stackoverflow.com/tour)를 읽어보십시오. –
@MarkusWMahlberg [대답 B] (http://h2g2.com/entry/A4288584)는 적당히 사용할 수 있으며, 6을 곱하면 9이 될 수 있습니다. –
@ElliottFrisch : 나는 그 대답도 알고있다. 내가 쓴 것처럼 나는 정확한 질문을 원한다. ;) –