当前位置: 代码迷 >> Web前端 >> webwork 配置文件讲授
  详细解决方案

webwork 配置文件讲授

热度:590   发布时间:2012-11-03 10:57:43.0
webwork 配置文件讲解

webwork配置文件主要有两个:web.xml和xwork.xml

1.webwork.xml:

?????? (1)在webwork2.2之前,一个ServletDispatcher?被用来处理action请求。相关的配置文件如下:

???????<servlet>
?????? <servlet-name>webwork</servlet-name>
?????? <servlet-class>com.opensymphony.webwork.dispatcher.ServletDispatcher</servlet-class>
?????? <load-on-startup>1</load-on-startup>
????? ?</servlet>

?????? <servlet-mapping>
?????? <servlet-name>webwork</servlet-name>
?????? <url-pattern>*.action</url-pattern>
?????? </servlet-mapping>

????? ?<!--如果使用jsp的话配置标签库 -->

?????? <taglib>
????? ?<taglib-uri>webwork</taglib-uri>
????? ?<taglib-location>/WEB-INF/lib/webwork-2.2.6.jar</taglib-location>
????? ?</taglib>

???? ? :<load-on-startup>1</load-on-startup>这个配置是什么含义呢?经过查找它的含义为:容器启动时加载这个servlet的顺序,正常的取值范围是:负数,0-5,如果是负数或者没有这个标签,则容器在启动时不自动加载这个servlet,如果是0-5,则按照顺序加载这个servlet,执行初始化方法init()。数字是0-5,加载顺序也是0-5。

?????? (2)webwork2.2之后可以添加一个单独的过滤器进行配置示例代码如下:

????????<filter>

??????? <filter-name>webwork</filter-name>

??????? <filter-class>com.opensymphony.webwork.dispatcher.FilterDispatcher</filter-class>

??????? </filter>

??????? <filter-mapping>

??????? <filter-name>webwork</filter-name>

????????<filter-url>/*</filter-url>

??????? </filter-mapping>

??????? <listener>
????????<istener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
????????<listener>

?

2.xwork.xml
?? (1)package的配置,package有属性:name(必填)、extends、namespace和abstract

??? 例如:

??? <package name="webnewslist" extends="flxx-default" namespace="/web/news">
??? <action name="list" class="com.founder.sort.view.action.News" method="list">
??? <result name="success" type="dispatcher">/news/list.jsp</result>
??? <result name="error" type="dispatcher">/error.jsp</result>
??? </action>
??? </package>

????其中name要是不填写的话就默认为:" "

??? 对于一个请求例如:/user/my.action

??? 程序首先就去搜索/user命名空间下查找名称为my的action,如果没有就会到命名空间为" "的包中找到my的action

??? 如果请求为:/my.action则程序会去"/"命名空间下查找名称为my的action,如果没有就会到命名空间为""的包中找到my的action

??? (2) 包含的配置:

???? 对于大型的项目如果使用一个xwork.xml配置文件则会造成xwork.xml文件过于庞大,所以webwork允许xwork.xml中再包含其它的xwork.xml配置文件:

???? <work>

???? <include file="user.xml"/>

???? </work>

???? (3)action的配置:

?????<action name="show" class="com.founder.sort.view.action.News" method="show">

?????其中method属性是可选的,它表明的是执行News类中的哪一个方法,如果没有填写该属性,默认执行类中execute()方法,如果execute()方法没有则会报错。

???? 如果class属性没有填写,会默认使用com.opensymphony.xwork.ActionSupport类

???? 当一个指定的action找不到时就会执行默认的action,主要用于一些比较相似的而且简单的action的需求,配置如下??

??? <default-action-ref? name="show"/>

??? (4)结果的配置:

??? <result name="success" type="dispatcher">

?????????? <param name="location">/error.jsp</param>

??? </result>

??? name属性默认为success 、type属性默认为dispatcher、参数名称也是默认为location所以最终可以简写成:

??? <result>/error.jsp</result>

??? (5)拦截器配置

???? <interceptors>
??? ?<interceptor name="securityAdminInterceptor"
????? class="com.founder.sort.uum.SecurityAdminInterceptor" />
??? ?<interceptor name="securityUserInterceptor"
????? class="com.founder.sort.uum.SecurityUserInterceptor" />
???? <interceptor-stack name="securityStack">
???? <interceptor-ref name="defaultStack" />
???? <interceptor-ref name="securityAdminInterceptor" />
???? </interceptor-stack>
??? ?<interceptor-stack name="securityUserStack">
??? ?<interceptor-ref name="defaultStack" />
?? ??<interceptor-ref name="securityUserInterceptor" />
???? </interceptor-stack>
???? </interceptors>

???? (6)前台界面添加:<%@ taglib uri="webwork" prefix="ww"%>就可以使用webwork的标签了。

???

  相关解决方案