`
ericyang
  • 浏览: 5936 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

理解webwork配置文件

阅读更多
理解webwork配置文件的作用和配置方法

这么多配置文件,头都晕了。到底每个配置文件都干么用的呢?
1、先了解一下web.xml
该文件是web服务器启动的时候调用的一个配置文件,我们需要在这个配置文件中告诉web服务器,在启动的时候,还需要加载启动哪些东西。上述的web.xml中,
我们启动了velocity,对应的类文件是:com.opensymphony.webwork.views.velocity.WebWorkVelocityServlet。
还启动了webwork,对应的类文件是:com.opensymphony.webwork.dispatcher.ServletDispatcher。
并且我们在这个配置文件中定义了servlet映射:*.action结尾的servlet请求,都交给webwork即com.opensymphony.webwork.dispatcher.ServletDispatcher这个servlet去处理。
所有*.vm结尾的servlet请求都由velocity即com.opensymphony.webwork.views.velocity.WebWorkVelocityServlet这个类去处理。
并且告诉web服务器,我们引用了一个webwork的taglib库,该库所在的位置是:/WEB-INF/lib/webwork-2.1.7.jar。(注:jbulder编译的时候,会自动将webwork-2.1.7.jar拷贝到WEB-INF/lib/目录下)
2、xwork.xml
xwork.xml是webwork的核心配置文件的所在了。这个文件在web服务器启动的时候调用。具体的来说,该文件是在webflow这个部分的 com.opensymphony.webwork.webFlow.XworkConfigRetriever.java这个类中初始化的时候调用。
Xwork.xml文件的作用就是要告诉服务器的webwork解释器,遇到什么样子的action请求,要到哪个类中去调用相关的方法。举个例子来说,假如有一个请求action叫做/userList.action,那么xwork.xml就负责告诉webwork解释器,当请求这个action的时候,要到com.lovefanx.action.user.UserAction这个类去寻找相应的方法。
来看一个简单的xwork的配置文件:
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd">
<xwork>
<!--UserAction Config,Path is:user-->
<package name="User" extends="webwork-default" namespace="/user">
<!--Get User List-->
<action name="userList" class="com.lovefan.action.user.UserAction" method="list">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="loginCheck" />
<result name="success" type="dispatcher">
<param name="location">/user/user/userList.jsp</param>
</result>
</action>
</xwork>

在这个webwork配置文件中,我们首先定义了一个package,包。这个包其实是一个逻辑概念。它仅对于webwork负责。包的作用就是将一些 或者一组action放在同一个逻辑区域。当需要调用对应的action的时候,需要加上包定义中的namespace(名称空间)属性值。
就拿上述的例子来说,其中定义了一个包叫做User,其名称空间是/user。在这个包中定义了一个action,叫做userList,这个action的method是 list,对应的action类是com.lovefan.action.user.UserAction。那么,当浏览器请求/user/userList.action的时候,webwork解释器就会根据这个配置,去 访问com.lovefan.action.user.UserAction这个类中的list方法。那么在这个调用中,webwork会先调用一个叫做defaultStack的拦截器,然后调用一个 叫做loginCheck的拦截器,然后才会调用UserAction的list方法,如果list方法返回success,那么web服务器将浏览器定向到/user/userList.jsp去。
不妨来看看UserAction.java这个类的list方法:
public class UserAction extends CIMSActionSupport{
public UserAction() {
}
public String list(){
UserDAO userDAO = new UserDAO();
this.page = new PageSplit(userDAO.getCount(),this.pageNo);
userBeanList = userDAO.findAll(this.page.getStartRecord(),this.page.getPageSize());
return SUCCESS;
}
}

这样,根据一个servlet请求,webwork就可以通过ServletDispacher这个总管,去调用相关的UserAction类,并且知道需要调用的方法是哪一个。 可见xwork文件的职责所在。
Xwork.xml还有一个巨大的好处,就是他可以用嵌套的方式来进行配置。这样就很适合用于团队开发。不同的人员编写自己那个部分的配置文件, 最后统一通过嵌套文件名称的方式,合成到xwork.xml中来。特别简单,下面来看一个xwork..xml嵌套其他配置文件的例子。
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd">
<xwork>
<include file="webwork-default.xml"/>
<include file="com/lovefan/config/user.cfg.xml"/>
<include file="com/lovefan/config/security.cfg.xml"/>
</xwork>

一个配置文件中,是可以描述说明多个Action的。
3、Webwork-default.xml文件
我们在xwork.xml文件例子中,看到了这个webwork-default.xml文件被嵌套到了xwork.xml中。这个default文件是webwork提供的,它描述了webwork在工作过程中用到的各个Servlet的返回值类型、各拦截器的名称及其相对应的类 。
4、Webwork.properties
这个文件定义了一些webwork工作过程中的全局性的值。
例如webwork.locale=zh_CN
webwork.multipart.saveDir=\temp #定义当文件上传的时候,临时文件目录
webwork.multipart.maxSize=12345 #定义可以上传的文件的最大大小。
webwork.velocity.tag.path = com.opensymphony.webwork.views.velocity.ui, org.displaytag.tags
webwork.xslt.nocache=false #定义对于xslt程序,不使用cache
webwork.ui.templateDir = template #定义了webwork的ui模板库的目录
webwork.i18n.encoding = GBK #定义webwork运行时数据传输过程中数据的编码格式
5、Velocity.properties
定义webwork中使用velocity模版库得方式。
velocimacro.library = webwork.vm, tigris-macros.vm #包含两个库webwork.vm和tigris-macros.vm
input.encoding=GB2312 #模版文件输入编码为GB2312
output.encoding=GB2312 #模版文件输出编码为GB2312
default.contentType=text/html; charset=GB2312 #默认的文件contentType类型为以GB2312编码的html文件
6、Validators.xml
这个配置文件是用来配置数据校验用的。在这个文件中定义了各中名称的校验器对应的校验处理的类。这些都是webwork的release版本中已经提供了的校验器。我们可以不用配置该文件,直接copy过来就用了。
但是如果你觉得webwork提供的这些校验器还不够用的话,那么就要自己定义或者开发相关的校验类,并且将对应的配置加到这个validators.xml文件中来。
到此,webwork使用的配置文件基本都介绍完了,相信仔细阅读了上述内容以后,一定会对webwork的配置文件有了一个比较全面的认识,并且对webwork的工作原理也有了一定的了解。下面让我们更加深入的来了解一下在webwork中,jsp程序,java类、这些开发者自己开发的程序之间的调用关系。
分享到:
评论

相关推荐

    03解决struts2配置文件无提示问题

    Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...

    Java求职面试宝典各大公司常考知识点

    1.6. hibernate中一对多配置文件返回的是什么? 4 1.7. update()和saveOrUpdate()的区别? 4 1.8. hibernate拒绝连接、服务器崩溃的原因?最少写5个 4 1.9. hibernate如何管理缓存 4 1.10. 使用Hibernate的优点...

    spring in action英文版

     9.4.3 产生其他非HTML文件  9.5 小结  第10章 使用其他Web框架  10.1 使用Jakarta Struts  10.1.1 注册Spring插件  10.1.2 实现知晓Spring的Struts action  10.1.3 委托action  10.2 使用...

    计算机科学系毕业设计论文范文

    在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器负责将这些联系在一起。其原理是基于OO设计原则的The Hollywood Principle:Don't call us, we'll call you(别找我,我会来找你...

    Spring in Action中文版 清晰pdf part2

    附录A介绍如何开始自己的Spring应用系统,如何下载Spring以及如何编写Ant配置文件。附录B介绍一些与Spring有关的其他开源框架。本书的每一部分既是建立在前一部分的基础上,同时也都是独立存在的,所以,读者不必...

    Spring in Action中文版 清晰pdf part1

    附录A介绍如何开始自己的Spring应用系统,如何下载Spring以及如何编写Ant配置文件。附录B介绍一些与Spring有关的其他开源框架。本书的每一部分既是建立在前一部分的基础上,同时也都是独立存在的,所以,读者不必...

    java初学者的工具ppt文件

    初学Java,不建议用IDE工具,通过一行行的敲代码,你会碰到很多问题,只有这样,你才能学会怎样解决问题,并加深自己对Java的理解。 准备好后,开始进入激动人心的Java学习里程吧! 3. Java基础学习之路 学习Java的...

    Spring in Action(第2版)中文版

    16.2协同使用spring和webwork2/struts2 16.3集成spring和tapestry 16.3.1集成spring和tapestry3 16.3.2集成spring和tapestry4 16.4协同使用spring和jsf 16.4.1解析jsf管理的属性 16.4.2解析springbean 16.4.3...

    Spring in Action(第二版 中文高清版).part2

    16.2 协同使用Spring和WebWork 2/Struts 2 16.3 集成Spring和Tapestry 16.3.1 集成Spring和Tapestry 3 16.3.2 集成Spring和Tapestry 4 16.4 协同使用Spring和JSF 16.4.1 解析JSF管理的属性 16.4.2 解析Spring...

    Spring in Action(第二版 中文高清版).part1

    16.2 协同使用Spring和WebWork 2/Struts 2 16.3 集成Spring和Tapestry 16.3.1 集成Spring和Tapestry 3 16.3.2 集成Spring和Tapestry 4 16.4 协同使用Spring和JSF 16.4.1 解析JSF管理的属性 16.4.2 解析Spring...

    Spring-Reference_zh_CN(Spring中文参考手册)

    配置子报表文件 14.7.4.2. 配置子报表数据源 14.7.5. 配置Exporter的参数 15. 集成其它Web框架 15.1. 简介 15.2. 通用配置 15.3. JavaServer Faces 15.3.1. DelegatingVariableResolver 15.3.2. FacesContextUtils ...

    Spring中文帮助文档

    15.6. WebWork 15.7. 更多资源 16. Portlet MVC框架 16.1. 介绍 16.1.1. 控制器 - MVC中的C 16.1.2. 视图 - MVC中的V 16.1.3. Web作用范围的Bean 16.2. DispatcherPortlet 16.3. ViewRendererServlet 16.4....

    Spring API

    15.6. WebWork 15.7. 更多资源 16. Portlet MVC框架 16.1. 介绍 16.1.1. 控制器 - MVC中的C 16.1.2. 视图 - MVC中的V 16.1.3. Web作用范围的Bean 16.2. DispatcherPortlet 16.3. ViewRendererServlet 16.4....

    spring chm文档

    9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 插入事务操作 9.5.8. ...

    freemarker总结

    这里所说的空值,实际上也包括那些并不存在的变量,对于一个Java的 null值而言,我们认为这个变量是存在的,只是它的值为null,但对于FreeMarker模板而言,它无法理解null值,null值和不存在的变 量完全相同. 为了处理缺失...

    Spring 2.0 开发参考手册

    9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 插入事务操作 9.5.8. ...

Global site tag (gtag.js) - Google Analytics