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对象中所包含的数据进行存取!