Ver Mensaje Individual
  #3 (permalink)  
Antiguo 25/06/2008, 19:31
julionicolas
 
Fecha de Ingreso: junio-2008
Mensajes: 6
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: llamando a un servlet desde un jsp sin form

mira esto es lo que he hecho
funcion que me retorna la imagen
esta funcion la tengo en un archivo llamado MYSQLDAO, estoy usando patrones de diseño
Cita:
public Image obtenerImagenBD(int i) throws Exception {
ResultSet rs = null;

Connection con = MysqlDAOFactory.getconnection();

if ( con != null) {

// Ejecutamos la consulta SQL que se pasa como parámetro
try {
Statement st=con.createStatement();

rs = st.executeQuery("select id,nombre,contenido,tamanio from archivosfotos where id="+ i);

if (!rs.next()) { // si no encntrada
System.out.println("Imagen:" + i + " no encontrada");
return null;
}

int len = rs.getInt("tamanio"); // longitud de la imagen

byte[] b = new byte[len]; // array de bytes
InputStream in = rs.getBinaryStream("contenido"); // leemos
int n = in.read(b);


System.out.println("n: " + n);
in.close();
// Creamos una imagen a partir de un array de bytes
Image img = Toolkit.getDefaultToolkit().createImage(b);

//System.out.println("Imagen: " + i +" recibido con éxito, tamaño: " + len);
return img;

}
catch (SQLException e) {
System.err.println("Error al acceder al registro: " + e.getMessage());
}
try {
rs.close();
}
catch (SQLException ex) {
}
con.close();
}

return null;
}

el dopost del servlet
está compuesto de dos partes una con el codigo que me sube el archivo y
otra con el codigo que supuestamente me debiera traer las imagenes

Cita:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

MysqlArchivoDAO datos=new MysqlArchivoDAO();



//MysqlArchivoDAO datos=new MysqlArchivoDAO();
String comentario=request.getParameter("comentario");
String direccion=request.getParameter("uploadfile");
String respuesta="";

Archivo file=new Archivo();
ObtenerSubString sub=new ObtenerSubString();

String nombreArchivo=sub.nombreArchivo(direccion);

file.setDireccion(direccion);
file.setNombreArchivo(nombreArchivo);
file.setComentario(comentario);
if(datos.insertarImagenBD(file)==true){
respuesta="archivo subido exitosamente";
}else{
respuesta="no se logró subir el archivo";
}

/*******************************/
/*obtener imagenes*/

int cant=datos.cantidadFotos();
Image img;
String str="";
for(int i=1; i<cant;i++){

try {
img=datos.obtenerImagenBD(i);
response.setContentType("image/jpg");
request.setAttribute("imagen"+i,img);

//str+="<td><img src="+datos.obtenerImagenBD(i)+"></td>";
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
System.out.println(str);

//request.getContentType();
//request.getContentType();

request.setAttribute("cantidad",new Integer(cant));
request.setAttribute("imagenes", str);
/********************************/


request.setAttribute("respuesta", respuesta);
request.getRequestDispatcher("/subirfoto.jsp").forward(request, response);
}
ahora me falta lo que debiera recibir el jsp pero no se como aplicarlo
habia pensado algo como <img src="img"> con los respectivos <%%>pero el problema de esto es que el img que retorna el servlet no está con el formato jpg, es como si fuera un
archivo sin extension. eso del conten-type nolo entiendo mucho, si alguien me pudiera ayudqr les estaría agradecido
nos vemos