<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"><struts>
<package name="default" extends="struts-default" namespace="/">
<!--
定义拦截器验证用户是否已经登录登陆后方可访问
-->
<interceptors>
<interceptor name="checkLogin" class="com.chaoshi.no21.actions.Interceptor.checkLoginInterceptor">
</interceptor>
</interceptors>
<!--
顶一个默认的Action方法。如果没找到对应的action则执行这个NotFound action
--><default-action-ref name="notFound" />
<!--
定义全局结果集 login 返回登录界面
-->
<global-results>
<result name="login">/WEB-INF/packages/login.jsp</result>
</global-results><!--
防止用户乱输入网址发生异常的action
--><action name="notFound">
<result>/WEB-INF/packages/login.jsp</result>
</action><!--
登录action
--><action name="Login" class="com.chaoshi.no21.actions.LoginAction">
<result name="success">/WEB-INF/packages/menu.jsp</result>
</action>
</package>
<package name="itmeAction" extends="struts-default" namespace="/">
<action name="item_*" class="com.chaoshi.no21.actions.ItemAction" method="{1}">
<result name="add">/WEB-INF/packages/itemAdd.jsp </result>
<result name="update">/WEB-INF/packages/itemModify.jsp</result>
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="checkLogin"></interceptor-ref>
</action>
</package>
<package name="link" namespace="/" extends="struts-default">
<action name="category_*" class="com.chaoshi.no21.actions.CategorryAction" method="{1}">
<result name="add">/WEB-INF/packages/categoryAdd.jsp</result>
<result name="update">/WEB-INF/packages/categoryModify.jsp</result>
</action>
</package>
</struts>
我在第一个package中装配拦截器 其他的package 中的action能不能用得到。作用范围是只有一个package还是整个struts.xml都有效比如上面的 我在package name="default"中配置了拦截器但是没有加到action中使用
<package name="default" extends="struts-default" namespace="/">
<!--
定义拦截器验证用户是否已经登录登陆后方可访问
-->
<interceptors>
<interceptor name="checkLogin" class="com.chaoshi.no21.actions.Interceptor.checkLoginInterceptor">
</interceptor>
</interceptors>
<!--
顶一个默认的Action方法。如果没找到对应的action则执行这个NotFound action
--><default-action-ref name="notFound" />
<!--
定义全局结果集 login 返回登录界面
-->
<global-results>
<result name="login">/WEB-INF/packages/login.jsp</result>
</global-results><!--
防止用户乱输入网址发生异常的action
--><action name="notFound">
<result>/WEB-INF/packages/login.jsp</result>
</action><!--
登录action
--><action name="Login" class="com.chaoshi.no21.actions.LoginAction">
<result name="success">/WEB-INF/packages/menu.jsp</result>
</action>
</package>而使用的地方时是另一个package中使用 代码如下<package name="itmeAction" extends="struts-default" namespace="/">
<action name="item_*" class="com.chaoshi.no21.actions.ItemAction" method="{1}">
<result name="add">/WEB-INF/packages/itemAdd.jsp </result>
<result name="update">/WEB-INF/packages/itemModify.jsp</result>
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="checkLogin"></interceptor-ref>
</action>
</package>
你在package name="default"中配置的拦截器在这个包中的action也得重新定义: <interceptor-ref name="checkLogin"></interceptor-ref>
如果你将这个interceptor设置为默认的,那么每一个action都会自动调用了。
<package name="default" extends="struts-default" namespace="/">
<package name="itmeAction" extends="struts-default" namespace="/">
你看看你的两个package,这两个package其实就等于一个。这两个拦截器的范围都是所有action
<package name="default" extends="struts-default" namespace="/a">
<package name="itmeAction" extends="struts-default" namespace="/b">这样是别的就是各自namespace下的action了。
我在第一个package中装配拦截器 其他的package 中的action能不能用得到。作用范围是只有一个package,
如果其他包要使用这个interceptor就得继承这个包。