1. อัปโหลดไฟล์ struts2
การอัพโหลดไฟล์การใช้งานของ Struts2 นั้นง่ายมากและสามารถทำได้ในขั้นตอนง่ายๆเพียงไม่กี่ขั้นตอน
สังเกต:
(1) แท็ก struts2 สำหรับการอัปโหลดไฟล์คือ: <s: ชื่อไฟล์ = "" label = "อัปโหลด"/>
(2) ข้อกำหนดเบื้องต้นสำหรับการอัปโหลดไฟล์คือเมธอดแอ็ตทริบิวต์ = "โพสต์" Enctype = "Multipart/Form-Data";
(3) เว็บแอปพลิเคชันจะต้องมี Common-fileupload.jar และ Common-io.jar เนื่องจากตัวแยกวิเคราะห์การอัปโหลดเริ่มต้นของ Struts2 ใช้จาการ์ตา
(4) ขนาดไฟล์สูงสุดที่อนุญาตสามารถกำหนดค่าใน struts.xml: <constant name = "struts.multipart.maxsize" value = "...... "/> ค่าเริ่มต้นคือ 2m;
1. การอัปโหลดไฟล์ปกติ <br /> กฎการใช้งาน:
(1) ตั้งค่าการควบคุมแบบฟอร์มใน jsp <s: ชื่อไฟล์ = "อัปโหลด" label = "อัปโหลด"/>>>>>>
(2) กำหนดคุณลักษณะในการดำเนินการ:
อัปโหลดไฟล์ส่วนตัว // รวมเนื้อหาไฟล์
uploadfilename สตริงส่วนตัว; // ชื่อของไฟล์ที่อัปโหลด;
สตริงส่วนตัว uploadContentType; // ประเภทการอัปโหลดประเภท MIME;
แอตทริบิวต์เหล่านี้จะถูกกำหนดโดยอัตโนมัติเมื่ออัปโหลดไฟล์
(3) ทำฟังก์ชั่นการเขียนดิสก์ในการดำเนินการ ();
ตัวอย่างรหัส:
upload01action.java
แพ็คเกจ org.upload.action; นำเข้า Java.io.File; นำเข้า Java.io.FileInputStream; นำเข้า Java.io.FileOutputStream; นำเข้า org.apache.struts2.servletactionContext; นำเข้า com.opensymphony.xwork2.actionsupport; คลาสสาธารณะ upload01Action ขยายการดำเนินการ {อัปโหลดไฟล์ส่วนตัว; uploadfilename สตริงส่วนตัว; สตริงส่วนตัว uploadContentType; ชื่อสตริงส่วนตัว; Public String execute () พ่นข้อยกเว้น {String Path = ServletActionContext.getServletContext (). getRealPath ("/web-inf/upload"); string filename = path+file.Sparator+name; FileInputStream ใน = ใหม่ FileInputStream (อัปโหลด); fileOutputStream out = new fileOutputStream (ชื่อไฟล์); ไบต์ [] b = ไบต์ใหม่ [1024]; int len = 0; ในขณะที่ ((len = in.read (b))> 0) {out.write (b, 0, len); } out.close (); กลับมาประสบความสำเร็จ } ไฟล์สาธารณะ getUpload () {return upload; } โมฆะสาธารณะ setupload (อัปโหลดไฟล์) {this.upload = อัปโหลด; } สตริงสาธารณะ getUploadFileName () {return uploadfilename; } โมฆะสาธารณะ setUploadFileName (สตริง updoadFileName) {this.uploadFileName = uploadFileName; } สตริงสาธารณะ getUploadContentType () {return uploadContentType; } โมฆะสาธารณะ setuploadContentType (สตริง uploadContentType) {this.uploadContentType = uploadContentType; } สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; - struts.xml
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <! doctype struts สาธารณะ "-// apache ซอฟต์แวร์ Foundation // dtd struts การกำหนดค่า 2.0 // en" "http://struts.apache.org/dtds/struts-2.0.dtd" name = "struts.custom.i18n.resources" value = "message"> </constant> <package name = "default" namespace = "/" Extend = "struts-default"> <action name = "upload0*"> <param = "ชื่อ"> 1.jpg
1.JSP
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <%@ taglib prefix = "s" uri = "/struts-tags"%> <! หน้าเริ่มต้น '1.JSP' </title> </head> <body> <s: form action = "upload01" method = "post" enctype = "multipart/form-data"> <s: file name = "upload" label = "upload"> </s: ไฟล์>
2. ใช้ตัวดักจับเพื่อกรอง
วิธีการใช้การกรองด้วยตนเองนั้นง่ายมากซึ่งคือการใช้การตรวจสอบอินพุตเพื่อกรองนั่นคือการกรองในการตรวจสอบ ();
วิธีการสกัดกั้นที่เราต้องการพูดถึงที่นี่เป็นวิธีที่ดี จะต้องมีการกำหนดค่าเฉพาะในไฟล์การกำหนดค่า มีความยืดหยุ่นที่ดีและสามารถ จำกัด ประเภทไฟล์และขนาดไฟล์ หากไฟล์ที่อัปโหลดไม่เป็นไปตามข้อกำหนดจะส่งคืนมุมมองเชิงตรรกะอินพุต
ขั้นตอนในการกำหนดค่าตัวดัก:
(1) interceptor สำหรับการอัปโหลดไฟล์คือ fileupload;
(2) พารามิเตอร์ที่กำหนดจะต้องได้รับอนุญาตให้ใช้และสูงสุด
(3) หลังจาก fileupload interceptor คุณต้องเพิ่ม <interceptor-ref name = "defaultStack"/>
ตัวอย่างรหัส:
เนื่องจากการกรองผ่านการดักจับเท่านั้นต้องมีการกำหนดค่า struts.xml เฉพาะการกำหนดค่าของ struts.xml เท่านั้นที่ได้รับที่นี่
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <! doctype struts สาธารณะ "-// apache ซอฟต์แวร์ Foundation // dtd struts การกำหนดค่า 2.0 // en" "http://struts.apache.org/dtds/struts-2.0.dtd" name = "struts.custom.i18n.resources" value = "message"> </constant> <package name = "default" namespace = "/" Extends = "struts-default"> <action name = "upload0*"> <interceptor-ref name = "fileupload" name = "maximumsize"> 1024*1024 </param> </interceptor-ref> <interceptor-ref name = "defaultStack"> </interceptor-ref> <param name = "name"> 1.jpg </param>
นอกจากนี้เรายังต้องการข้อความแสดงข้อผิดพลาดหลังจากการอัปโหลดไฟล์การกำหนดค่าล้มเหลวและเราจำเป็นต้องกำหนดค่าไว้ในไฟล์ทรัพยากรสากลทั่วโลก:
struts.messages.error.content.type.not.allowed = ประเภทไฟล์ไม่ตรงกับ struts.messages.error.file.too.large = ไฟล์มีขนาดใหญ่เกินไป
2. ดาวน์โหลดไฟล์ struts2
เมื่อเราเรียนรู้โปรโตคอล Servlet และ HTTP เราสามารถใช้การดาวน์โหลดไฟล์ได้แล้วนั่นคือส่วนหัวของการเขียนเนื้อหา นี่คือหลักการดำเนินการของ struts2 แต่ให้การห่อหุ้มที่ดีขึ้น
ประเภทผลลัพธ์ของสตรีมของ struts2 ถูกใช้โดยเฉพาะเพื่อใช้การดาวน์โหลดไฟล์
(1) กำหนดค่าประเภทผลลัพธ์สตรีมใน struts.xml และกำหนดค่า contentType, contentDisposition และพารามิเตอร์บัฟเฟอร์ เทมเพลต:
<action name = "download"> <result type = "stream" name = "success"> <param name = "contentType"> </param> <param name = "contentDisposition"> ไฟล์แนบ;
(2) สร้าง Public InputStream getInputStream () โยนข้อยกเว้นในการดำเนินการ; วิธีการนี้ใช้เพื่อรับกระแสอินพุตของไฟล์ที่ดาวน์โหลด
downloadAction.java
แพ็คเกจ org.download.action; นำเข้า Java.io.InputStream; นำเข้า org.apache.struts2.servletactionContext; นำเข้า com.opensymphony.xwork2.actionsupport; Public Class DoadAction ขยาย ActionSUPPORT {Public InputStream getInputStream () พ่นข้อยกเว้น {return servletActionContext.getServletContext (). getResourceasstream ("/web-inf/upload/1.jpg"); } String สาธารณะ execute () โยนข้อยกเว้น {return success; - struts.xml
<action name = "ดาวน์โหลด"> <result type = "stream" name = "success"> <param name = "contentType"> image/jpeg </param> <param name = "contentDisposition"> ไฟล์แนบ;
คุณสามารถดาวน์โหลดได้
นี่คือทั้งหมดที่คุณจะแนะนำการใช้งานการอัปโหลดและดาวน์โหลดไฟล์ Struts2 ใน Java ขอบคุณสำหรับการอ่าน