spring mvc 中獲取HttpServletRequest ,HttpServletResponse


spring中的bean最常用的 singleton 模式 

如果要在springmvc Controller 中獲取  HttpServletRequest ,HttpServletResponse 怎么辦?

1.在接口函數中以參數傳入  類似HttpServlet  

 

這種方式獲得的是真實的request,response 對象   沒什么好說的

 2.@Autowired 注入  定義類屬性

 

 這種方式獲得的是 request,response 代理對象,這樣做的好處是什么呢? 

前面所說的controller bean是單例模式的  那么  所有的請求實際上訪問的是同一個controller對象,

我們可以推斷出這里的  request 和response  也是同一個   what?  這不是亂套了嗎? 不是說好的每個請求都會有request,response對象嗎?

其實 我們訪問request,response的任何方法都是先通過代理找到真實的request,response

對象,然后再執行對應的方法

 

 

 

 

 而最終 request,response 都是存儲在ThreadLocal里面的

 

而這種存儲在threadLocal里面的實現方式對於   請求->單線程處理  的模型是沒問題的,

如果要另開子線程  還得通過參數傳遞這兩個對象,所以我個人覺得還是第一種實現方式比較好

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM