1. Cargar el archivo Struts2
La implementación de carga de archivos de STRUTS2 es muy simple y se puede completar en solo unos pocos pasos simples;
Aviso:
(1) La etiqueta Struts2 para la carga de archivo es: <s: file name = "" etiqueta = "cargar"/>
(2) El requisito previo para la carga de archivos es el método de atributo de formulario = "post" enctype = "multipart/formy-data";
(3) La aplicación web debe incluir comunes-fileupload.jar y común-io.jar, porque el analizador de carga predeterminado de Struts2 usa Yakarta;
(4) El tamaño máximo de archivo permitido se puede configurar en struts.xml: <constant name = "struts.multipart.maxsize" value = "......"/>, el valor predeterminado es 2m;
1. Reglas de implementación de carga de archivo normal <Br />:
(1) Establezca el control de formulario en jsp <s: file name = "upload" etiqueta = "cargar"/>
(2) Definir atributos en acción:
carga de archivo privado; // incluye contenido de archivo
String privado cargandofileName; // El nombre del archivo cargado;
String private SubloadContentType; // El tipo de archivo de carga MIME;
Estos atributos se asignarán automáticamente a medida que se cargue el archivo;
(3) complete la función de escritura de disco en Execute ();
Ejemplo de código:
Cargando01action.java
paquete org.upload.action; import java.io.file; import java.io.fileInputStream; import java.io.fileOutputStream; importar org.apache.struts2.servletactionContext; import com.opensymphony.xwork2.ActionSupport; public class upload01action extiende ActionSupport {privado de archivo de archivo; String privado cargandofileName; String private SubloadContentType; nombre de cadena privada; public String Execute () lanza Exception {String Path = ServletActionContext.getServletContext (). GetRealPath ("/Web-Inf/upload"); Cadena filename = path+file.separator+name; FileInputStream in = new FileInputStream (cargar); FileOutputStream out = new FileOutputStream (nombre de archivo); byte [] b = nuevo byte [1024]; int len = 0; while ((len = in.read (b))> 0) {out.write (b, 0, len); } out.close (); devolver el éxito; } archivo público getupload () {return upload; } public void setupload (file upload) {this.upload = upload; } public String getuploadFileName () {return uploadFileName; } public void setUploadFileName (String uploadFileName) {this.uploadFileName = uploadFileName; } public String getuploadContentType () {return uploadContentType; } public void setUploadContentType (String uploadContentType) {this.uploadContentType = uploadContentType; } public String getName () {nombre de retorno; } public void setName (nombre de cadena) {this.name = name; }} struts.xml
<? xml versión = "1.0" encoding = "utf-8"?> <! DocType Struts public "-// Apache Software Foundation // Dtd Struts Configuration 2.0 // en" "http://struts.apache.org/dtds/struts-2.0.dtdd"> <truts> <stitant name = "struts.devmode" <constant name = "struts.custom.i18n.resources" value = "mensaje"> </constant> <paquete name = "default" namespace = "/" extends = "struts-default"> <Action name = "upload0*"> <param name = "name"> 1.jpg </amam> <pente>
1.JSP
<%@ página lenguaje = "java" import = "java.util.*" PageEncoding = "utf-8"%> <%@ taglib prefix = "s" uri = "/struts-tags"%> < '1.jsp' Página de inicio </title> </head> <body> <s: form de acción = "upload01" métode = "post" enctype = "multipart/form de formato-data"> <s: file name = "upload" etiqueta = "upload"> </s: archivo> <s: enviar valor = "cargar"> </s: enviar> </s: form> </body> </html>
2. Use interceptores para filtrar
El método para implementar manualmente el filtrado es muy simple, que es usar la verificación de entrada para filtrar, es decir, filtrarse en validate ();
El método interceptor del que queremos hablar aquí es una buena manera. Solo debe configurarse en el archivo de configuración. Tiene buena flexibilidad y puede limitar el tipo de archivo y el tamaño del archivo. Si el archivo cargado no cumple con los requisitos, devolverá la vista lógica de entrada;
Pasos para configurar el interceptor:
(1) El interceptor para la carga de archivos es fileUpload;
(2) Se requiere que los parámetros dados se permitan tipos y máximo de tamaño;
(3) Después del Interceptor FileUpload, debe agregar <Interceptor-Ref name = "DefaultStack"/>
Ejemplo de código:
Dado que filtrarse a través de un interceptor solo requiere la configuración de Struts.xml, solo se proporciona la configuración de Struts.xml.
<? xml versión = "1.0" encoding = "utf-8"?> <! DocType Struts public "-// Apache Software Foundation // Dtd Struts Configuration 2.0 // en" "http://struts.apache.org/dtds/struts-2.0.dtdd"> <truts> <stitant name = "struts.devmode" <constant name = "struts.custom.i18n.resources" valor = "mensaje"> </ constant> <paquete name = "default" namespace = "/" extends = "struts-default"> <Action name = "upload0*"> <interceptor-ref name = "fileupload"> <param name = "permitido" name = "MaximumSize"> 1024*1024 </amam> </ interceptor-ref> <interceptor-ref name = "DefaultStack"> </interceptor-ref> <param name = "name"> 1.jpg </amam> <resultado>/{1} .jsp </sult> </action> </apack> </struts> También necesitamos el mensaje de error después de que falla la carga del archivo de configuración, y necesitamos configurarlo en el archivo de recursos internacionales globales:
struts.messages.error.content.type.not.lowed = type de archivo no coincide con struts.messages.error.file.too.large = el archivo es demasiado grande
2. Descargue el archivo Struts2
Cuando aprendemos los protocolos Servlet y HTTP, ya podemos implementar descargas de archivos, es decir, escribir encabezado de disposición de contenido. Este es el principio de implementación de Struts2, pero proporciona una mejor encapsulación;
El tipo de resultado de transmisión de STRUTS2 se usa específicamente para implementar descargas de archivos;
(1) Configure el resultado de la secuencia Tipo en Struts.xml, y configure contenido de parámetros ContentType, ContentDisposition y BufferSize. Plantilla:
<Action name = "download"> <result type = "stream" name = "éxito"> <param name = "contentType"> </amam> <param name = "contentDiscoSition"> adjunta; filename = "" </param> <param name = "buffersize"> 4096 </param> </resultado> </action>
(2) crear una entrada pública GetInputStream () lanza una excepción en acción; Método, este método se utiliza para obtener el flujo de entrada del archivo descargado;
DownloadAction.java
paquete org.download.action; import java.io.inputstream; importar org.apache.struts2.servletactionContext; import com.opensymphony.xwork2.ActionSupport; Public Class DownloadAction extiende ActionUpport {public inputStream getInputStream () lanza la excepción {return ServLetActionContext.getServletContext (). GetResourceasstream ("/web-Inf/upload/1.jpg"); } public String Execute () lanza la excepción {return éxito; }} struts.xml
<Action name = "download"> <result type = "stream" name = "éxito"> <param name = "contentType"> image/jpeg </param> <param name = "contentDisposition"> adjunta; filename = "1.jpg" </amam> <param name = "buffersize"> 4096 </param> </sult> </acción>
Puedes completar la descarga.
Todo esto es para que presente la implementación de la carga y descarga de archivos STRUTS2 en Java. Gracias por tu lectura.