很久沒有更新博客了,這段時間實在的忙的不可開交,項目馬上就要上線了,要修補的東西太多了。當我在學習JavaWeb文件上傳的時候,我就一直有一個疑問,網(wǎng)站上那些博客的圖片是怎么上傳的,因為當提交了表單之后網(wǎng)頁就跳轉了。后來我學習到了Ajax,我知道了瀏覽器可以異步的發(fā)送響應,這時我又有新的疑問,那就是在我上傳一些文件的時候,那些網(wǎng)站的上傳進度是怎么做到的,因為servlet直到上傳完成之后才完成響應。

  最近我們的項目中有一個地方中需要用到一個功能,當用戶點擊一個處理按鈕時,前臺會實時的顯示后臺處理動態(tài),由于servlet一次只能接受一個請求,而且在servlet的生命周期結束時才會把響應數(shù)據(jù)發(fā)送到前臺(這一點大家可以做個這樣的測試:

1 response.getWriter().print("hello");2 Thread.sleep(10000);3 response.getWriter().print("world");

,你們會發(fā)現(xiàn)前臺在等待了約10s后收到了"helloworld")。所以我想到了一個方法:使用單例保存實時信息。具體的實現(xiàn)方法就是,當用戶點擊了處理按鈕時,在后臺開啟一個線程進行處理,并且每進行到一步,就向單例中寫入當前狀態(tài)信息。然后編寫一個servlet,用于返回單例中的信息,前臺循環(huán)發(fā)送請求,這樣就能實現(xiàn)實時顯示進度的效果。

  好了,啰嗦了這么多,下面進入正題,如何實現(xiàn)上傳文件動態(tài)顯示進度,其實思想和上面的功能是一致的,我將這個功能分為三個點:

  1. 單例:用于保存進度信息;

  2. 上傳servlet:用于上傳文件并實時寫入進度;

  3. 進度servlet:用于讀取實時進度信息;

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設計培訓,網(wǎng)站建設培訓學習是年輕人改變自己的最好方式