Skip to Main Content

Java EE (Java Enterprise Edition) General Discussion

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

how i display image and text together in servlet

800625Oct 8 2008 — edited Oct 8 2008
hello all,
i wrote a code for display a image from database .. it is working fine ...but i want to write some text abouv and below the image.. my code is ...
package com.servlet;

import java.io.IOException;
import java.io.InputStream;
//import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class DisplayImageFromDataBase extends HttpServlet {
	
	String url = "jdbc:mysql://localhost/db";
	String user = "root";
	String password = "password";
	String jdbcDriver = "com.mysql.jdbc.Driver";
	Connection conn = null;
	PreparedStatement stmt = null;
    ResultSet rs = null;
	private static final long serialVersionUID = 5688494296139630737L;
	public void doGet(HttpServletRequest request , HttpServletResponse response) throws ServletException , IOException{
		String query = null;
		String image = null;
		int imagelength = 0;
//		response.setContentType("text/html");
//		PrintWriter pw = response.getWriter();
//		pw.println("Display Image From DataBase");
//		pw.println("Hansika Motwani");
		System.out.println();
	    try{
	    Class.forName(jdbcDriver).newInstance();
	    conn = DriverManager.getConnection(url,user,password);	
	    //pw.println("Before Query<br>");
	    System.out.println("Before Query");
	    query = "select image FROM db.servlet_images where image_Id = 2";
	    stmt = conn.prepareStatement(query);
	    stmt.executeQuery();
	    rs = stmt.getResultSet();
	    if(rs.next()){
	    	image = rs.getString(1);
	    	imagelength = image.length();
	    	//pw.println("Image Length is : " + imagelength + "<br>");
	    	System.out.println("Image Length is : " + imagelength);
	    }
	    query = "select image FROM db.servlet_images where image_Id = 2";
	    stmt = conn.prepareStatement(query);
	    stmt.executeQuery();
	    rs = stmt.getResultSet();
	    if(rs.next()){
	    	int length = image.length();
	    	byte [] bt = new byte[length];
	    	InputStream ips = rs.getBinaryStream(1);
	    	int index = ips.read(bt,0,length);
	    	//pw.println("Index is : " + index + "<br>");
	    	System.out.println("Index is : " + index);
	    	stmt.close();
	    	response.reset();
	    	response.setContentType("image/jpg");
	    	response.getOutputStream().write(bt,0,length);
	    	response.getOutputStream().flush();
	    }
	    stmt.close();
	    conn.close();
	    }catch(SQLException e){
	    	//pw.println("SQLException<br>");
	    	System.out.println("SQLException");
	    	//pw.println("Error is : " + e.getMessage() + "<br>");
	    	System.out.println("Error is : " + e.getMessage());
	    }catch(ClassNotFoundException e){
	    	//pw.println("ClassNotFoundException<br>");
	    	System.out.println("ClassNotFoundException");
	    	//pw.println("Error is : " + e.getMessage() + "<br>");
	    	System.out.println("Error is : " + e.getMessage());
	    }catch(IllegalAccessException e){
	    	//pw.println("IllegalAccessException<br>");
	    	System.out.println("IllegalAccessException");
	    	//pw.println("Error is : " + e.getMessage() + "<br>");
	    	System.out.println("Error is : " + e.getMessage());
	    }catch(InstantiationException e){
	    	//pw.println("InstantiationException<br>");
	    	System.out.println("InstantiationException");
	    	//pw.println("Error is : " + e.getMessage() + "<br>");
	    	System.out.println("Error is : " + e.getMessage());
	    }
	    finally{
	    	stmt = null;
	    	conn = null;
	    }
	}
}
when i use printwriter then it gives error....
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.IllegalStateException: getWriter() has already been called for this response
	org.apache.coyote.tomcat5.CoyoteResponse.getOutputStream(CoyoteResponse.java:568)
	org.apache.coyote.tomcat5.CoyoteResponseFacade.getOutputStream(CoyoteResponseFacade.java:148)
	com.servlet.DisplayImageFromDataBase.doGet(DisplayImageFromDataBase.java:64)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Nov 5 2008
Added on Oct 8 2008
1 comment
415 views