1. Unggah file struts2
Implementasi pengunggahan file dari Struts2 sangat sederhana dan dapat diselesaikan hanya dalam beberapa langkah sederhana;
Melihat:
(1) Tag Struts2 untuk unggahan file adalah: <s: nama file = "" label = "unggah"/>
(2) prasyarat untuk unggahan file adalah metode atribut form = "post" enctype = "multipart/form-data";
(3) Aplikasi Web harus menyertakan common-fileupload.jar dan common-io.jar, karena parser unggahan default dari Struts2 menggunakan jakarta;
(4) Ukuran file maksimum yang diizinkan dapat dikonfigurasi di struts.xml: <constant name = "struts.multipart.maxsize" value = "......"/>, default adalah 2m;
1. Upload file normal <BR /> Aturan Implementasi:
(1) Atur Kontrol Formulir di JSP <S: Nama file = "unggah" label = "unggah"/>
(2) Tentukan atribut dalam tindakan:
Unggah file pribadi; // Termasuk konten file
Private String unggahFileName; // nama file yang diunggah;
private string unggahContentType; // Jenis file unggahan MIME;
Atribut ini akan secara otomatis ditetapkan saat file diunggah;
(3) Lengkapi fungsi penulisan disk di execute ();
Contoh kode:
Unggah01action.java
paket org.upload.action; impor java.io.file; impor java.io.fileInputStream; impor java.io.fileoutputStream; impor org.apache.struts2.servletactionContext; impor com.opensymphony.xwork2.actionsupport; unggah kelas publik01Action memperluas ActionSupport {Private File Unggah; Private String unggahFileName; private string unggahContentType; nama string pribadi; public String execute () melempar Exception {string path = servletActionContext.getSerVletContext (). getRealPath ("/web-inf/unggah"); String filename = path+file.separator+name; FileInputStream di = FileInputStream baru (unggah); FileOutputStream out = FileOutputStream baru (nama file); byte [] b = byte baru [1024]; int len = 0; while ((len = in.read (b))> 0) {out.write (b, 0, len); } out.close (); Sukses kembali; } file publik getUpload () {return unggah; } public void setupload (unggah file) {this.upload = unggah; } public string getUploadFileName () {return unggahFileName; } public void setuploadFileName (String unggahfileName) {this.uploadFileName = unggahFileName; } public String getUploadContentType () {return unggahcontentType; } public void setuploadContentType (string unggahcontentType) {this.uploadContentType = unggahcontentType; } public string getName () {return name; } public void setName (name string) {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"> <teguts> <putruts = "constant =" construts. "constant =" construts. "constant =" struts. "construts." construts. "struts." name = "struts.custom.i18n.Resources" value = "message"> </constant> <package name = "default" namespace = "/" extends = "struts-default"> <action name = "unggah/} <param name =" name "> 1.jpg </param> <aRACES>/} </}.
1.jsp
<%@ page language = "java" import = "java.util.*" pageEncoding = "UTF-8"%> <%@ taglib prefix = "s" uri = "/struts-tags"%> <! public public 'public' ’tito//w3c // dtd html 4. Halaman Awal </iteme> </head> <dody> <s: formulir action = "unggah01" method = "post" enctype = "multipart/form-data"> <s: nama file = "unggah" label = "unggah"> </s: file> <s: kirim value = "unggah"> </subload "> </s: form
2. Gunakan pencegat untuk memfilter
Metode penerapan pemfilteran secara manual sangat sederhana, yaitu menggunakan verifikasi input untuk memfilter, yaitu, penyaringan dalam validasi ();
Metode pencegat yang ingin kita bicarakan di sini adalah cara yang baik. Itu hanya perlu dikonfigurasi dalam file konfigurasi. Ini memiliki fleksibilitas yang baik dan dapat membatasi jenis file dan ukuran file. Jika file yang diunggah tidak memenuhi persyaratan, itu akan mengembalikan tampilan logis input;
Langkah -langkah untuk mengonfigurasi pencegat:
(1) Interceptor untuk unggahan file adalah fileupload;
(2) parameter yang diberikan diperlukan untuk diizinkan membuat tipe dan maksimum;
(3) Setelah Interceptor Fileupload, Anda perlu menambahkan <Interceptor-Ref Name = "DefaultStack"/>
Contoh kode:
Karena memfilter melalui interseptor hanya memerlukan konfigurasi struts.xml, hanya konfigurasi struts.xml yang diberikan di sini.
<? 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"> <teguts> <putruts = "constant =" construts. "constant =" construts. "constant =" struts. "construts." construts. "struts." name = "struts.custom.i18n.Resources" value = "message"> </constant> <package name = "default" namespace = "/" extends = "struts-default"> <action name = "unggah*"> <pamref/gambar/gambar/gigu/gigu/parp Image/parp Image/Image/Image/Image, " name = "MaximumSize"> 1024*1024 </param> </sterceptor-ref> <Interceptor-Ref name = "DefaultStack"> </sterceptor-ref> <param name = "name"> 1.jpg </param> </struts>.
Kami juga membutuhkan pesan kesalahan setelah unggahan file konfigurasi gagal, dan kami perlu mengonfigurasinya dalam file sumber daya internasional global:
struts.messages.error.content.type.not.allowed = jenis file tidak cocok dengan struts.messages.error.file.too.large = file terlalu besar
2. Unduh File Struts2
Ketika kami mempelajari protokol Servlet dan HTTP, kami sudah dapat menerapkan unduhan file, yaitu, tulis header konten-disposisi. Ini adalah prinsip implementasi Struts2, tetapi memberikan enkapsulasi yang lebih baik;
Jenis Hasil Stream dari Struts2 secara khusus digunakan untuk mengimplementasikan unduhan file;
(1) Mengkonfigurasi jenis hasil stream di struts.xml, dan konfigurasikan Parameter ContentType, ContentDisposition, dan BufferSize. Templat:
<action name = "download"> <result type = "stream" name = "success"> <param name = "contentType"> </param> <param name = "contentDisposition"> lampiran; fileName = "" </param> <param name = "bufferSize"> 4096 </param> </result> </action>
(2) membuat inputStream publik getInputStream () melempar pengecualian dalam tindakan; Metode, metode ini digunakan untuk mendapatkan aliran input dari file yang diunduh;
Downloadaction.java
paket org.download.action; impor java.io.inputstream; impor org.apache.struts2.servletactionContext; impor com.opensymphony.xwork2.actionsupport; Public Class DownloadAction memperluas ActionSupport {public InputStream getInputStream () melempar Exception {return servletActionContext.GetSerVletContext (). GetResourCeAsstream ("/Web-Inf/unggah/1.jpg"); } public String execute () melempar Exception {return Success; }} struts.xml
<action name = "download"> <result type = "stream" name = "success"> <param name = "contentType"> gambar/jpeg </param> <param name = "contentDisposition"> lampiran; fileName = "1.jpg" </param> <param name = "bufferSize"> 4096 </param> </hasil> </param>
Anda dapat menyelesaikan unduhan.
Ini semua bagi Anda untuk memperkenalkan implementasi mengunggah dan mengunduh file Struts2 di Java. Terima kasih atas bacaan Anda.