大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Struts2文件上傳示例

Struts2文件上傳示例

更新時(shí)間:2022-02-10 08:25:45 來源:動力節(jié)點(diǎn) 瀏覽910次

Struts 2 文件上傳步驟

開發(fā)人員可以按照以下五個(gè)步驟創(chuàng)建 Struts 2 文件上傳應(yīng)用程序:

將所需的 commons-fileupload 和 commons-io 依賴項(xiàng)添加到Java Web 項(xiàng)目;

創(chuàng)建一個(gè)使用 Apache Struts 表單和文件自定義標(biāo)簽的 JSP;

使用映射到文件名的設(shè)置器編寫一個(gè) Struts 動作類,如表單的指定 s:file 標(biāo)記;

在Struts動作類的execute方法中,使用標(biāo)準(zhǔn)Java IO包保存上傳的文件;和

創(chuàng)建一個(gè)成功的 JSP,通知用戶文件已成功上載。

包含創(chuàng)建HTML表單元素的特殊 Struts 標(biāo)記的 JSP是 Apache 框架文件上傳功能的關(guān)鍵。一個(gè)典型的 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>

從一個(gè) Struts 文件上傳表單到下一個(gè),post 類型的方法和 mutlipart/form-data 的 enctype 將保持不變。action 屬性必須映射到處理服務(wù)器上的請求的 Struts 操作類的映射名稱,并且文件名必須映射到該操作類中聲明的屬性。

屬性正確映射后,下一步就是編寫相應(yīng)的動作類。

Struts 2 文件上傳動作類

上面 Struts上傳表單中的文件名是uploadFile 。因此,支持這種形式的動作類必須有一個(gè)名為 setUploadedFile 的 setter 方法,它接受一個(gè) java.io.File 對象作為參數(shù),并且它還必須有一個(gè)名為 setUploadedFileFileName 的 setter 方法,它接受一個(gè) String作為參數(shù)。Struts 框架會將上傳的文件及其名稱傳遞給這些方法,但開發(fā)人員應(yīng)注意在動作中聲明的屬性不必精確映射到設(shè)置器名稱這一事實(shí)。

包 com.mcnz.struts;
導(dǎo)入java.io.*;
導(dǎo)入 java.util.*;
導(dǎo)入 java.util.stream.*;
導(dǎo)入 org.apache.commons.io.*;
導(dǎo)入 org.apache.struts2.convention.annotation.*;
導(dǎo)入 com.opensymphony.xwork2.ActionSupport;
@Action ("/fileupload") 
@Result (name = "success", location = "/results.jsp")
公共類 FileUploadAction 擴(kuò)展 ActionSupport {
  私有文件上傳文件;
  私有字符串上傳文件名;
  私有字符串 localDirectory = "C:\\temp";
  公共無效setUploadedFile(文件文件){
    上傳文件 = 文件;
  }
  公共無效 setUploadedFileFileName(字符串名稱){
    上傳文件名 = 名稱;
  }
  公共字符串執(zhí)行()拋出異常{
    文件本地文件=新文件(本地目錄,上傳文件名);
    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.設(shè)置()); 
  } 
}

在上述動作類中,execute 方法獲取上傳的文件并將其保存到 C:\temp 文件夾。

不需要名為 getFileList() 的輔助方法,但我添加了它以允許結(jié)果頁面列出當(dāng)前駐留在上傳文件夾中的所有文件。

Struts 2 文件上傳確認(rèn)頁面

操作成功調(diào)用的目標(biāo)是 results.jsp。開發(fā)人員不需要使這個(gè)頁面過于復(fù)雜。在調(diào)用此頁面進(jìn)行渲染時(shí),文件將已成功上傳。這是一個(gè)滿足當(dāng)前用例的簡單 results.jsp:

<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<html>
<正文>
<p> <s:property value="uploadedFileName"/> 上傳成功。</p>
</正文>
</html>

文件上傳Maven依賴

除了標(biāo)準(zhǔn)的 Struts 庫之外,文件上傳實(shí)用程序還需要 commons-io 和 commons-fileupload 工具。開發(fā)人員需要將以下Maven依賴項(xiàng)添加到您的應(yīng)用程序中,以使 Struts 2 文件上傳工具正常工作:

<依賴>
  <groupId>commons-fileupload</groupId>
  <artifactId>commons-fileupload</artifactId>
  <版本>1.2.1</版本>
</依賴>
<依賴>
  <groupId>commons-io</groupId>
  <artifactId>commons-io</artifactId>
  <版本>1.3.2</版本>
</依賴>

開發(fā)人員將這些依賴項(xiàng)添加到項(xiàng)目后,他們可以運(yùn)行 Struts 2 文件上傳應(yīng)用程序,并觀察每次用戶單擊文件上傳按鈕時(shí)臨時(shí)目錄填充資源的情況。如果大家想了解更多相關(guān)知識,不妨來關(guān)注一下動力節(jié)點(diǎn)的Struts2視頻教程,里面的課程內(nèi)容由淺到深,通俗易懂,即使沒有基礎(chǔ)也可以聽懂,希望對大家的學(xué)習(xí)能夠有所幫助。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 国内揄拍国内精品久久 | 国产精品香蕉在线观看不卡 | 久久精品国产亚洲a不卡 | 91精品国产乱码在线观看 | 亚洲成人综合网站 | 四虎精品视频在线永久免费观看 | 中国免费毛片 | 国产伦精品一区二区三区高清 | 快播视频在线 | 亚洲美女视频在线观看 | 蜜桃久久 | 免费观看一级欧美在线视频 | 欧美三级成人观看 | 国产亚洲精品91 | 欧美三级做爰在线 | 暴力欧美娇小 videos | 66av99精品福利视频在线 | 午夜精品久久久久久久99热浪潮 | 爱爱99 | 在线欧美一区 | 香蕉网站在线观看影院 | 国产在线精品一区二区三区不卡 | 曰批免费视频播放在线看片一 | 国产日韩一区二区 | 久久国产一区二区三区 | 七色永久性tv网站免费看 | 中文字幕在线激情日韩一区 | 91久久精一区二区三区大全 | 成人免费黄色 | 久久一日本道色综合久久 | 久久婷婷网| 亚洲欧美日韩一区二区 | 国产高清一区二区三区四区 | 国产深夜福利视频观看 | 日本不卡免费高清一级视频 | 亚洲日本aⅴ片在线观看香蕉 | 色噜噜狠狠成人中文小说 | 不卡中文字幕 | 欧美韩国日本在线 | 国产成人亚洲精品91专区手机 | 久久久久国产成人精品 |