第二章 认识PStruts的配置文件
上一篇静煊架构核心组件之一——PStruts(原NStruts2.0)倾情发布,描述了PStruts的由来,并提供有源码和Demo下载,这章将讲解PStruts配置文件各功能的使用。
配置文件是核心内容的一部分,PStruts2.0支持多配置文件共同协作。在PStruts中,配置文件不是必需的,如果有配置文件,就必需要有一个主配置文件。主配置文件的名字叫“pstruts.xml”,保存在应用程序的根目录下。在配置文件中,有几种类型的结点只有在主配置文件中才会生效。
1. <includes/>:includes结点用于配置其它子配置文件的路径,用法如下:
<include file=”nstruts-1.xml”/>
……
</includes>
结点属性file是子配置文件的路径。
2. <assemblys/>:assemblys结点用于配置要使用到的程序集信息,用法如下:
<assembly name=”assembly” path=”com.xxx.xxx”/>
</assemblys>
结点属性name是程序集在配置文件中使用的名字,path是程序集的路径。
3. <global-results/>:global-results结点用于配置全局的重定向映射,用法如下:
<result name=”success”>Default.aspx</result>
</global-results>
result结点属性name与Action中的Execute方法返回值匹配,实现自动重定向。
4. <reflesh/>:reflesh结点用于提示框架是否自动刷新配置文件,这个结点在开发过程中或在程序运行过程中修改了
配置文件后能自动刷新内存中的配置文件信息,用法如下:
结点属性auto提示是否自动刷新内存中已经存在的配置文件信息。
下面介绍的结点可以在所有的配置文件中出现,相同的结点会被后面定义的结点所覆盖,结点中使用到类名均是类的全名(即包含命名空间)。
1. <forms/>结点,用于配置保存表单数据的实体类,这个结点并不是必需的,表单数据可以直接保存在Action中。
如果表单数据比较多或比较复杂时,推荐使用单独的实体类保存表单数据。用法如下:
<form name=”form1” assembly=”assembly1” class=”xxx.xxx”/>
</forms>
结点属性name是form的使用名,属性assembly是assemblys结点配置的程序集使用名,属性class是form实体类的全名。
2. <models/>结点,用于配置实体类,向Action提供对象依赖注入。用法如:
<model name=”model1” assembly=”assembly1” class=”xxx.xxx”/>
</models>
结点属性name是实体类的使用名,属性assembly是assemblys结点配置的程序集使用名,属性class是实体类的全名。
3. <actions/>结点,是配置文件的核心结点,用于配置页面发出的action请求的业务逻辑。用法如下:
<action name=”action1” assembly=”assembly1” form=”form1” class=”xxx.xxx” >
<result name=”success”>/Success.aspx</result>
</action>
</actions>
结点属性name是Action的使用名,属性assembly是assemblys结点配置的程序集使用名,属性class是Action类的全名,属性form是设置使用form保存表单数据,是可选属性。子结点<result/>和<global-results/>结点的子结点相同,用于配置Action的重定向路径,如果没有添加相应的<result/>子结点,则查找<global-results/>结点的<result/>子结点,如果还是没有匹配的<result/>结点,程序则返回到调用方法体。如果<result/>结点与<global-results/>结点的子结点重名,则优先使用Action的<result/>子结点。
4. <iocs/>结点,用于配置Action的依赖注入,也只有Action才能配置依赖注入。用法如下:
<ioc name=”action1”>
<property name=”ObjectDao”>
<ref name=”model1”/>
</property>
<property name=”ConstVarList”>
<const value=”x”/>
<const value=”x”/>
</property>
</ioc>
</iocs>
结点中,ioc子结点属性name是要依赖注入的action使用名,property子结点属性name对应action实例的属性名,是区分大小写的,ref是对象注入,
属性name,是model使用名,const是常量注入,属性value是注入的值。依赖注入支持混合注入,泛型和非泛型注入,暂时还不支持字典注入。
我要崩溃了,一发表文章,格式就全乱套了。