如果不通過JSP和servlet直接下載文件的話,可以通過web.xml文件來識別文件類型來進行下載。如果要通過servlet來下載的話,可以如下所示來進行下載:
![](/d/20211017/d5a748c4df13f450c286961ddf8f6421.gif)
![](/d/20211017/cf43d562508fb3355b997a837c053bf3.gif)
但是這樣下載的話有兩個缺點:一個是我們不知道文件的大小和下載進度,二是我們下載文件的文件名字看不到,所以我們進行了以下操作:
![](/d/20211017/4574c0777031b22a1a688ff100035b70.gif)
![](/d/20211017/d5aa2b56f9135b966f2b432145770eef.gif)
這樣我們就可以得到文件大小下載進度和文件名稱。
開發(fā)Web應用中會遇到從一個頁面跳轉(zhuǎn)到另一個頁面的問題,在Servlet中有兩種跳轉(zhuǎn)方式:
跳轉(zhuǎn)
重定向:配合瀏覽器跳轉(zhuǎn)(此方法不能用兩次),response給瀏覽器帶一句跳轉(zhuǎn)的話,瀏覽器就乖乖跳轉(zhuǎn)了。
轉(zhuǎn)發(fā): 服務器內(nèi)部跳轉(zhuǎn) request進行跳轉(zhuǎn),通過getRequestDispatcher()方法進行轉(zhuǎn)發(fā)待命,然后再經(jīng)過forword()方法進行跳轉(zhuǎn),跳轉(zhuǎn)的話在瀏覽器顯示的地址不變。
![](/d/20211017/8204cc15e5006f36b0bfc3e6a06aaf79.gif)
實驗測試重定向和轉(zhuǎn)發(fā):
重定向測試
![](/d/20211017/479ec2919d87f3366eab1f7ceff12413.gif)
![](/d/20211017/2bccddd1ed3b1bb60552dc348fdf4b62.gif)
![](/d/20211017/7fa4665fcf0b2fa958206c8803e27e9a.gif)
![](/d/20211017/6040bdc9d2983d04f51372acba452214.gif)
轉(zhuǎn)發(fā)測試:
![](/d/20211017/8951a42b7596f7587821e36cc5f05d65.gif)
![](/d/20211017/b312f26f298462952df78f146bd5bf02.gif)
重定向和轉(zhuǎn)發(fā)的區(qū)別
1.請求的次數(shù)的不同,重定向總共請求了兩次服務器;轉(zhuǎn)發(fā)則是用戶請求一次可能經(jīng)過N個Servlet頁面由返回到用戶瀏覽器中,是一次請求多次處理的過程;
2.跳轉(zhuǎn)過程中鏈接的變化,重定向在跳轉(zhuǎn)中請求了兩次服務器并且是兩次不同的鏈接地址,在瀏覽器的地址欄可以看到兩次是有變化的;轉(zhuǎn)發(fā)在跳轉(zhuǎn)過程中瀏覽器請求了一次服務器,服務器經(jīng)過了n個Servlet頁面并沒有改變請求的鏈接地址,因為用戶只請求了一次,所以在整個跳轉(zhuǎn)過程中鏈接地址是沒有改變的,在瀏覽器的地址欄就可以看到
3.目的不同,重定向只是簡單的讓用戶訪問一個新的鏈接,而轉(zhuǎn)發(fā)是服務器要得到用戶的請求內(nèi)容并需要進行一部分處理的,所以兩者目的之不同的
您可能感興趣的文章:- C#利用WebClient實現(xiàn)兩種方式下載文件
- java webservice上傳下載文件代碼分享
- ASP.NET Web Api 2實現(xiàn)多文件打包并下載文件的實例
- ASP.NET(C#) Web Api通過文件流下載文件的實例
- asp.net Web Services上傳和下載文件(完整代碼)
- jQuery移動web開發(fā)之頁面跳轉(zhuǎn)和加載外部頁面的實現(xiàn)
- 在Android系統(tǒng)中使用WebViewClient處理跳轉(zhuǎn)URL的方法
- JAVASCRIPT實現(xiàn)的WEB頁面跳轉(zhuǎn)以及頁面間傳值方法