struts框架值棧問題七之EL表達式也會獲取到值棧中的數據
阿新 • • 發佈:2018-12-16
getattr bject style 包裝 red 過濾 t對象 color request對象
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棧中查找。
struts框架值棧問題七之EL表達式也會獲取到值棧中的數據