更新時間:2022-02-10 08:25:45 來源:動力節點 瀏覽964次
開發人員可以按照以下五個步驟創建 Struts 2 文件上傳應用程序:
將所需的 commons-fileupload 和 commons-io 依賴項添加到Java Web 項目;
創建一個使用 Apache Struts 表單和文件自定義標簽的 JSP;
使用映射到文件名的設置器編寫一個 Struts 動作類,如表單的指定 s:file 標記;
在Struts動作類的execute方法中,使用標準Java IO包保存上傳的文件;和
創建一個成功的 JSP,通知用戶文件已成功上載。
包含創建HTML表單元素的特殊 Struts 標記的 JSP是 Apache 框架文件上傳功能的關鍵。一個典型的 Struts 上傳表單如下所示:
<%@ taglib prefix ="s" uri ="/struts-tags"%>
<%@ page contentType ="text/html; charset =UTF-8"%>
<html>
<正文>
<s:form
action =" fileupload "
method ="post"
enctype ="multipart/form-data">
<s:file name=" uploadFile " label ="File" />
<s:submit />
</s:form>
</body>
</html>
從一個 Struts 文件上傳表單到下一個,post 類型的方法和 mutlipart/form-data 的 enctype 將保持不變。action 屬性必須映射到處理服務器上的請求的 Struts 操作類的映射名稱,并且文件名必須映射到該操作類中聲明的屬性。
屬性正確映射后,下一步就是編寫相應的動作類。
上面 Struts上傳表單中的文件名是uploadFile 。因此,支持這種形式的動作類必須有一個名為 setUploadedFile 的 setter 方法,它接受一個 java.io.File 對象作為參數,并且它還必須有一個名為 setUploadedFileFileName 的 setter 方法,它接受一個 String作為參數。Struts 框架會將上傳的文件及其名稱傳遞給這些方法,但開發人員應注意在動作中聲明的屬性不必精確映射到設置器名稱這一事實。
包 com.mcnz.struts;
導入java.io.*;
導入 java.util.*;
導入 java.util.stream.*;
導入 org.apache.commons.io.*;
導入 org.apache.struts2.convention.annotation.*;
導入 com.opensymphony.xwork2.ActionSupport;
@Action ("/fileupload")
@Result (name = "success", location = "/results.jsp")
公共類 FileUploadAction 擴展 ActionSupport {
私有文件上傳文件;
私有字符串上傳文件名;
私有字符串 localDirectory = "C:\\temp";
公共無效setUploadedFile(文件文件){
上傳文件 = 文件;
}
公共無效 setUploadedFileFileName(字符串名稱){
上傳文件名 = 名稱;
}
公共字符串執行()拋出異常{
文件本地文件=新文件(本地目錄,上傳文件名);
FileUtils.copyFile(uploadedFile, localFile);
返回成功;
}
/* 用于獲取 JSP 顯示的文件列表。*/
public Set<String> getFileList() {
return Stream.of(new File(localDirectory).listFiles())
.filter(file -> !file.isDirectory())
.map(File::getName)
.collect(Collectors.設置());
}
}
在上述動作類中,execute 方法獲取上傳的文件并將其保存到 C:\temp 文件夾。
不需要名為 getFileList() 的輔助方法,但我添加了它以允許結果頁面列出當前駐留在上傳文件夾中的所有文件。
操作成功調用的目標是 results.jsp。開發人員不需要使這個頁面過于復雜。在調用此頁面進行渲染時,文件將已成功上傳。這是一個滿足當前用例的簡單 results.jsp:
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<html>
<正文>
<p> <s:property value="uploadedFileName"/> 上傳成功。</p>
</正文>
</html>
除了標準的 Struts 庫之外,文件上傳實用程序還需要 commons-io 和 commons-fileupload 工具。開發人員需要將以下Maven依賴項添加到您的應用程序中,以使 Struts 2 文件上傳工具正常工作:
<依賴>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<版本>1.2.1</版本>
</依賴>
<依賴>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<版本>1.3.2</版本>
</依賴>
開發人員將這些依賴項添加到項目后,他們可以運行 Struts 2 文件上傳應用程序,并觀察每次用戶單擊文件上傳按鈕時臨時目錄填充資源的情況。如果大家想了解更多相關知識,不妨來關注一下動力節點的Struts2視頻教程,里面的課程內容由淺到深,通俗易懂,即使沒有基礎也可以聽懂,希望對大家的學習能夠有所幫助。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習