


Struts2核心過濾器不會攔截jsp/html頁面請求
<filter>
<filter-name>struts2</filter-name>
<filter-class>
<!-- 核心過濾器 -->
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<!– url請求匹配規則 -->
<url-pattern>/*</url-pattern>
</filter-mapping>
4、struts2配置文件
<struts>
<package name="firstStruts" extends="struts-default" namespace="/struts">
<action name="action1" class="com.hikvision.finance.business.login.action.LoginAction"></action>
<action name="action2" method="method2" class="com.hikvision.finance.business.login.action.LoginAction">
</action>
<!-- 動態方法調用 -->
<action name="action3!*" method="{1}" class="com.hikvision.finance.business.login.action.LoginAction">
</action>
<action name="action4" method="method4" class="com.hikvision.finance.business.login.action.LoginAction">
<result name="login" type="dispatcher">/views/login.jsp</result>
</action>
</package>
</struts>
5、Struts2攔截器
<package name="json" extends="struts-default" namespace="/" >
<interceptors>
<!-- 定義一個包含權限控制的攔截器 -->
<interceptor name="authority" class="com.hikvision.common.interceptor.AuthorizationInterceptor"/>
<!-- 定義一個包含權限控制的攔截器棧 -->
<interceptor-stack name="IMVSDefault">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="authority" />
</interceptor-stack>
</interceptors>
<!-- 定義默認攔截器 -->
<default-interceptor-ref name="IMVSDefault" />
<!-- 定義全局處理結果 -->
<global-results>
<result name="login" type="redirect">/login.jsp</result>
<result name="noauth">/common/timeout.jsp</result>
</global-results>
</package>
7、過濾器Filter和攔截器Interceptor
8、值棧(ValueStack)
ValueStack實際上就是對OGNL的封裝,OGNL主要的功能就是賦值與取值,Struts2正是通過ValueStack來進行賦值與取值的!
ValueStack是一個接口,而OgnlValueStack是strtus2中的缺省實現。ValueStack中的數據,分兩個部分存放:root和context(這與OGNL中的概念一致),同時ValueStack暴露相關的接口:
- void setValue(String expr, Object value);
- Object findValue(String expr);
用來通過OGNL表達式對ValueStack中的數據進行操作!
ValueStack中的root對象是CompoundRoot,CompoundRoot繼承了ArraryList,提供了額外的方法:push()和pop()方法,用來對root對象中所包含的數據進行存取!