Java 使用jersey在浏览器中显示Blob
我一直得到image==null!从服务器。我只是想把我上传到mysql的图像显示为fileinputstream中的一个blob。在数据库中,它显示为bufferedinputstream供参考。我把它硬编码,看能不能得到结果。你们能看到我做错了什么吗Java 使用jersey在浏览器中显示Blob,java,web-services,rest,jersey,blob,Java,Web Services,Rest,Jersey,Blob,我一直得到image==null!从服务器。我只是想把我上传到mysql的图像显示为fileinputstream中的一个blob。在数据库中,它显示为bufferedinputstream供参考。我把它硬编码,看能不能得到结果。你们能看到我做错了什么吗 @Path("/photo" ) public class DisplayPhoto { @GET @Path("{id}") @Produces("image/*") public Response post(@PathParam("i
@Path("/photo" )
public class DisplayPhoto {
@GET
@Path("{id}")
@Produces("image/*")
public Response post(@PathParam("id") String id) {
Connection con = connection();
BufferedImage image = null;
try {
image = ImageIO.read( getPhoto(con).getBinaryStream() );
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ByteArrayOutputStream baos2 = new ByteArrayOutputStream();
try {
ImageIO.write( image, "jpg", baos2 );
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return Response.ok(baos2.toByteArray()).build();
}
public Connection connection(){
Connection con = null;
try {// set up driver for database
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
con = DriverManager.getConnection("jdbc:mysql://aa1c9da17owdhky.cotr7twg0ekb.us-west-2.rds.amazonaws.com/test","nightskycode","uocb4t111");
// boolean reachable = con.isValid(10);// check for connection to DB
} catch (SQLException e) {
e.printStackTrace();
System.out.println("No go!3");
}
return con;
}
public Blob getPhoto(Connection con){
Blob photo = null;
Statement stmt = null;
ResultSet rs = null;
try {
stmt = con.createStatement();
rs = stmt.executeQuery("Select photo from photos where photo_id = 3");
if (stmt.execute("Select photo from photos where photo_id = 3")) {
rs = stmt.getResultSet();
while (rs.next()) { // results here
photo = rs.getBlob("photo");
System.out.println(rs.getString("photo")); }
}
}
catch (SQLException ex){
// handle any errors
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
}
return photo;
}
**here is the trace**
Dec 22, 2013 9:29:35 PM org.apache.catalina.core.StandardWrapperValve invoke
严重:路径为[/restService]的上下文中Servlet[ServletAdapter]的Servlet.service()引发异常
java.lang.IllegalArgumentException:image==null!
在javax.imageio.ImageTypeSpecifier.CreateFromRenderImage(未知源)
位于javax.imageio.imageio.getWriter(未知源)
在javax.imageio.imageio.write(未知源)
位于restService.status.DisplayPhoto.post(DisplayPhoto.java:63)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
位于com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
位于com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker.\u dispatch(AbstractResourceMethodDispatchProvider.java:205)
位于com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
位于com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
位于com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
位于com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
位于com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
位于com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
位于com.sun.jersey.server.impl.application.WebApplicationImpl.\u handleRequest(WebApplicationImpl.java:1542)
位于com.sun.jersey.server.impl.application.WebApplicationImpl.\u handleRequest(WebApplicationImpl.java:1473)
位于com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
位于com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
在com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)上
位于com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:540)
位于com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:715)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
位于org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
位于org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
位于org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
位于org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
位于org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(未知源)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源)
在java.lang.Thread.run(未知源代码)中,System.out.println(rs.getString(“photo”);中没有任何内容?尝试System.out.println(照片);结果仍然为空吗?不,我有一个结果,结果是:java.io。BufferedInputStream@26a1c72bhave您尝试检索其他内容以检查与DB的连接是否正常工作?正常工作,我正在获取java.io。BufferedInputStream@26a1c72b从我的数据库。数据库连接正常