xwork.xml相当于 struts1里面的struts-config.xml 是配置具体的action用的
下面是caveatemptor的xwork.xml的配置
<xwork>
<include file="webwork-default.xml"/>
<include file="config-browser.xml"/>
<package name="default" extends="webwork-default">
<interceptors>
<interceptor name="auth" class="org.hibernate.auction.web.interceptors.AuthenticationInterceptor"/>
</interceptors>
<global-results>
<result name="login" type="redirect">/login!default.action</result>
<result name="invalid.token">/invalidToken.jsp</result>
</global-results>
</package>
<include file="xwork-public.xml"/>
<include file="xwork-secure.xml"/>
</xwork>
<include file="webwork-default.xml"/>
是包含webwork的默认配置 webwork为了 <include> 增加了模块化配置这一理念 不同的模块我们可以放在不同的配置文件中 最后用
include包含到xwork.xml中
如caveatemptor的xwork.xml中就包含
<include file="webwork-default.xml"/>
<include file="config-browser.xml"/>
<include file="xwork-public.xml"/>
<include file="xwork-secure.xml"/>
四个文件
其中webwork-default.xml 是包含webwork的默认配置 webwork-default.xml中包含了webwork中 一些result-types
interceptors 以及interceptors-stack的定义 此处包含进来是为了<package name="default" extends="webwork- default"> default包 继承 webwork-default.xml中的一些定义 那么 在default包中就不需要重新定义了 而是直接应用就可以了
一般的项目中都会包含webwork-default.xml 然后在自己定义的包中 继承webwork-default(这是webwork-default.xml中的一个包名具体看查看源代码)
然后是package ,package中包含了一些action
<interceptors>
<interceptor name="auth" class="org.hibernate.auction.web.interceptors.AuthenticationInterceptor"/>
</interceptors>
除了调用webwork原有的拦截器外 可以自己定义连接器
<global-results>
<result name="login" type="redirect">/login!default.action</result>
<result name="invalid.token">/invalidToken.jsp</result>
</global-results>
顾名思义 这是一个公共的result定义 在包内的action均可以 转向这两个result 即所有的action代码中 均可 return "login"
xwork-public.xml和xwork-secure.xml均继承了default这个package 所以他们中的所有action 都可以调用(配置)default包
中的 inteceptor和 result
下面单独来说说 各个元素的配置
<action name="search" class="org.hibernate.auction.web.actions.Search">
<interceptor-ref name="default"/>
<interceptor-ref name="execAndWait"/>
<result name="wait">search-wait.jsp</result>
<result name="success" type="redirect">moreResults.action</result>
</action>
与struts1大致相同的 在此不多赘述 <interceptor-ref name="default"/>
<interceptor-ref name="execAndWait"/>
在执行这个action 之前 会执行这两个 拦截器
拦截器除了在这里配置之外 还可以在package中 <default-interceptor-ref name="default"/>这样配置
当action中配置了拦截器时 只执行action中的拦截器 否在 执行 <default-interceptor-ref 》
result是此action中可以返回的页面表示
还有<global-results>
<result name="login" type="redirect">/login!default.action</result>
<result name="invalid.token">/invalidToken.jsp</result>
</global-results>
公共的
以name.action来说明 访问 出action类中 excute方法之外的方法 如同一个模块的增删改查如果定义在不同的action中 就显得有些多 有些杂
webwork提供了 完美的解决
只需访问 name!method.action 就可以 执行name.action 中的method这个方法