EL和ValueStack對象

 

EL和ValueStack對象

ValueStack介紹

值棧,存儲數據容器。

值:存儲數據有,request(2種類型對象)、session(2種)、application(2種)、action、parameters等

棧:存儲涉及了棧結構。

ValueStack底層有root棧和context Map存儲區。通過ognl工具包對兩個存儲區進行存取操作。ognl工具需要藉助OGNL表達式使用。

"name":訪問ValueStack中root值棧中存儲的對象name屬性

"#session":訪問ValueStack中context儲存的key爲session的對象

ActionContext和ServletActionContext是訪問ValueStack中context存儲區的工具API。

EL表達式爲什麼能訪問到Action屬性值?

JSP中${error}-->request.getAttribute("error").

Struts2框架底層將request做了封裝,重寫了底層的getAttribute方法,底層首先去原有request中獲取,如果沒有就去ValueStack的root棧的action獲取同名屬性值。

Struts2攔截器

Struts2攔截器可以在Action調用前和Result調用後進行邏輯的切入。

攔截器編寫規則

編寫攔截器需要實現Interceptor接口及其約定的方法。

攔截器配置規則

<interceptors>
    <interceptor name="someInterceptor" class="xxx"/>
</interceptors>

<action name="xxx" class="xxx">
    <interceptor-ref name="someInterceptor"/>
</action>

底層利用<default-interceptor-ref name="defaultStack"/>配置,爲所有action指定了一個默認攔截器.如果爲action元素追加了<interceptor-ref>,默認defaultStack將不再調用,這樣會破壞原有很多流程功能。需要將defaultStack顯示定義追加。

攔截器主要做通用功能封裝,例如登錄檢查、參數接收等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章