版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Struts—第十一章Struts2文件上傳及下載1考試什么是代理?代理所涉及的角色?用代碼實(shí)現(xiàn)靜態(tài)代理?要實(shí)現(xiàn)功能演示FileUpload工程Login2.jsp上節(jié)回顧什么是攔截器Struts2采用什么方式實(shí)現(xiàn)的攔截器在struts2中怎么怎么攔截器所繼承的類所使用的標(biāo)記本節(jié)目標(biāo)文件上傳掌握文件上傳所使用的類掌握文件上傳的步驟掌握上傳多個(gè)文件的步驟文件下載掌握文件下載所使用的類掌握文件下載的步驟文件上傳
文件上傳的作用文件上傳的方式ServletStruts2的方式使用文件流的操作InputStreamFileInputStreamOutputStreamFileOutputStreamFile使用文件流進(jìn)行文件的讀寫fileTest.javaInputStreamis=new
FileInputStream(new
File("c:\\myfile.txt"));OutputStream
os=new
FileOutputStream(newFile("c:\\myfile1.txt"));byte[]buffer=new
byte[400];intlength=0;while((length=is.read(buffer))>0)os.write(buffer,0,length);文件上傳的應(yīng)用郵件附件上傳在網(wǎng)上辦公室提交文檔提交測(cè)試報(bào)告…….Struts2提供的提供了一個(gè)文件上傳攔截器erceptor.FileUploadInterceptor它負(fù)責(zé)調(diào)用底層的文件上傳組件解析文件內(nèi)容并為action準(zhǔn)備與上傳文件相關(guān)的屬性值。處理文件上傳請(qǐng)求的Action必須提供特殊樣式命名的屬性舉例表單的要求同上<inputtype=“file”name=“image”/>ActionAction的三個(gè)屬性
image
java.io.File
類型,已上傳文件的File對(duì)象StringimageFileName:上傳文件的文件名StringimageContentType:上傳文件的內(nèi)容類型Action業(yè)務(wù)處理使用參數(shù)來構(gòu)建一個(gè)輸入流構(gòu)建一個(gè)一個(gè)File對(duì)象(用系統(tǒng)路徑和當(dāng)前的file的名字)用上面的文件構(gòu)建一個(gè)輸出流將輸入流里的內(nèi)容寫入至輸出流中Action業(yè)務(wù)處理InputStreamis=new
FileInputStream(file);Stringpath=ServletActionContext.getServletContext().getRealPath("/");FilenewFile=new
File(path,this.getFileFileName());OutputStream
os=new
FileOutputStream(newFile);byte[]buffer=new
byte[400];intlength=0;while((length=is.read(buffer))>0){os.write(buffer,0,length);}return"success";成功頁面result.jspusername:${requestScope.username}<br>password:${requestScope.password}<br>file:${requestScope.fileFileName}案例Strut2工程的login2.jsp問題?文件名稱中文時(shí)怎么辦?解決辦法查看perties文件Struts.xml文件修改<constantname="struts.multipart.saveDir"value="c:\"></constant><constantname="struts.i18n.encoding"value="gbk"></constant>如果多文件怎么辦?上傳固定數(shù)量的文件實(shí)現(xiàn)多文件上傳privateStringusername;privateStringpassword;privateList<File>file;privateList<String>fileFileName;privateList<String>fileContentType;實(shí)現(xiàn)多文件上傳for(inti=0;i<file.size();i++){InputStreamis=new
FileInputStream(file.get(i));Stringroot=ServletActionContext.getRequest().getRealPath("/");FiledestFile=new
File(root,this.getFileFileName().get(i));OutputStream
os=new
FileOutputStream(destFile);Form表單的代碼<s:formaction="fileupload"method="post"enctype="multipart/form-data"><s:textareaname="username"label="username"></s:textarea><s:filename="file"></s:file><s:submitlabel="OK"></s:submit></s:form>動(dòng)態(tài)添加上傳的文件修改login2.jsp文件增加一個(gè)按鈕增加按鈕的處理事件對(duì)于action及struts.xml文件則不需要修改按鈕的處理事件<script>functionaddMore(){vartd=document.getElementById("more");var
br=document.createElement("br");varinput=document.createElement("input");varbutton=document.createElement("button");input.type="file";="file";button.value="remove";button.onclick=function(){td.removeChild(br);td.removeChild(input);td.removeChild(button);}td.appendChild(br);td.appendChild(input);td.appendChild(button);}</script>增加一個(gè)按鈕<tdid="more"><s:filename="file"></s:file><inputtype="button"value="addMore"onClick="addMore()"></td>對(duì)上傳的文件進(jìn)行限制需要使用系統(tǒng)提供的攔截器<interceptor-refname="fileUpload">查看此攔截器所對(duì)應(yīng)的類此類有兩個(gè)參數(shù)
protectedLongmaximumSize;最大長(zhǎng)度
protectedStringallowedTypes;允許的類型Struts.xml<interceptor-refname="fileUpload"><paramname=“maximumSize”>409600</param>(字節(jié))<paramname="allowedTypes">application/vnd.ms-powerpoint</param>
</interceptor-ref>紅色部分指的是允許使用的文件類型。該文件類型在tomcat的安裝目錄—conf-web.xml文件中查得
<mime-mapping><extension>ppt</extension><mime-type>application/vnd.ms-powerpoint</mime-type></mime-mapping>此時(shí)會(huì)出現(xiàn)空指針異常為什么?解決辦法增加:<interceptor-refname="defaultStack"></interceptor-ref>小結(jié)上傳不合法的用戶信息不顯示?在input.jsp頁面中增加<s:fielderror>Tomcat—conf—web.xml<mime-mapping><extension>xls</extension><mime-type>application/vnd.ms-excel</mime-type></mime-mapping>錯(cuò)誤信息是系統(tǒng)的,如何解決?在工程的perties文件中增加struts.messages.error.content.type.not.allowed=fileisnot紅色部分如何找到?在struts-perties系統(tǒng)文件中找到。錯(cuò)誤信息是中文的,如何解決?Native2ascii命令文件下載可以使用鏈接暴露了下載文件的真實(shí)地址,不利于對(duì)資源進(jìn)行安全保護(hù)。服務(wù)器端的文件只能保存在web應(yīng)用所在的目錄下利用程序編碼實(shí)現(xiàn)使用HTTP協(xié)議報(bào)文頭中的三個(gè)報(bào)文件頭域Content-Type:application/x-msdownloadContent-Disposition:attachment;filename=downloadfileContent-Length:filesize步驟編寫JSP頁面編寫action配置struts.xml編寫JSP頁面<ahref="/FileUpload/download.action">download</a>或<s:a
href="/FileUpload/download.action">download</s:a>編寫actionpublic
class
DownLoadAction
extends
ActionSupport
{
public
InputStream
getDownloadFile(){
return
ServletActionContext.getServletContext().getResourceAsStream("/struts.ppt");}
publicStringexecute()throwsException{
return"success";}}配置struts.xml<actionname="download"class="com.dn.action.DownLoadAction"><resultname="success"type="stream"><paramname="contentType">application/vnd.ms-powerpoint</param><paramname="contentDisposition">filename="struts.ppt"</param><paramname="inputName">downloadFile</param></result></action>說明contentType:下載文件的類型,在tomcat-conf-web.xml文件中查到contentDisposition:格式為filename=“struts.ppt”其中filename是固定的,而struts.ppt是在下載時(shí),顯示在你另存框中的文件名字inputName:是你所對(duì)應(yīng)的文件輸入流的名字,它應(yīng)該同action中的返回值是InputStream的get***()函數(shù)名相同總結(jié):文件上傳Struts2文件上傳的步驟文件下載文件上傳所涉及的文件Jsp文件業(yè)務(wù)處理文件java文件文件上傳(struts2的表單)早期的HTML不支持文件上傳在HTMLRFC1867規(guī)范中使用<inputtype=“file”>來實(shí)現(xiàn)文件的上傳如果在表單中使用了該組件,瀏覽器會(huì)自動(dòng)生成一個(gè)輸入框及一個(gè)按鈕對(duì)表單的要求在表單中要有<inputtype=“file”>表單必須要有method方法,并且method方法的值必須是post表單必須要有enctype="multipart/form-data“注:此三項(xiàng)缺一不可表單案例<formaction="result.jsp"mehtod="post"
enctype="multipart/form-data"><inputtype="text"name="info"/><inputtype="file"name="file"><inputtype="submit"vlaue="OK"></form>文件上傳上傳文件的內(nèi)容不能直接通過請(qǐng)求對(duì)象的getParameter()方法來得到。需要以字節(jié)流的形式讀取客戶端提交的文件數(shù)據(jù)。并按照文件上的格式對(duì)這些數(shù)據(jù)進(jìn)行解析,從而獲取上傳文件的內(nèi)容。Struts沒有提供解析上傳文件內(nèi)容的功能,它使用第三方的文件上傳組件提供的對(duì)文件上傳的支持。Struts2使用的是apache公司提供的jackata文件上傳還有兩種方式pell、cos方式Struts2的文件上傳可以使用apache組織的commons-fileupload組件。兩個(gè)libCommons-fileupload.jarCommons-io.jarUploadServlet.java使用servlet來實(shí)現(xiàn)使用文件流來實(shí)現(xiàn)使用commons.apache.FileUpload插件來進(jìn)行注意:此時(shí)文件的出現(xiàn)在哪?Tomcat/webapps/FileUpload而不是我們的工程里Serlvet的類的編寫Index.jsp文件上傳所涉及的類DiskFileItemFactory是磁盤
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度跨境電子商務(wù)平臺(tái)廣告服務(wù)合同4篇
- 2025年度水電工程設(shè)計(jì)與施工一體化合同匯編4篇
- 2025年度重型沖擊鉆施工工程合同4篇
- 2025年鮮蛋冷鏈配送與售后服務(wù)合同3篇
- 個(gè)人土地抵押貸款合同范本打印版(2024)一
- 2025年度智慧城市建設(shè)物業(yè)服務(wù)委托合同4篇
- 2025年度餐飲行業(yè)供應(yīng)鏈戰(zhàn)略合作框架協(xié)議3篇
- 教育技術(shù)在小學(xué)科學(xué)課題研究中的應(yīng)用與發(fā)展
- 個(gè)人借款轉(zhuǎn)讓協(xié)議簡(jiǎn)明示例版
- 2025年度個(gè)人租賃房屋租賃合同違約責(zé)任及處理協(xié)議4篇
- 人教版物理八年級(jí)下冊(cè) 專項(xiàng)訓(xùn)練卷 (一)力、運(yùn)動(dòng)和力(含答案)
- 山東省房屋市政工程安全監(jiān)督機(jī)構(gòu)人員業(yè)務(wù)能力考試題庫-中(多選題)
- 重慶市2023-2024學(xué)年七年級(jí)上學(xué)期期末考試數(shù)學(xué)試題(含答案)
- 2024年中考語文滿分作文6篇(含題目)
- 北師大版 2024-2025學(xué)年四年級(jí)數(shù)學(xué)上冊(cè)典型例題系列第三單元:行程問題“拓展型”專項(xiàng)練習(xí)(原卷版+解析)
- 2023年譯林版英語五年級(jí)下冊(cè)Units-1-2單元測(cè)試卷-含答案
- 施工管理中的文檔管理方法與要求
- DL∕T 547-2020 電力系統(tǒng)光纖通信運(yùn)行管理規(guī)程
- 種子輪投資協(xié)議
- 執(zhí)行依據(jù)主文范文(通用4篇)
- 浙教版七年級(jí)數(shù)學(xué)下冊(cè)全冊(cè)課件
評(píng)論
0/150
提交評(píng)論