1. 程式人生 > >網頁超鏈接下載資源

網頁超鏈接下載資源

close 方式 doget [] tps oge 釋放 osi utf

頁面上提供一些超鏈接,對應的服務器程序中有相關資源,當超鏈接被單擊時,可以下載服務器資源 版本1:將資源內容響應到瀏覽器
1在WebContent下創建資源如:
葫蘆娃.txt 葫蘆娃第一集1 2 3 abc
美女.jpg
aaa.txt helloword 你好
2在WebContent下創建download.html
<a href="/day33_04/MyServlet?filename=葫蘆娃.txt" >葫蘆娃</a>
<a href="/day33_04/MyServlet?filename=美女.jpg" >美女</a>
<a href="/day33_04/MyServlet?filename=aaa.txt" >aaa</a>
註意:MyServlet是web.xml中url-prttern的名字
3創建Servlet類
繼承HttpServlet
doget方法中
//1獲取瀏覽器提交的文件名稱
String filename = request.getParameter("filename");
//2文件名亂碼
filename = new String(filename.getBytes("ISO-8859-1"),"UTF-8");
//3通過文件名讀取對應資源,使用ServletContext獲取輸入流,並響應到瀏覽器
ServletContext boss = getServletContext();
InputStream is = boss.getResourceAsStream("/"+filename);
//4通過輸出流響應到瀏覽器
ServletOutputStream out = response.getOutputStream();
byte[] bytes = new byte[1024];
int len;
while((len=is.read(bytes))!=-1){
sos.write(bytes, 0, len);
}
//5釋放資源
is.close();

步驟:
要將資源響應到瀏覽器 需要IO流 使用字節輸入輸出流
源文件:WebContent下的資源 可能有中文 需要轉碼
目的地:瀏覽器 response響應
首先獲取源文件
網頁超鏈接 鏈接到資源 獲取資源文件名,有中文轉碼
讀取源文件
需要boss的getResourceAsStream
寫入目的地
需要響應 response響應 getOutputStream()
註意點:
運行時使用瀏覽器download.html 版本2:實現下載,彈窗提示客戶進行下載處理
//在響應之前,要告訴瀏覽器采取的處理方式----進行下載
response.setHeader("content-Disposition","attachment; filename"+filename);
版本3:實現下載,彈窗提示客戶進行下載處理
filename = new String(filename.getBytes("ISO-8859-1"),"UTF-8");
byte[] bytes2 = filename.getBytes("GBK");
String Downloadfilename = new String(bytes2, "ISO-8859-1");
步驟
資源要先響應到瀏覽器 然後從瀏覽器通過彈窗下載到客戶端
資源-->Tomcat-->瀏覽器 瀏覽器-->Tomcat-->客戶端
資源到瀏覽器ISO-8859-1-->UTF-8
瀏覽器到客戶端 封裝成GBK 然後再封裝成ISO-8859-1
通過Tomcat將ISO-8859-1剝開成GBK 註意: 如果資源創建在WebContent下重新創建一個文件夾xx, 那麽版本1的3處 InputStream is = boss.getResourceAsStream("/"+filename); 將"/"改為"/xx/" 否則會報空指針異常NullPointerException

網頁超鏈接下載資源