91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-09-10 13:42:40 來源:億速云 閱讀:168 作者:小新 欄目:編程語言

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

HttpServletRequest介紹

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

引言

本文主要介紹的是關于spring mvc直接注入HttpServletRequst安全的相關內容,看似很簡單的一個問題,借此追蹤下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當住參數來傳,很是冗余。

其實可以在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是不是安全的

發現是注入其實是往WebApplicationContextUtils通過RequestObjectFactory拿值,跟蹤

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

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

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

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

2, spring何時設置的request對象?

HttpServlet實現類 FrameworkServlet-> service()->processRequst()

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

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

以上是“spring mvc中直接注入HttpServletRequst是不是安全的”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

台州市| 威远县| 鹰潭市| 乌什县| 耒阳市| 嵩明县| 东乡族自治县| 芷江| 武清区| 和政县| 万盛区| 屏南县| 杨浦区| 江源县| 区。| 赤城县| 泰宁县| 侯马市| 长武县| 绥宁县| 东兰县| 通化市| 鸡东县| 凤庆县| 吉木萨尔县| 九龙县| 弥渡县| 齐齐哈尔市| 牙克石市| 九江县| 中江县| 乐平市| 肃宁县| 安龙县| 玉环县| 綦江县| 闸北区| 南丰县| 甘南县| 铜鼓县| 华阴市|