技术开发 频道

Struts2、Spring和Hibernate实例3



八、 配 置Struts2
 
Struts的配置文件都会在web.xml中注册的。

a)         Struts的配置文件如下:

<?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> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <constant name="struts.i18n.encoding" value="GBK" /> <!-- Add packages here --> </struts> Src/struts.xml b) struts_book.xml配置文件如下: <?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="products" extends="struts-default"> <!-- default-interceptor-ref name="validation"/--> <!-- Add actions here -- > <action name="list" class="bookAction" method="list"> <result>/list.jsp</result> </action> <action name="delete" class="bookAction" method="delete"> <result type="redirect">list.action?queryMap=${queryMap} </result> </action> <action name="*" class="com.sterning.commons.AbstractAction"> <result>/{1}.jsp</result> </action> <action name="edit" class="bookAction" method="load"> <result>/editBook.jsp</result> </action> <action name="save" class="bookAction" method="save"> <interceptor-ref name="params"/> <interceptor-ref name="validation"/> <result name="input">/editBook.jsp</result> <result type="redirect">list.action?queryMap=${queryMap}</result> </action> </package> </struts>


    文件中的<interceptor-ref name="params"/>,使 用 了struts2自己的拦截器,拦截器在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问 之 前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。

    Struts 2已经提供了丰富多样的,功能齐全的拦截器实现 。大家可以到struts2-all -2.0.6.jar或struts2-core-2.0.6.jar包的struts-default.xml查看关于默认的拦 截器与拦截器链的配置。
在struts-default.xml中已经配置了大量的拦截器。如果 您想要使用这些已有的拦截器,只需要在应 用程序struts.xml文件中通过“<include file="struts- default.xml" />”将struts-default.xml文 件包含进来,并继承其中的struts-default包
(package), 最后在定义Action时,使用 “<interceptor-ref name="xx" />”引用拦截器或拦截器栈(interceptor stack)。一旦您继承了 struts-default包(package),所有Action都会调用拦截器栈 ——defaultStack。 当然,在Action配置中 加入“<interceptor-ref name="xx" />”可以覆盖defaultStack。

    作为 “框架(framework)”,可扩展性是不可或缺的,因为世上没有放之四海而 皆准的东西。虽然, Struts 2为我们提供如此丰富的拦截器实现,但是这并不意味我们失去创建自定义拦截器的能力,恰恰相反, 在Struts 2自定义拦 截器是相当容易的一件事。所有的Struts 2的拦截器都直接或间接实现接口 com.opensymphony.xwork2.interceptor.Interceptor。 除此之外,大家可能更喜欢继承类 com.opensymphony.xwork2.interceptor.AbstractInterceptor。

0
相关文章