【Jsp】把Java寫到Respond輸出資料流裡面供使用者下載

來源:互聯網
上載者:User

標籤:jsp   respond   下載   匯出   輸出資料流   

把Java中的內容輸出到檔案大家都會了,輸入輸出資料流是每一個Java程式猿的必須課。在《【Java】列印流與緩衝區讀者完成輸入與輸出到檔案操作》(點擊開啟連結)與《【Java】輸入與輸出與JDK1.5之後的新型字串StringBuilder》(點擊開啟連結)之中,我都說過這個問題。但是在Jsp上,怎麼把Java內容直接把檔案寫到網頁上給使用者下載呢?一般一些匯出功能實現,就需要這樣弄。

具體如:


使用者訪問download這個Servlet,就直接提供一個“中文是沒有問題.txt”的檔案給使用者下載。裡面的內容是在Java中直接寫到Respond輸出資料流的,在伺服器上根本沒有這個檔案。中文是沒有問題.txt中的“呵呵”是在使用者訪問download這個Servlet才構造出來的。

你可以寫如下的Servlet,無須任何外掛程式,構造一個Respond輸出資料流給列印流PrintWriter列印內容就行了。

其餘什麼外掛程式輸出到檔案同理,你可以改一改它的write方法就OK了。

以下的Servlet採用了Servlet3.0寫法,指明此Servlet的訪問地址是/download,測試是不要寫成localhost:8080/工程名/download/,這樣是不行的,後面沒有斜杠,service方法是原來doPost與doGet方法的集合,一般不這樣寫:

import java.io.*;import java.net.*;import javax.servlet.*;import javax.servlet.http.*;import javax.servlet.annotation.*;@SuppressWarnings("serial")@WebServlet(name = "download", urlPatterns = { "/download" })public class download extends HttpServlet {protected void service(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {//在SSH架構中,可以通過HttpServletResponse response=ServletActionContext.getResponse();取出Respond對象//清空一下response對象,否則出現緩衝什麼的response.reset();//指明這是一個下載的respondresponse.setContentType("application/x-download");//這裡是提供給使用者預設的檔案名稱String filename = "中文是沒有問題的.txt";//雙重解碼、防止亂碼filename = URLEncoder.encode(filename,"UTF-8");response.setCharacterEncoding("UTF-8");response.addHeader("Content-Disposition","attachment;filename=" + filename);/* * 這裡是最關鍵的一步。 * 直接把這個東西寫到response輸出資料流裡面,給使用者下載。 * 如果輸出到c:\b.txt就是: * PrintWriter printwriter = new PrintWriter(new FileWriter("c:\\b.txt",true)); * 現在寫好respond頭,就寫成: * PrintWriter printwriter = new PrintWriter(response.getOutputStream()); * 把PrintWriter的輸出點改一下 */PrintWriter printwriter = new PrintWriter(response.getOutputStream());printwriter.println("呵呵!");//列印流的所有輸出內容,必須關閉這個列印流才有效printwriter.close();}}


【Jsp】把Java寫到Respond輸出資料流裡面供使用者下載

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.