鍍金池/ 教程/ Linux/ Servlet下載文件
Servlet web.xml welcome-file-list
Servlet從數(shù)據(jù)庫讀取記錄性能優(yōu)化
Servlet URL重寫帶參數(shù)
War文件
Web技術(shù)基礎(chǔ)
Servlet GenericServlet類
Servlet API
Servlet ServletInputStream類
使用MyEclipse創(chuàng)建Servlet
Servlet增刪改查
Servlet ServletConfig配置信息
Servlet Cookies
Servlet重定向
Servlet生命周期
Servlet HttpSession會話
Servlet HttpServlet類
Servlet注冊表單示例
Servlet表單隱藏字段
Servlet下載文件
Servlet教程
Servlet身份驗證過濾器
Servlet ServletOutputStream類
Servlet HttpSession登錄注銷實例
Servlet啟動時加載
Servlet事件和監(jiān)聽器
使用Eclipse創(chuàng)建Servlet
Servlet ServletContextEvent事件
Servlet HttpSessionEvent統(tǒng)計在線用戶數(shù)實例
Servlet RequestDispatcher請求轉(zhuǎn)發(fā)
Servlet使用注釋
Servlet過濾器示例
Servlet過慮器
Servlet ServletContext配置信息
Servlet登錄注銷Cookies實例
Servlet工作流程
Servlet會話跟蹤
Servlet登錄實例
Servlet ServletRequest接口
Servlet ServletRequestEvent類和接口
Servlet入門程序
Servlet查詢搜索數(shù)據(jù)示例
Servlet FilterConfig應(yīng)用示例
Servlet顯示所有頭信息
Servlet屬性設(shè)置
使用NetBeans創(chuàng)建Servlet
Servlet接口實現(xiàn)
Servlet上傳文件

Servlet下載文件

這里是一個從服務(wù)器下載文件的簡單例子。假設(shè)想要下載項目根目錄中的home.jsp文件。如果有任何jarzip文件,可以直接提供該文件的鏈接,不必編寫程序來下載這樣的文件。 但是如果有任何java文件或者jsp文件等,則需要編寫一個程序來下載這類文件。

在servlet中從服務(wù)器下載文件的示例

打開Eclipse,創(chuàng)建一個動態(tài)Web項目:ServletDownloadFile,其完整的目錄結(jié)構(gòu)如下所示 -

在這個例子中,創(chuàng)建了三個文件:

  • index.html - 首頁入口
  • DownloadServlet.java - 處理要下載的文件并向客戶端輸出文件下載。
  • web.xml - 此配置文件向服務(wù)器提供有關(guān)servlet的信息。

文件:index.html

該文件提供了一個下載文件的鏈接。參考下面代碼 -

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Servlet下載文件示例</title>
</head>
<body>
<div style="margin:auto;text-align:center;">
    <a href="DownloadJSP">下載JSP文件</a>
</div>
</body>
</html>

文件:DownloadServlet.java

這是一個實現(xiàn)servlet的文件,讀取文件的內(nèi)容并將其寫入流中作為響應(yīng)發(fā)送給客戶端。因此需要通知服務(wù)器將內(nèi)容類型設(shè)置為:APPLICATION/OCTET-STREAM

package com.yiibai;

import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;

public class DownloadServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();
        String filepath = request.getSession().getServletContext().getRealPath("");
        String filename = "home.jsp";
        response.setContentType("APPLICATION/OCTET-STREAM");
        response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");

        FileInputStream fileInputStream = new FileInputStream(filepath + filename);

        int i = 0;
        while ((i = fileInputStream.read()) != -1) {
            out.write(i);
        }
        fileInputStream.close();
        out.close();
    }

}

文件:web.xml

此配置文件向服務(wù)器提供有關(guān)servlet的信息。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    id="WebApp_ID" version="3.1">
    <display-name>ServletDownloadFile</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <servlet>
        <servlet-name>DownloadServlet</servlet-name>
        <servlet-class>com.yiibai.DownloadServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>DownloadServlet</servlet-name>
        <url-pattern>/DownloadJSP</url-pattern>
    </servlet-mapping>

</web-app>

在編寫上面代碼后,部署此Web應(yīng)用程序(在項目名稱上點擊右鍵->”Run On Server…”),打開瀏覽器訪問URL: http://localhost:8080/ServletDownloadFile/ ,如果沒有錯誤,應(yīng)該會看到以下結(jié)果 -

點擊上頁面中的“下載JSP文件”鏈接,可以看到以下結(jié)果 -