struts框架值棧問題七之EL表示式也會獲取到值棧中的資料
阿新 • • 發佈:2018-12-15
7. 問題七:為什麼EL也能訪問值棧中的資料?
* StrutsPreparedAndExecuteFilter的doFilter程式碼中 request = prepare.wrapRequest(request);
> 對Request物件進行了包裝 ,StrutsRequestWrapper
> 增強了request的 getAttribute
Object attribute = super.getAttribute(s);
if (attribute == null) {
attribute = stack.findValue(s);
}
> 訪問request範圍的資料時,如果資料找不到,去值棧中找
> request物件 具備訪問值棧資料的能力 (查詢root的資料)
在過濾器中對request進行了加強。要是訪問request中的資料,要是找不到的話,會預設到值棧中去找。
在過核心過濾器的時候,對request進行了加強,對request中的getAttribute查詢屬性方法進行了加強。怎麼加強了?如果在request域中找不到資料,會預設到值棧中去查詢。EL表示式在查詢域中的資料時,如果找不到,會去值棧中去查詢,並且去root棧中查詢。