最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

spring mvc中直接注入的HttpServletRequst安全嗎

 更新時間:2018年04月10日 09:40:08   作者:何錦彬  
這篇文章主要給大家介紹了關(guān)于spring mvc中直接注入的HttpServletRequst是不是安全的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。

HttpServletRequest介紹

HttpServletRequest對象代表客戶端的請求,當(dāng)客戶端通過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當(dāng)住參數(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何處來?

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

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

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

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

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

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

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

最新評論

遵化市| 福州市| 邢台县| 克山县| 射阳县| 柘城县| 中宁县| 曲水县| 沂水县| 荥阳市| 汉沽区| 灵丘县| 孝感市| 通海县| 秭归县| 林州市| 右玉县| 临湘市| 祥云县| 蛟河市| 永仁县| 新绛县| 伊吾县| 夏邑县| 北票市| 徐汇区| 大同市| 清原| 绍兴县| 南漳县| 中山市| 黑河市| 桐梓县| 江安县| 鄂托克前旗| 临漳县| 广丰县| 仁怀市| 牙克石市| 辽宁省| 赞皇县|