Java - Duda con un Servlet

 
Vista:
sin imagen de perfil

Duda con un Servlet

Publicado por Maria (25 intervenciones) el 18/02/2017 23:40:33
Hola a todos...se me plantea esta duda:
Tengo una carpeta llamada imagenes (la cual contiene imagenes) en la carpeta raiz

Tengo un servlet cuyo patrón URL "/imagen/*".
Tengo que hacer que cuando se invoque este servlet podrá indicarse en la parte final de su URL el nombre de un archivo de imagen; por ejemplo:

http://localhost:8081/imagen/coche.jpg

El servlet deberá buscar la imagen en la carpeta de imágenes y si existe enviársela como respuesta al navegador.

Tengo creada la carpeta y el servlet, pero estoy perdida con el codigo, nose como indicar lo que se me pide...Si alguien me puede echar una mano.
Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 190
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Duda con un Servlet

Publicado por preguntas (70 intervenciones) el 19/02/2017 22:05:18
Te ayudo

Primero arreglemos lo de la ruta. Ej: bla.com/imagenes/01.jpg

Debes agregar un descriptor de despliegue (web.xml).
Vas a la pestaña Servlets.

Add Servlet Element (Arriba en la derecha).
Le das un nombre cualquiera.
seleccionas el servlet donde llegarán las peticiones.
JSP FILE VACIO (ya que es: o un Servlet o un JSP. NO ambos juntos)
Descripcion lo que sea.
URL PATTERN: Aquí esta la magia. la o las rutas que escribas, activaran el servlet seleccionado anteriormente. Por lo que escribiremos /imagenes/* (un * para poder seguir escribiendo lo que queramos en la ruta. Ej: /imagenes/tu_imagen.jpg. esto es valido).
OK, y ya tenemos el 50% del trabajo terminado. (creo que me toma mas tiempo escribir esto que hacer la aplicación).

Probemos esto.
En tu index.html o jsp (el principal).
agreguemos un enlace: <a href="imagenes/nombre_imagen.jpg">Mostrar increíble imagen</a> (requerda que estamos en /imagenes/*, por lo tanto se activa nuestro Servlet).

Bien.
En el servlet que deberias tener ya agregado (El que seleccionamos en la pestaña Servlets en web.xml).
Para que no nos cansemos de programar, borremos todo el contenido del metodo processRequest y escribamos ahi.

Primero hay que tomar el nombre de la foto que se encuentra en la url:

String imagen = request.getPathInfo().substring(1, request.getPathInfo().length());
//lo que hago es tomar este ultimo valor de la url y le quito el / para que quede el nombre de la imagen limpio.

Luego:

response.setContentType("text/html"); //que es para que la respuesta se visualice como html y no texto plano.

Y por ultimo (Gracias a Dios). imprimimos la imagen.
(supongamos que la imagen se encuentra en una carpeta llamada img)

response.getWriter().print("<img src='../img/"+imagen+"' width=600 />");

importante el: ../
Recuerda que estamos en el 'directorio' (se me olvido el termino correcto) /imagenes/ por lo que hay que devolverse a la raíz y buscar el si directorio img que contiene las imagenes.

Ya no escribo más.
Me debes una cerveza.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Duda con un Servlet

Publicado por Maria (25 intervenciones) el 19/02/2017 22:59:58
Eres un crack!!!
Esa cerveza está paga ;)

Muchas gracias por tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar