国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

關于response.getWriter()寫回數據的實際發生時間點

2019-11-14 14:59:11
字體:
來源:轉載
供稿:網友

只能說自己平時太粗心了,一些細節問題雖然幾次路過,都沒有注意過,也沒有好好想過.

同事負責的一段微信模塊的小邏輯,為了防止微信服務器認為沒有接收到請求而重發消息,所以再收到微信服務器發回的消息后,馬上用response.getwriter()方法寫回一個success消息,在這個方法后開始執行費時的業務邏輯.這個看起來好像沒問題,邏輯上好像也ok,但是實際執行的效果卻是,response.getwriter()方法雖然執行了,但是并沒有及時將數據返回給微信服務器,而是等到之后的代碼全都執行完了才真正返回數據.

當然解決這個問題的方法多得是,簡單的方式業務邏輯直接新起個線程任務執行就好了.但這不是這里討論的重點.問題是為何這個response.getwriter()方法寫回的數據沒有及時返回呢?

簡單回顧一下servlet的執行流程:

 Web瀏覽器-->發出http請求-->Web容器(首次訪問的話創建目標Servlet對象)-->創建請求和響應對象(request和response)

-->調用Servlet的service(ServletResquest,ServletRespons)并且將剛才創建的請求對象和響應對象對象傳遞給Servlet

-->Servlet程序從請求對象中讀取請求信息,將響應信息寫入到響應對象當中-->service方法結束,程序返回到web容器

->web容器從相應對象中讀取響應信息

->將響應星系生成HTTP消息返回給瀏覽器

重點在于紅字和綠字的部分,簡單的說我們的請求和返回依賴的是請求和返回對象,在請求和返回對象沒有返回的情況下,實際容器并沒有收到我們返回的任何信息.而從servlet的執行流程中也能看出來,實際上請求和響應對象是在servlet的service()方法執行結束后,將所有的請求和返回信息都封裝進請求和響應對象中后,才返回給web容器,web容器從這些對象中讀取數據才返回給請求方.所以response.getWriter()寫回的數據也是僅僅是寫入response對象中,在response對象沒有真正返回的時候,請求方是接收不到我們的返回信息的.

整理一下servlet流程,這個問題就很好理解了,但是如果沒好好想一想,卻很容易成為一個當想然的錯誤理解..


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 瑞金市| 南充市| 宁蒗| 公安县| 丰镇市| 大渡口区| 霍林郭勒市| 威远县| 彩票| 威远县| 芮城县| 锦屏县| 九江县| 呼玛县| 子洲县| 文山县| 衡阳县| 静宁县| 余江县| 昌乐县| 称多县| 峨眉山市| 永泰县| 城步| 云安县| 翼城县| 恩施市| 丹东市| 桂阳县| 南昌县| 习水县| 定日县| 彩票| 自贡市| 永善县| 恩平市| 新建县| 渭南市| 新河县| 江北区| 淮阳县|