Foros del Web » Programación para mayores de 30 ;) » Java »

llamando a un servlet desde un jsp sin form

Estas en el tema de llamando a un servlet desde un jsp sin form en el foro de Java en Foros del Web. la duda es la siguiente: Bueno acá esta mi duda, primero les voy a mostrar en este diagrama como están estructurados mis servlets: En donde ...
  #1 (permalink)  
Antiguo 18/06/2008, 18:50
 
Fecha de Ingreso: junio-2008
Mensajes: 6
Antigüedad: 15 años, 10 meses
Puntos: 1
llamando a un servlet desde un jsp sin form

la duda es la siguiente:
Bueno acá esta mi duda, primero les voy a mostrar en este diagrama como están estructurados mis servlets:
En donde dice Mas código está toda la estructura DAO de mi proyecto…eso no es lo que importa, está funcionando OK, ahora bien en la comunicación de ObtenerImagenServlet con el jsp2 es donde tengo el problema…

Para el jsp1 acá está el código
Hay un formulario con las respectivas áreas de textos y botones, al hacer submit (botón upload), me da como resultado lo que se ve en la imagen de arriba (archivo subido exitosamente)el código del jsp me devuelve eso y comprobé que se subían las imágenes a la base de datos.

acá está el respectivo servlet con el metodo post, Esto está funcionando bien….


Segundo Servlet

*En el segundo jsp necesito llamar al segundo servlet… el problema es que no se como hacerlo, se supone que en el jsp anterior al hacer submit se me devuelven los resultados, pero en este caso no hago eso, porque solo estoy llamando a las fotos de la bbdd
Mira así tengo mi codigo en el jsp, y creo que está mal… si te fijas hay un System.out.println() … se supone que cuando llamo a http://localhost:58080/proyectoAlbumFotos/mostrarfotos.jsp en el navegador me debería devolver un String con todos los tags que se guardaron al hacer el for, sin embargo me devuelve null.. no creo que hacer un form para obtener imágenes sea la respuesta, pero es lo que sabía que había que hacer para llamar a ese servlet, sin embargo no pasa nada..

Acá está el respectivo servlet del jsp…

Ese es el problema que tengo, bueno espero que haya quedado clara mi duda, a veces soy medio malo para explicar las cosas, pero de a poco lo estoy superando XD, nos vemos
  #2 (permalink)  
Antiguo 21/06/2008, 09:37
Avatar de Xinef  
Fecha de Ingreso: marzo-2007
Mensajes: 202
Antigüedad: 17 años, 1 mes
Puntos: 7
Respuesta: llamando a un servlet desde un jsp sin form

Cita:
Iniciado por julionicolas Ver Mensaje
Ese es el problema que tengo, bueno espero que haya quedado clara mi duda, a veces soy medio malo para explicar las cosas, pero de a poco lo estoy superando XD, nos vemos
Jeje, pues la verdad es que no ha quedado muy claro.... Además las imágenes del código se ven fatal, quizá deberías usar la etiqueta PHP y pegar el cógido como texto.

Por lo que yo he entendido quieres un sistema de subida/descarga de imágenes. La subida la tienes solucionada, pero el problema es la descarga.

Para descargar imágenes sólo tienes que crear un servlet que lea el fichero de la imagen de la BBDD y la reenvíe como fichero. Cambiando el content-type del envío.

Si quieres colocar la imagen en una web, sólo tienes que usar la URL al mapeo donde tengas el servlet en el atributo src de la etiqueta <img>.


Si no es eso lo que querías hacer... avisa.. :D
  #3 (permalink)  
Antiguo 25/06/2008, 19:31
 
Fecha de Ingreso: junio-2008
Mensajes: 6
Antigüedad: 15 años, 10 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
  #4 (permalink)  
Antiguo 26/06/2008, 22:06
Avatar de hwongu  
Fecha de Ingreso: junio-2008
Ubicación: Trujillo
Mensajes: 93
Antigüedad: 15 años, 10 meses
Puntos: 5
Respuesta: llamando a un servlet desde un jsp sin form

Hola bueno tu puedes llamar a un servlet de la misma forma que llamas a una pagina JSP, yo por ejemplo pongo mis reportes en los servlet y solo pongo para llamar a mi reporte en un href
Código PHP:
<a href="<%= request.getContextPath()+"nombreMiServlet"%>" >Mostrar</a
Pero date cuenta que no se le pone la extension .jsp al servlet
  #5 (permalink)  
Antiguo 29/06/2008, 22:53
 
Fecha de Ingreso: junio-2008
Mensajes: 6
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: llamando a un servlet desde un jsp sin form

gracias no sabía ese metodo me funcionó al instante
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:41.