国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Struts2學(xué)習(xí)筆記(十一)——文件上傳

2019-11-15 00:55:57
字體:
供稿:網(wǎng)友
Struts2學(xué)習(xí)筆記(十一)——文件上傳

1、單文件上傳

單文件上傳步驟:

1)創(chuàng)建上傳jsp頁面

文件上傳的表單提交方式必須是POST方式,編碼類型:enctype="multapplication/x-www-form-urlencoded,比如:

1 <form action="${pageContext.servletContext.contextPath}/uploadAction.action" enctype="multipart/form-data" method="post"> 

2)創(chuàng)建處理文件上傳Action類

  • 在Action類中聲明相關(guān)屬性:
    • 要聲明與頁面中表單name屬性同名的屬性,同名的屬性的類型是File類型,該屬性用來保存臨時(shí)文件;
    • 要聲明[同名的屬性]ContentType屬性,類型是String類型,該屬性表示上傳文件的類型;
    • 要聲明[同名的屬性]FileName屬性,類型是String類型,該文件表示要上傳的文件;
    • 給所有屬性提供get和set方法。
  • 在Action類中提供處理上傳的方法:
    • 獲取要保存文件的位置;
    • 在目標(biāo)文件夾內(nèi),創(chuàng)建一個(gè)與上傳文件同名的文件;
    • 通過FileUtils工具類提供copyFile()方法,將臨時(shí)文件內(nèi)容拷貝到目標(biāo)文件夾下的那個(gè)同名的文件;
    • 調(diào)用保存臨時(shí)文件的屬性的delete()方法刪除臨時(shí)文件(也就是File類型屬性的delete方法)。

3)配置struts.xml文件

  • 設(shè)置上傳文件大小,Struts2默認(rèn)上傳文件總大小為2MB,超過文件總大小,跳轉(zhuǎn)input視圖,通過<s:actionError /> 回顯錯(cuò)誤信息,在struts.xml 設(shè)置上傳總大小:
    1 <constant name="struts.multipart.maxSize" value="20000000"></constant>

    設(shè)置上傳文件總大小,對(duì)所有上傳form有效,只想對(duì)當(dāng)前form進(jìn)行設(shè)置,可以設(shè)置fileUpload攔截器屬性

  • 在fileUpload攔截器中有三個(gè)屬性:
    • PRotected Long maximumSize:可以設(shè)置每一個(gè)上傳文件的大小
    • protected Set<String> allowedTypesSet:設(shè)置允許上傳文件的類型
    • protected Set<String> allowedExtensionsSet:設(shè)置允許的上傳文件的后綴名

可以在struts.xml文件中配置這些屬性:

1 <interceptor-ref name="defaultStack">2     <!--配置上傳文件的大小,這里配置的是上傳文件的單個(gè)大小-->3     <param name="fileUpload.maximumSize">20971520</param>   4     <!-- 配置上傳文件允許的類型-->5     <param name="fileUpload.allowedTypes">text/plain,application/msWord</param>6     <!-- 配置上傳文件的擴(kuò)展名-->7     <param name="fileUpload.allowedExtensions">.txt,.doc</param>8 </interceptor-ref>

允許的類型(allowedTypes)和允許的擴(kuò)展名(allowedExtensions)必須保持一致。

單文件上傳示例:

1)創(chuàng)建jsp頁面

1 <body>2  <form action="${pageContext.servletContext.contextPath}/uploadAction.action" enctype="multipart/form-data" method="post">3     上傳文件:<input type="file" name="upload">4     <input type="submit" value="上傳">5  </form>6 </body>

2)創(chuàng)建Action類

 1 public class UploadAction extends ActionSupport { 2     private File upload; 3     private String uploadContentType; 4     private String uploadFileName; 5      6     public File getUpload() { 7         return upload; 8     } 9 10     public void setUpload(File upload) {11         this.upload = upload;12     }13 14     public String getUploadContentType() {15         return uploadContentType;16     }17 18     public void setUploadContentType(String uploadContentType) {19         this.uploadContentType = uploadContentType;20     }21 22     public String getUploadFileName() {23         return uploadFileName;24     }25 26     public void setUploadFileName(String uploadFileName) {27         this.uploadFileName = uploadFileName;28     }29 30     @Override31     public String execute() throws Exception {32         ServletContext sc = ServletActionContext.getServletContext();33         //獲取要保存文件的位置34         String path = sc.getRealPath("/upload");35         //創(chuàng)建一個(gè)與上傳文件同名的文件36         File file = new File(path, uploadFileName);37         //將臨時(shí)文件內(nèi)容拷貝到目標(biāo)文件夾下的那個(gè)同名的文件38         FileUtils.copyFile(upload, file);39         //刪除臨時(shí)文件40         upload.delete();41         return SUCCESS;42     }43 }

3)配置struts.xml文件

 1 <struts> 2     <constant name="struts.devMode" value="true" /> 3     <constant name="struts.multipart.maxSize" value="200000000"/>  4     <package name="default" namespace="/" extends="struts-default"> 5         <action name="uploadAction" class="com.sunny.action.UploadAction"> 6             <result>/success.jsp</result> 7             <result name="input">/error.jsp</result> 8             <interceptor-ref name="defaultStack"> 9                 <param name="fileUpload.maximumSize">20971520</param>10                 <param name="fileUpload.allowedTypes">text/plain,application/msword</param>11                 <param name="fileUpload.allowedExtensions">.txt,.doc</param>12             </interceptor-ref>13         </action>14     </package>15 </struts>

4)上傳文件界面

5)上傳成功后會(huì)跳轉(zhuǎn)到success.jsp頁面

6)項(xiàng)目下的upload文件夾下會(huì)有上傳的文件

上傳問題信息國際化

Struts2上傳問題信息默認(rèn)的文件為在struts-message.properties下:

1 struts.messages.error.uploading=Error uploading: {0}2 struts.messages.error.file.too.large=File too large: {0} "{1}" "{2}" {3}3 struts.messages.error.content.type.not.allowed=Content-Type not allowed: {0} "{1}" "{2}" {3}4 struts.messages.error.file.extension.not.allowed=File extension not allowed: {0} "{1}" "{2}" {3}

要想實(shí)現(xiàn)中文顯示,需要在Action類相同文件下創(chuàng)建ActionClassName.properties文件,其中ActionClassName為上傳Action類的類名,文件內(nèi)容修改為:

1 struts.messages.error.uploading=上傳錯(cuò)誤: {0}2 struts.messages.error.file.too.large=上傳文件太大: {0} "{1}" "{2}" {3}3 struts.messages.error.content.type.not.allowed=上傳文件的類型不允許: {0} "{1}" "{2}" {3}4 struts.messages.error.file.extension.not.allowed=上傳文件的后綴名不允許: {0} "{1}" "{2}" {3}

等號(hào)前面的內(nèi)容固定,后面的內(nèi)容可以自己寫。

2、多文件上傳

多文件上傳的所有流程與單文件上傳一致,但是需要注意的是:

  • 在頁面中,雖然是多文件上傳,但是頁面中表單的name屬性的值必須保持一致;
  • 在Action類中聲明的相關(guān)屬性,類型改成數(shù)組或者集合;
  • 在業(yè)務(wù)方法中,相關(guān)處理流程改成單文件上傳的循環(huán)。

單文件上傳示例:

1)創(chuàng)建jsp頁面

1 <body>2  <form action="${pageContext.servletContext.contextPath}/uploadAction.action" enctype="multipart/form-data" method="post">3     上傳文件:<input type="file" name="upload"><br>4     上傳文件:<input type="file" name="upload"><br>5     上傳文件:<input type="file" name="upload"><br>6     上傳文件:<input type="file" name="upload"><br>7     <input type="submit" value="上傳">8  </form>9 </body>

2)創(chuàng)建Action類

 1 public class UploadAction extends ActionSupport { 2     private File[] upload; 3     private String[] uploadContentType; 4     private String[] uploadFileName; 5      6     public File[] getUpload() { 7         return upload; 8     } 9 10     public void setUpload(File[] upload) {11         this.upload = upload;12     }13 14     public String[] getUploadContentType() {15         return uploadContentType;16     }17 18     public void setUploadContentType(String[] uploadContentType) {19         this.uploadContentType = uploadContentType;20     }21 22     public String[] getUploadFileName() {23         return uploadFileName;24     }25 26     public void setUploadFileName(String[] uploadFileName) {27         this.uploadFileName = uploadFileName;28     }29 30     @Override31     public String execute() throws Exception {32         ServletContext sc = ServletActionContext.getServletContext();33         //獲取要保存文件的位置34         String path = sc.getRealPath("/upload");35         //創(chuàng)建一個(gè)與上傳文件同名的文件36         for (int i = 0; i < upload.length; i++) {37             File file = new File(path, uploadFileName[i]);38             //將臨時(shí)文件內(nèi)容拷貝到目標(biāo)文件夾下的那個(gè)同名的文件39             FileUtils.copyFile(upload[i], file);40             //刪除臨時(shí)文件41             upload[i].delete();42         }43         return SUCCESS;44     }45 }

3)配置struts.xml文件,和單文件上傳的配置一樣

 1 <struts> 2     <constant name="struts.devMode" value="true" /> 3     <constant name="struts.multipart.maxSize" value="200000000"/>  4     <package name="default" namespace="/" extends="struts-default"> 5         <action name="uploadAction" class="com.sunny.action.UploadAction"> 6             <result>/success.jsp</result> 7             <result name="input">/error.jsp</result> 8             <interceptor-ref name="defaultStack"> 9                 <param name="fileUpload.maximumSize">20971520</param>10                 <param name="fileUpload.allowedTypes">text/plain,application/msword</param>11                 <param name="fileUpload.allowedExtensions">.txt,.doc</param>12             </interceptor-ref>13         </action>14     </package>15 </struts>

4)上傳文件界面

5)上傳成功后會(huì)跳轉(zhuǎn)到success.jsp頁面

6)項(xiàng)目下的upload文件夾下會(huì)有上傳的文件

3、文件下載


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 嘉定区| 格尔木市| 平山县| 开化县| 曲松县| 延津县| 双流县| 通辽市| 青铜峡市| 莱州市| 子洲县| 确山县| 北辰区| 伊川县| 剑阁县| 辉县市| 墨竹工卡县| 无为县| 阿城市| 贺州市| 阳高县| 茂名市| 克拉玛依市| 泰兴市| 万安县| 南充市| 甘洛县| 汤阴县| 元阳县| 临高县| 永昌县| 青神县| 万山特区| 绥江县| 沅陵县| 安乡县| 碌曲县| 兴国县| 台南市| 麻阳| 辉南县|