request的生命周期
有如下功能:
從index.jsp頁面點擊超鏈接進入TestServlet服務器,TestServlet服務器再請求轉發到test.jsp。
在index.jsp里設置了request的attribute:requestKey1,在TestServlet服務器里設置了request的attribute:requestKey2,然后在test.jsp頁面里獲取request的兩個屬性值。
?
具體代碼如下:
?
?
運行結果:只能獲取到request的requestKey2,不能獲取requestKey1。這說明index.jsp的request和test.jsp不是同一個request,而TestServlet服務器的request和test.jsp是同一個request.
原因分析:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 超鏈接(相當于請求轉發) ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??發送request② ? ? ? ? ? ? ? ? ? ? ? ? ?請求轉發request②
? ? ? ? ? ? ? ? ? ? ? ? index.jsp------------------>TestServlet服務器-------------------->test.jsp
(index.jsp里顯示自身頁面的request①) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (test.jsp里顯示自身頁面的request②)
?
也就是說,index.jsp頁面的request是用來顯示自身頁面的的,刷新一下index.jsp頁面,就發送一次request①從而頁面完成請求和響應,request①就會被創建和銷毀。
而從index.jsp頁面點擊超鏈接進入TestServlet服務器是另一個request②,TestServlet服務器對request②進行請求轉發到test.jsp頁面,此時test.jsp獲取的請求仍然是request②,而且test.jsp頁面顯示自身的也是request②。如果刷新test.jsp頁面,就會再發送一次request②(從index.jsp---->TestServlet服務器)
?
那么,如果是TestServlet服務器是重定向到test.jsp,將會是如下流程:
?
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 超鏈接(相當于請求轉發) ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?發送request② ? ? ? ? ? ? ? ? ? ? ? ? ?請求重定向request③
? ? ? ? ? ? ? ? ? ? ? ? index.jsp------------------>TestServlet服務器-------------------->test.jsp
(index.jsp里顯示自身頁面的request①) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (test.jsp里顯示自身頁面的request③)
?
?此時如果刷新一下test.jsp頁面,再次發送的request③和前面index.jsp的request①、TestServlet服務器的request②沒有半點關系。
?
?
?
轉載于:https://www.cnblogs.com/TTTTT/p/6005765.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的request的生命周期的全部內容,希望文章能夠幫你解決所遇到的問題。