真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

springmvc中直接注入HttpServletRequst是不是安全的

這篇文章主要為大家展示了“spring mvc中直接注入HttpServletRequst是不是安全的”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“spring mvc中直接注入HttpServletRequst是不是安全的”這篇文章吧。

10年積累的成都網(wǎng)站建設(shè)、成都網(wǎng)站制作經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有桐柏免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

HttpServletRequest介紹

HttpServletRequest對象代表客戶端的請求,當客戶端通過HTTP協(xié)議訪問服務(wù)器時,HTTP請求頭中的所有信息都封裝在這個對象中,通過這個對象提供的方法,可以獲得客戶端請求的所有信息。

引言

本文主要介紹的是關(guān)于spring mvc直接注入HttpServletRequst安全的相關(guān)內(nèi)容,看似很簡單的一個問題,借此追蹤下spring的源碼處理

在寫springMVC的Control中有很多這種代碼, 如需要獲取request對象去做某些事情

如:

@Controller
@RequestMapping(value = "/user")
public class LoanActionPage extends AbstractAction {
@RequestMapping(value = "/page/active")
public String loanAaccountActivePage(HttpServletRequest request) {
// get request to dosomething
String pathInfo = request.getPathInfo();
return "active";
}
}

貌似每次要寫個control時都得把request當住參數(shù)來傳,很是冗余。

其實可以在control里定義一個request對象,注入,然后隨時用

如:

public class AbstractAction {
 @Autowired
protected HttpServletRequest request;
... ...

然后在control中直接用:

@Controller
@RequestMapping(value = "/user") 
public class LoanActionPage extends AbstractAction {

@RequestMapping(value = "/page/active") 
public String loanAaccountActivePage() { 
// get request to dosomething
String pathInfo = request.getPathInfo();
return "active"; 
}
}

那么問題來了,sevlet是多線程的,每次請求的request其實是個新的對象,這樣直接共享引用,是否會造成線程不安全呢?

方便了,問題也來了,servelt其實是多線程,共享一個request是否會有安全問題呢,分析下spring的代碼

1, 注入的request何處來?

spring mvc中直接注入HttpServletRequst是不是安全的

發(fā)現(xiàn)是注入其實是往WebApplicationContextUtils通過RequestObjectFactory拿值,跟蹤

spring mvc中直接注入HttpServletRequst是不是安全的

返回的是RequestContextHolder里的值. 追蹤RequestContextHolder

spring mvc中直接注入HttpServletRequst是不是安全的

每次返回的其實是, RequestAttributes的實現(xiàn)類ServletWebRequest(ServletRequestAttributes)里的request. 因為RequestAttributes是屬于threadLocal的,所以注入的request也是線程安全的了

2, spring何時設(shè)置的request對象?

HttpServlet實現(xiàn)類 FrameworkServlet-> service()->processRequst()

spring mvc中直接注入HttpServletRequst是不是安全的

每次請求都會往里面設(shè)置最新的request, 設(shè)值

以上是“spring mvc中直接注入HttpServletRequst是不是安全的”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)頁標題:springmvc中直接注入HttpServletRequst是不是安全的
當前鏈接:http://weahome.cn/article/geocdi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部