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

Configurar path en web.xml / servlet

Estas en el tema de Configurar path en web.xml / servlet en el foro de Java en Foros del Web. Hola! Estoy usando un script para subir ficheros a mi servidor, pero no sé cómo debo indicar la ruta en la que quiero guardar dichos ...
  #1 (permalink)  
Antiguo 03/08/2009, 09:20
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años
Puntos: 1
Pregunta Configurar path en web.xml / servlet

Hola!

Estoy usando un script para subir ficheros a mi servidor, pero no sé cómo debo indicar la ruta en la que quiero guardar dichos archivos.

Mi estructura de directorios es la siguiente:

Código:
Tomcat 6.0/
	webapps/
		uploadDir/
		dir/
			WEB-INF/
				classes/
					servlet_que_se_ejecuta
El servlet que se ejcuta al procesar la petición está en dir y el destino del fichero a subir quiero que sea uploadDir. He probado diversas rutas:
/../../uploadDir
../../uploadDir
/../uploadDir
../uploadDir
/uploadDir

con, y sin slash al final... pero no consigo que me suba el fichero. El servlet funciona correctamente porque si le pongo como path "/", me sube el fichero a C:/. No sé si es mejor opción escribir la ruta en el código del servlet o configurar el parámetro en web.xml, sólo he sabido probar la primera opción.

Me podríais guiar un poco para conseguir acceder al directorio deseado?

Gracias,
/Andrea
  #2 (permalink)  
Antiguo 03/08/2009, 09:33
Avatar de Gguer  
Fecha de Ingreso: abril-2009
Mensajes: 125
Antigüedad: 15 años
Puntos: 1
Respuesta: Configurar path en web.xml / servlet

Hola, dices que el servlet el cual ejecuta tu petición está en dir, pero sería más correcto (creo yo) ponerlos en su carpeta por defecto WEB-INF/classes en Tomcat.
Ojalá puedas poner la traza de tu archivo web.xml para ver qué directorio le das a tu servlet. Esto ocasiona muy seguido bastantes problemas porque la carpeta o el directorio que tú le asignas a tu servlet realmente no es un directorio existente en tu árbol de archivos, quizá ya sepas esto, es algo confuso pero me gustaría que pusieras tu web.xml para no confundirte de más
  #3 (permalink)  
Antiguo 03/08/2009, 15:53
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años
Puntos: 1
Respuesta: Configurar path en web.xml / servlet

La carpeta por defecto a la que te refieres... ¿es la que está bajo "ROOT"? De cualquier manera, los servlets que tengo alojados funcionan correctamente, así que eso no creo que sea problema.
Ahora mismo no tengo acceso al fichero web.xml, pero no hago ningún tipo de referencia a ningún directorio. Simplemente añadí las líneas correspondientes para que reconozca los servlets:

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<servlet>
<servlet-name>upload</servlet-name>
<servlet-class>UploadFile</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>upload</servlet-name>
<url-pattern>/upload</url-pattern>
</servlet-mapping>

<session-config>
<session-timeout>30</session-timeout> <!-- 30 minutes -->
</session-config>

</web-app>


No tengo hecha ninguna referencia a ningún directorio... no sé cómo indicarlo, qué debo indicar, ni cómo hacer referencia a los directorios. Hum... no, no sé cómo trabaja Tomcat con los path, estoy un poco perdida

Con eso de "poner la traza", ¿te refieres a escribir el contenido??

Un saludo,
/Andrea
  #4 (permalink)  
Antiguo 04/08/2009, 02:51
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años
Puntos: 1
Respuesta: Configurar path en web.xml / servlet

Creo que lo correcto para mi caso es hacer referencia al directorio en web.xml, de la siguiente manera:

<context-param>
<param-name>uploadDir</param-name>
<param-value>el_path_del_directorio</param-value>
</context-param>

Puede ser? Pero sigue la duda de cómo hacer referencia al directorio, ya que no sé si es path absoluto, o relativo, y en caso de ser erlativo, cuál es el directorio inicial... Supongo que es {CATALINA_HOME}... Voy a hacer pruebas a ver si lo consigo.

/Andrea
  #5 (permalink)  
Antiguo 04/08/2009, 05:56
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Respuesta: Configurar path en web.xml / servlet

Wenas

Tal y como te dice Gguer, las clases (el servlet es una clase) deben estar en web-inf\classes.

Una vez hecho esto, y segun tu web.xml tienes que tener una clase (tu servlet) llamada UploadFile.class que esta directamente en tu web-inf\classes, ya que no tiene ningun paquete.

Despues te crearas una jsp, o un servlet, que tenga un formulario multipart/form-data con un campo file, para elegir el fichero a subir al servidor. el action de este formulario sera <tuaplicacion>/upload (tal y como tienes mapeado en tu web.xml)

A partir de ahi, empieza a preguntar.

Saludos.
  #6 (permalink)  
Antiguo 04/08/2009, 06:05
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años
Puntos: 1
Respuesta: Configurar path en web.xml / servlet

De acuerdo, ya está funcionando

Si no se pone nada, el fichero por defecto es el directorio creado con el nombre del servlet, el que está colgando de webapps. Para que se entienda, en mi caso, en el ejemplo del path que puse en el primer post, es el directorio dir.

Así que he hecho algunas modificaciones, ya que no he sabido escribir un path de forma que suba un nivel, y baje otro... Algo así como "../dirUplaod". Y he creado una carpeta nueva dentro del directorio desde el que se ejecuta el servlet.

En web.xml he añadido:

<context-param>
<param-name>uploadDir</param-name>
<param-value>/upload/</param-value>
</context-param>

y... muy importante: he tenido que dar permisos de escritura al directorio creado!! Tal vez funcionara con alguno de los intentos anteriores, pero me he dado cuenta bastante tarde que no tenía permisos de escritura en ese directorio...

Gracias por los aportes
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 06:02.