成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

手把手教你學會JSP上傳文件方法

開發 后端
本教程以Apache組織的commons項目中的FileUpload項目做為jsp文件上傳組件,FileUpload項目完全尊守RFC1867規范中。

關于在HTTP request 中通過Post方法提交文件的規范,該項目性能穩定快速,易于部署和使用.本次教程以前端jsp + 后端 servlet的方式,利用JSP上傳文件,你也可以完全在jsp中實現而不用servlet.

在開始JSP上傳文件之前你要準備以下幾個東西:

1. commons-FileUpload 1.2 包

下載地址:http://jakarta.apache.org/commons/fileupload/

2. commons-IO 1.3.1 包

下載地址:http://jakarta.apache.org/commons/io/

3. Commons-BeanUtils 1.7 包

下載地址:http://jakarta.apache.org/commons/beanutils/


有了上面這些東西我們就可以開始了

1. 新建一個叫upload的WEB項目(我用的是Lomboz3.2開發環境)

2. 把上面下載下來的包分別解壓并拷貝*.jar的文件到上面那個項目的WEB-INF/lib目錄中

3.接下來我們要準備一份如下內容的upload.jsp文件,用來選擇要上傳的文件,

  1. <html> 
  2. <head> 
  3. <title>Jsp+Servlet upload file</title> 
  4. </head> 
  5. <body> 
  6.   <form name="upform" action="UploadServlet" method="POST" enctype="multipart/form-data"> 
  7.     <input type ="file" name="file1" id="file1"/><br/> 
  8.     <input type ="file" name="file2" if="file2"/><br/> 
  9.     <input type ="file" name="file3" id="file3"/><br/> 
  10.     <input type="submit" value="Submit" /><br/> 
  11.     <input type="reset" /> 
  12.   </form> 
  13. </body> 
  14. </html> 

上面文件中有幾個需要注意的地方就是

1. action="UploadServlet" 必須和后面的web.xml配置文件中對servlet映射必須保持一致.

2. method="POST" 這里必須為"POST"方式提交不能是"GET".

3. enctype="multipart/form-data" 這里是要提交的內容格式,表示你要提交的是數據流,而不是普通的表單文本.

4. file1,file2,file3表示你要3個文件一起上傳,你也可以一次只上傳一個文件.


接下來我們要寫一個與上面這個upload.jsp配套的servlet程序,就叫做UploadServlet.java吧

以下是該servlet的詳細代碼:

看上去有點長,不過并不復雜,很容易明白的.

  1. import java.io.BufferedInputStream;  
  2. import java.io.BufferedOutputStream;  
  3. import java.io.File;  
  4. import java.io.FileOutputStream;  
  5. import java.io.IOException;  
  6. import javax.servlet.ServletException;  
  7. import javax.servlet.http.HttpServletRequest;  
  8. import javax.servlet.http.HttpServletResponse;  
  9.  
  10. import org.apache.commons.fileupload.DefaultFileItemFactory;  
  11. import org.apache.commons.fileupload.FileItemFactory;  
  12. import org.apache.commons.fileupload.FileItemIterator;  
  13. import org.apache.commons.fileupload.FileItemStream;  
  14. import org.apache.commons.fileupload.disk.DiskFileItemFactory;  
  15. import org.apache.commons.fileupload.servlet.ServletFileUpload;  
  16. import org.apache.commons.fileupload.util.Streams;  
  17.  
  18. /**  
  19. * Servlet implementation class for Servlet: UploadServlet  
  20. *  
  21. */  
  22. public class UploadServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {  
  23.     File tmpDir = null;//初始化上傳文件的臨時存放目錄  
  24.     File saveDir = null;//初始化上傳文件后的保存目錄  
  25.   public UploadServlet() {  
  26.     super();  
  27.   }       
  28.  
  29.   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  30.     doPost(request,response);  
  31.   }       
  32.     
  33.   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  34.     try{  
  35.         if(ServletFileUpload.isMultipartContent(request)){  
  36.           DiskFileItemFactory dff = new DiskFileItemFactory();//創建該對象  
  37.           dff.setRepository(tmpDir);//指定上傳文件的臨時目錄  
  38.           dff.setSizeThreshold(1024000);//指定在內存中緩存數據大小,單位為byte  
  39.           ServletFileUpload sfu = new ServletFileUpload(dff);//創建該對象  
  40.           sfu.setFileSizeMax(5000000);//指定單個上傳文件的***尺寸  
  41.           sfu.setSizeMax(10000000);//指定一次上傳多個文件的總尺寸  
  42.           FileItemIterator fii = sfu.getItemIterator(request);//解析request 請求,并返回FileItemIterator集合  
  43.           while(fii.hasNext()){  
  44.             FileItemStream fis = fii.next();//從集合中獲得一個文件流  
  45.             if(!fis.isFormField() && fis.getName().length()>0){//過濾掉表單中非文件域  
  46.                 String fileName = fis.getName().substring(fis.getName().lastIndexOf(""""));//獲得上傳文件的文件名  
  47.                 BufferedInputStream in = new BufferedInputStream(fis.openStream());//獲得文件輸入流  
  48.                 BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File(saveDir+fileName)));//獲得文件輸出流  
  49.                 Streams.copy(in, out, true);//開始把文件寫到你指定的上傳文件夾  
  50.             }  
  51.           }  
  52.           response.getWriter().println("File upload successfully!!!");//終于成功了,還不到你的上傳文件中看看,你要的東西都到齊了嗎  
  53.         }  
  54.     }catch(Exception e){  
  55.         e.printStackTrace();  
  56.     }  
  57.   }             
  58.  
  59.   public void init() throws ServletException {  
  60.     /* 對上傳文件夾和臨時文件夾進行初始化  
  61.     *  
  62.     */  
  63.     super.init();  
  64.       String tmpPath = "c:""tmpdir";  
  65.       String savePath = "c:""updir";  
  66.     tmpDir = new File(tmpPath);  
  67.     saveDir = new File(savePath);  
  68.     if(!tmpDir.isDirectory())  
  69.         tmpDir.mkdir();  
  70.     if(!saveDir.isDirectory())  
  71.         saveDir.mkdir();      
  72.   }     

upload.jsp文件有了,配套的servlet也有了,現在***剩下的就是怎么讓它們配合工作了,接著我們把WEB-INF/web.xml文件請出來,并在該文件中加入以下內容:

  1. <servlet> 
  2.     <servlet-name>UploadServlet</servlet-name> 
  3.     <servlet-class>UploadServlet</servlet-class> 
  4.   </servlet> 
  5.   <servlet-mapping> 
  6.     <servlet-name>UploadServlet</servlet-name> 
  7.     <url-pattern>/UploadServlet</url-pattern> 
  8.   </servlet-mapping> 

寫好以后再點擊"保存"

把你的upload項目整個拷貝到tomcat的webapps目錄下,啟動tomcat.打開IE瀏覽器在地址欄中輸入http://localhost:8080/upload/upload.jsp怎么樣看到JSP上傳文件的輸入框了嗎? 什么,沒有看到,出錯了! 你仔細檢查一下步驟有沒有對.

好了,現在我們點擊頁面上的"瀏覽"按鈕,找到我們要上傳的文件,***點擊"Submit",太激動了,還不看一下你的c:"updir里面有沒有你要的東西.

【編輯推薦】

  1. 介紹幾個開源的JSP開發框架
  2. JSP開發框架FastJSP簡介
  3. JSP開發框架JSF對比基于Servlet的Tapestry
  4. 學習JSP的基礎概念之九個隱含對象
  5. JSP數據分頁實例:MySQL翻頁
責任編輯:彭凡 來源: pcdog.com
相關推薦

2009-11-09 14:57:37

WCF上傳文件

2010-08-09 09:25:23

SQL Server鏡

2022-11-06 14:46:28

腳本windows文件

2021-01-20 10:18:48

MySQL服務器配置

2021-07-14 09:00:00

JavaFX開發應用

2022-03-29 11:11:11

TortoisGitGitee碼云

2011-01-10 14:41:26

2025-05-07 00:31:30

2011-05-03 15:59:00

黑盒打印機

2023-04-26 12:46:43

DockerSpringKubernetes

2022-01-08 20:04:20

攔截系統調用

2022-07-27 08:16:22

搜索引擎Lucene

2022-12-07 08:42:35

2022-03-14 14:47:21

HarmonyOS操作系統鴻蒙

2011-02-22 13:46:27

微軟SQL.NET

2021-02-26 11:54:38

MyBatis 插件接口

2021-12-28 08:38:26

Linux 中斷喚醒系統Linux 系統

2011-04-25 10:26:54

打印機

2024-03-05 18:27:43

2024-04-02 08:58:13

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲h视频 | 国产视频福利一区 | 一区二区三区免费 | 国产91综合| www.成人.com| 亚洲欧洲在线看 | 日一区二区 | 欧美一级视频免费看 | 亚洲免费在线视频 | 女同久久另类99精品国产 | 欧美一级欧美三级在线观看 | 99色在线视频 | 欧美日韩不卡在线 | 在线91| 伊人网91| 国产在线a视频 | av中文在线 | 激情六月丁香婷婷 | 一区二区三区欧美在线 | 亚洲三级av | 亚洲精品888 | 夜夜艹 | 日韩五月天 | www.日日夜夜 | 成年免费大片黄在线观看岛国 | 中文字幕一区二区三区乱码在线 | 九九精品在线 | 久久国产传媒 | 亚洲欧美视频 | 最近日韩中文字幕 | 91黄在线观看 | 97精品国产一区二区三区 | 日韩在线播放一区 | 日日操天天射 | 99精品久久久久久中文字幕 | 91文字幕巨乱亚洲香蕉 | 国产精品自拍视频 | 久久久久久久久国产精品 | 欧美做暖暖视频 | 欧美一区二区 | 国产精品一区二区三区四区 |