1. Télécharger le fichier Struts2
L'implémentation de téléchargement de fichiers de Struts2 est très simple et peut être terminée en quelques étapes simples;
Avis:
(1) La balise Struts2 pour le téléchargement de fichiers est: <s: nom de fichier = "" label = "upload" />
(2) La condition préalable pour le téléchargement de fichiers est la méthode d'attribut de formulaire = "Post" ENCTYPE = "Multipart / Form-data";
(3) l'application Web doit inclure Common-fileupload.jar et Common-io.jar, car l'analyseur de téléchargement par défaut de Struts2 utilise Jakarta;
(4) La taille maximale du fichier autorisée peut être configurée dans struts.xml: <constante name = "strut.multupart.maxsize" value = "......" />, la valeur par défaut est 2m;
1. Règles d'implémentation de téléchargement de fichiers normal <br />:
(1) Définissez le contrôle de formulaire dans jsp <s: fichier name = "upload" label = "upload" />
(2) Définir les attributs en action:
téléchargement de fichiers privé; // inclut le contenu de fichier
Private String uploadFileName; // le nom du fichier téléchargé;
String privé uploadContentType; // le type MIME du fichier de téléchargement;
Ces attributs seront automatiquement attribués lorsque le fichier est téléchargé;
(3) Complétez la fonction d'écriture de disque dans EXECUTE ();
Exemple de code:
Upload01action.java
package org.upload.action; Importer java.io.file; import java.io.fileInputStream; Importer java.io.fileOutputStream; import org.apache.struts2.ServletActionContext; Importer com.opensymphony.xwork2.actionsupport; La classe publique upload01action étend ActionSUpport {Private File Upload; Private String uploadFileName; String privé uploadContentType; nom de chaîne privé; public String execute () lève exception {String path = servletActionContext.getServletContext (). getRealPath ("/ web-inf / upload"); String filename = path + file.separator + name; FileInputStream dans = new FileInputStream (upload); FileoutputStream out = new FileOutputStream (nom de fichier); octet [] b = nouveau octet [1024]; int len = 0; while ((len = in.read (b))> 0) {out.write (b, 0, len); } out.close (); retourner le succès; } public File getUpload () {return upload; } public void setupload (fichier 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 () {Nom de retour; } public void setName (string name) {this.name = name; }} struts.xml
<? xml version = "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.dtd"> <strutts> <constante nom = "Struts.Devmode" name = "strut.custom.i18n.resources" value = "message"> </ constante> <package name = "default" namespace = "/" extends = "struts-default"> <action name = "upload0 *"> <param name = "name"> 1.jpg </ param> <sult> / {1} .jsp </sult> </ Action> 1.jsp
<% @ Page Language = "Java" Import = "Java.util. *" Pageencoding = "UTF-8"%> <% @ taglib prefix = "s" uri = "/ struts-tags"%> <! doctype html public "- // w3c // dtd html 4.01 transitional // en"> <html> '1.jsp' Page de départ </ title> </ head> <body> <s: form action = "upload01" metheth = "poster" encType = "multipart / form-data"> <s: file name = "upload" label = "upload"> </ s: file> <s: soumider value = "upload"> </ s: soumider> </ s: form> </od body> </ html>
2. Utilisez des intercepteurs pour filtrer
La méthode de mise en œuvre manuelle du filtrage est très simple, qui consiste à utiliser la vérification des entrées pour filtrer, c'est-à-dire le filtrage dans validate ();
La méthode interceptrice dont nous voulons parler ici est un bon moyen. Il n'a qu'à être configuré dans le fichier de configuration. Il a une bonne flexibilité et peut limiter le type de fichier et la taille du fichier. Si le fichier téléchargé ne répond pas aux exigences, il renverra la vue logique d'entrée;
Étapes pour configurer l'intercepteur:
(1) L'intercepteur pour le téléchargement de fichiers est Fileupload;
(2) les paramètres donnés doivent être autorisés et maximum;
(3) Après l'interceptor de fichiers, vous devez ajouter <interceptor-ref name = "defaultstack" />
Exemple de code:
Étant donné que le filtrage via un intercepteur ne nécessite que la configuration de struts.xml, seule la configuration de struts.xml est donnée ici.
<? xml version = "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.dtd"> <strutts> <constante nom = "Struts.Devmode" name = "strut.custom.i18n.resources" value = "message"> </ constante> <package name = "default" namespace = "/" allsends = "struts-default"> <action name = "upload0 *"> <interceptor-ref name = "fileupload"> <param name = "allowtypes"> image / jpeg, image / gif </ param> name = "maximumSize"> 1024 * 1024 </ param> </ interceptor-ref> <interceptor-ref name = "DefaultStack"> </ interceptor-ref> <param name = "name"> 1.jpg </ param> </ restuts>
Nous avons également besoin du message d'erreur après l'échec du téléchargement de fichier de configuration, et nous devons le configurer dans le fichier de ressources internationales mondiales:
struts.sessages.error.content.type.not.allowed = le type de fichier ne correspond pas
2. Télécharger le fichier Struts2
Lorsque nous apprenons les protocoles Servlet et HTTP, nous pouvons déjà implémenter des téléchargements de fichiers, c'est-à-dire l'écriture de l'en-tête de contenu-disposition. Il s'agit du principe de mise en œuvre de Struts2, mais il offre une meilleure encapsulation;
Le type de résultat du flux de Struts2 est spécifiquement utilisé pour implémenter les téléchargements de fichiers;
(1) Configurez le type de résultat du flux dans struts.xml et configurez les paramètres de contenu, contenudisposition et tamponiser. Modèle:
<action name = "download"> <result type = "stream" name = "Success"> <param name = "contentType"> </ param> <param name = "contentDisposition"> Pièce;
(2) Créer le public InputStream getInputStream () lève une exception en action; Méthode, cette méthode est utilisée pour obtenir le flux d'entrée du fichier téléchargé;
Téléchargement.java
package org.download.action; import java.io.inputStream; import org.apache.struts2.ServletActionContext; Importer com.opensymphony.xwork2.actionsupport; La classe publique DownloadAction étend ActionSupport {public EntingStream GetInputStream () lève une exception {return servletActionContext.getServletContext (). getResourCeasStream ("/ web-inf / upload / 1.jpg"); } public String execute () lève l'exception {return Success; }} struts.xml
<action name = "download"> <result type = "stream" name = "Success"> <param name = "ContentType"> image / jpeg </ param> <param name = "contentDisposition"> attachement; filename = "1.jpg" </ param> <param name = "Buffersize"> 4096 </ param> </sult> </ action>
Vous pouvez terminer le téléchargement.
Tout cela est pour vous de présenter l'implémentation du téléchargement et du téléchargement des fichiers Struts2 dans Java. Merci pour votre lecture.