Cómo subir ficheros con Struts 2

Son muchas las cosas que cambian en la nueva versión de Struts, entre ellas está la manera de subir ficheros.

Desde una jsp, mediante el componente s:file que renderiza una caja con selector de ficheros, se sube al servidor el fichero que el usuario elija. Struts lo convierte a un fichero tmp que guardará en el directorio raíz de la aplicación en el servidor, por lo tanto en el Action debemos, además de recuperar el fichero, saber su nombre y extensión para poder devolverlo a su forma original.

Por pasos:

1. En la jsp pondremos tantos

          <s:file name="documento">

como documentos queramos subir (en este ejemplo haremos referencia al fichero como “documento”). Todos los componentes s:file deben tener el mismo nombre.

Además, en el formulario en el que se incluyan esos componentes, hay que añadir el atributo

          enctype="multipart/form-data"

2. En el Action declararemos dos propiedades

          private File documento;
          private String documentoFileName;

o

          private File[]documento;
          private String[] documentoFileName;

si vamos a subir más de un fichero. Hay que prestar atención a la convención de nombres, el nombre de la propiedad que contenga el fichero tiene nombre libre, pero el nombre de la que contiene el nombre del fichero debe estar formado por el nombre de la primera propiedad seguido por FileName.

Además se deben declarar sus correspondientes get y set.

3. En struts.xml añadir a la lista de interceptores el que se encarga de la subida de ficheros

          <interceptor-ref name="fileUpload"/>

para que este interceptor funcione, debemos añadir a las librerías de la aplicación los jar: commons-fileupload-x.x.x.jar y commons-io-x.x.x.jar


Crear un fichero WAR para el despliegue de una aplicación JEE

Para crear un fichero WAR con el contenido necesario para desplegar una aplicación JEE en un servidor, Tomcat por ejemplo, podemos hacerlo de varias maneras, dos de ellas son:

- Con la aplicación jar de la JDK, ejecutando en línea de comandos la instrucción:

              jar -cfv <nombre_del_fichero>.war <lista_de_ficheros_a_comprimir>

- Si usamos Eclipse, creando un fichero build.xml para que lo ejecute ANT: en el directorio raíz de la aplicación creamos un nuevo fichero build.xml. Los ficheros de configuración de ANT contienen targets, que definen tareas a realizar. En este caso definiremos una para que comprima los archivos en un war:

               <?xml version="1.0" encoding="UTF-8" ?>
                  <project name="Deploy From Eclipse to Tomcat" basedir=".">

                     <property name="warfile" value="<nombre_de_war>"/>

                     <target name="crearWAR">
                        <war destfile="${warfile}.war" webxml="WebContent/WEB-INF/web.xml" update="true">
                           <classes dir="build\classes"/>
                           <fileset dir="WebContent">
                              <exclude name="WEB-INF/web.xml"/>
                           </fileset>
                        </war>
                     </target>
                  </project>

Una vez creado el WAR basta con “soltarlo” en el directorio webapps de Tomcat, de manera que la próxima vez que se arranque el servidor éste desplegará la aplicación.

Seguir

Get every new post delivered to your Inbox.