很久沒有更新博客了,這段時間實在的忙的不可開交,項目馬上就要上線了,要修補的東西太多了。當我在學習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)顯示進度,其實思想和上面的功能是一致的,我將這個功能分為三個點:
單例:用于保存進度信息;
上傳servlet:用于上傳文件并實時寫入進度;
進度servlet:用于讀取實時進度信息;
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應用分析 2017-07-26
- 集合結合數(shù)據(jù)結構來看看(二) 2017-07-26
