首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JBuilder 2005 Servlet 實戰:實現 Excel 日誌檔案下載功能

     編輯:Java 相關知識

Servlet 可透過設定回應標頭 Content-Disposition: attachment,讓瀏覽器彈出「另存新檔」對話框,實現二進位檔案下載。本文示範建立 ExcelFileServlet,依 URL 參數(年/月)下載對應的系統日誌 Excel 檔。

建立 Servlet 步驟

  1. File → New → Web → Standard Servlet
  2. Class: ExcelFileServlet,Package: bookstore.servlet
  3. 勾選 doGet(),Content type 留空(手動設定)
  4. 加入 URL 參數:year、month(型別 String)
  5. URL pattern: /excelfileservlet,Finish

核心下載程式碼

public void doGet(HttpServletRequest req, HttpServletResponse resp) 
        throws ServletException, IOException {
    // 1. 解析參數(含錯誤處理)
    int year = parseInt(req.getParameter("year"), 2005);
    int month = parseInt(req.getParameter("month"), 1);
    
    // 2. 組檔名與路徑
    String fileName = "log_" + year + "_" + month + ".xls";
    File file = new File("D:\\serverLog\\" + fileName);
    
    // 3. 設定下載標頭(關鍵!)
    resp.setContentType("application/x-msdownload");
    resp.setContentLength((int) file.length());
    resp.setHeader("Content-Disposition", "attachment;filename=" + fileName);
    
    // 4. 串流輸出
    FileInputStream fis = new FileInputStream(file);
    BufferedInputStream bis = new BufferedInputStream(fis);
    byte[] buffer = new byte[1024];
    OutputStream out = resp.getOutputStream();
    int bytesRead, total = 0;
    while (total < file.length() && (bytesRead = bis.read(buffer)) != -1) {
        out.write(buffer, 0, bytesRead);
        total += bytesRead;
    }
    out.flush();
    // 關閉串流...
}

private int parseInt(String s, int defaultVal) {
    try { return Integer.parseInt(s); } 
    catch (NumberFormatException e) { return defaultVal; }
}

關鍵標頭解析

標頭值作用
Content-Typeapplication/x-msdownload宣告二進位下載類型
Content-Length檔案大小讓瀏覽器顯示進度條
Content-Dispositionattachment;filename=xxx.xls強制彈出下載對話框,指定預設檔名

前端整合:welcome.jsp 加入下載連結

<a href="/WebModule/excelfileservlet?year=2005&month=1">下載系統啟動日誌</a>

實際專案中年/月可來自表單輸入或下拉選單。

執行效果

  1. 登入系統 → welcome.jsp
  2. 點擊「下載系統啟動日誌」
  3. 瀏覽器彈出「檔案下載」對話框 → 存檔到本機

擴充應用

  • 動態產生 Excel/PDF/CSV 報表下載
  • 圖片、聲音等二進位資源下載
  • 大檔案分塊傳輸、斷點續傳(需配合 Range 請求)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved