web下載文件和跳轉(zhuǎn)的方法
如果不通過JSP和servlet直接下載文件的話,可以通過web.xml文件來識別文件類型來進(jìn)行下載。如果要通過servlet來下載的話,可以如下所示來進(jìn)行下載:
但是這樣下載的話有兩個缺點(diǎn):一個是我們不知道文件的大小和下載進(jìn)度,二是我們下載文件的文件名字看不到,所以我們進(jìn)行了以下操作:
這樣我們就可以得到文件大小下載進(jìn)度和文件名稱。
開發(fā)Web應(yīng)用中會遇到從一個頁面跳轉(zhuǎn)到另一個頁面的問題,在Servlet中有兩種跳轉(zhuǎn)方式:
跳轉(zhuǎn)
重定向:配合瀏覽器跳轉(zhuǎn)(此方法不能用兩次),response給瀏覽器帶一句跳轉(zhuǎn)的話,瀏覽器就乖乖跳轉(zhuǎn)了。
轉(zhuǎn)發(fā): 服務(wù)器內(nèi)部跳轉(zhuǎn) request進(jìn)行跳轉(zhuǎn),通過getRequestDispatcher()方法進(jìn)行轉(zhuǎn)發(fā)待命,然后再經(jīng)過forword()方法進(jìn)行跳轉(zhuǎn),跳轉(zhuǎn)的話在瀏覽器顯示的地址不變。
實(shí)驗(yàn)測試重定向和轉(zhuǎn)發(fā):
重定向測試
轉(zhuǎn)發(fā)測試:
重定向和轉(zhuǎn)發(fā)的區(qū)別
1.請求的次數(shù)的不同,重定向總共請求了兩次服務(wù)器;轉(zhuǎn)發(fā)則是用戶請求一次可能經(jīng)過N個Servlet頁面由返回到用戶瀏覽器中,是一次請求多次處理的過程;
2.跳轉(zhuǎn)過程中鏈接的變化,重定向在跳轉(zhuǎn)中請求了兩次服務(wù)器并且是兩次不同的鏈接地址,在瀏覽器的地址欄可以看到兩次是有變化的;轉(zhuǎn)發(fā)在跳轉(zhuǎn)過程中瀏覽器請求了一次服務(wù)器,服務(wù)器經(jīng)過了n個Servlet頁面并沒有改變請求的鏈接地址,因?yàn)橛脩糁徽埱罅艘淮危栽谡麄€跳轉(zhuǎn)過程中鏈接地址是沒有改變的,在瀏覽器的地址欄就可以看到
3.目的不同,重定向只是簡單的讓用戶訪問一個新的鏈接,而轉(zhuǎn)發(fā)是服務(wù)器要得到用戶的請求內(nèi)容并需要進(jìn)行一部分處理的,所以兩者目的之不同的
相關(guān)文章:
1. Javaweb工程運(yùn)行報(bào)錯HTTP Status 404解決辦法2. 簡述Docker安裝Tomcat鏡像并部署web項(xiàng)目3. PHP開發(fā)大型Web應(yīng)用淺析4. Django websocket原理及功能實(shí)現(xiàn)代碼5. Java Web最近面試題匯總6. android Web跳轉(zhuǎn)到app指定頁面并傳遞參數(shù)實(shí)例7. Spring Web Flow 1.0 EA 發(fā)布8. JAVA WEB中Servlet和Servlet容器的區(qū)別9. java web實(shí)現(xiàn)簡單留言板功能10. IDEA編寫JavaWeb出現(xiàn)亂碼問題解決方案
