1.概述。
在Struts应用启动时,会把Struts配置文件中的配置信息读入到内存中,并把他们放到config包中相关javaBean类的实例 中,org.apache.struts.config包中的每一个类都和Struts配置文件中特定的配置元素对应。例如: <action>元素---->ActionMapping类
<forward>元素---->ActionForward类
2.根元素<struts-config>
<struts-config>元素是Struts配置文件的根元素,和它对应的配置类为org.apche.struts.config.ModuleConfig类。
<struts-config>元素有8个子元素,它的DTD定义如下:
<!ELEMENT struts-config(data-source?,form-beans?,global-exception?,global- forwards?,actionmapping?,controller?,message-resources*,plug-in*)>
定义Struts配置文件,必须按照上面DTD规定的顺序进行配置,否则将报错。
2.1. <data-sources>元素
<data-sources>元素用来配置应用所需要的数据源。
<data-sources>元素包含零个,一个或多个<data-source>子元素。
<data-source>元素用于配置特定的数据源,它可以包括多个<set-property>子元素。
<set-property>元素用于设置数据源的各种属性。例如:
<data-sources>
<data-source type=”org.apche.commons.dbcp.BasicDataSource”>
<set-property property=”autoCommit” value=”true”/>
<set-property property=”description” value=”MySQL Data Source”/>
<set-property property=”driverClass” value=”com.mysql.jdbc.Driver”/>
<set-property property=”maxCount” value=”10”/>
<set-property property=”minCount” value=”2”/>
<set-property property=”user” value=”root”/>
<set-property property=”password” value=””/>
<set-property property=”url” value=”jdbc:mysql://localhost:3306/addressbooksample”/>
</data-source>
</data-sources>
比较流行的数据源:
名称 |
供应商 |
URL |
Poolman |
开放源代码软件 |
|
Expresso |
Jcorporate |
|
JDBC Pool |
开放源代码软件 |
|
DBCP |
Jakarta |
配置完数据源后,就可以在Action类中访问数据源。
在org.apache.struts.action.Action类中定义了getDataSource(HttpRequest)方法,可以用于获取数据源对象的引用。
例如:
public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest
request,HttpServletResponse response) throws Exception{
javax.sql.DataSource dataSource;//定义数据源对象
java.sql.Connection myConnection;//定义联接对象
try{
dataSource=getDataSource(request);//从配置文件中读取数据源信息并进行配置
myConnection=dataSource.getConnection();//建立一个数据源连接实例
}
catch(SQLException sqle){
getServlet().log(“Connection.process”,sqle);
}
finally{
try{
myConnection.close();
}
catch(SQLException e){
getServlet().log(“Connection.close”,e);
}
}// end finally
}//end execute
在配置文件中声明多个数据源的方法:
可以通过为每一个数据源分配唯一的key值,通过该值来标识特定的数据源。例如:
<data-sources>
<data-source key=”A” type=”org.apache.commons.dbcp.BasicDataSource”>
<set-property property=”autoCommit” value=”true”/>
<set-property property=”description” value=”MySQL Data Source”/>
<set-property property=”driverClass” value=”com.mysql.jdbc.Driver”/>
<set-property property=”maxCount” value=”10”/>
<set-property property=”minCount” value=”2”/>
<set-property property=”user” value=”root”/>
<set-property property=”password” value=””/>
<set-property property=”url” value=”jdbc:mysql://localhost:3306/addressbooksample”/>
</data-source>
<data-source key=”B” type=”org.apache.commons.dbcp.BasicDataSource”>
</data-source>
<data-source key=”C” type=”org.apache.commons.dbcp.BasicDataSource”>
</data-source>
</data-sources>
2.2.<form-beans>元素
<form-beans>元素用来配置多个ActionForm Bean。
<form-beans>元素包含零个,一个或多个<form-bean>子元素。每个<form-bean>又包含多个属性:
属性 |
描述 |
className |
指定和<form-bean>元素对应的配置类,默认值为org.apache.struts.config.FormBeanConfig,如果在这里设置自定义的类,该类必须扩展FormBeanConfig类。 |
Name |
指定该ActionForm Bean的唯一标识符,整个Struts框架用标识符来引用这个Bean,该属性是必须的。 |
Type |
指定ActionForm类的完整名,该属性是必需的。(在配置type属性时,必须给出ActionForm类的完整类名,即包括类的包名。) |
<form-beans>
<form-bean name="wfcm1010Form"
type="jp.co.bsnnet.sofia.web.forms.keiyaku.wfcm1000.Wfcm1010Form">
</form-bean>
</form-beans>
2.3.<global-exceptions>元素
该元素主要配置异常处理,它的exception子元素代表全局的异常配置。
2.4 <global-forwards>元素
该元素主要用来声明全局的转发关系,它具有以下四个属性:
2.5 <action-mappings>元素
描述从特定的请求路径到相应的Action类的映射。
2.5.1 attribute:设置和Action关联的ActionForm Bean在request和session范围内的key.
2.5.2 classsName:和action元素对应的配置元素,默认为:org.apache.struts.action.ActionMapping.
2.5.3 forward:转发的URL路径。
2.5.4 include:指定包含的URL路径。
2.5.5 name:指定和Action关联的Action FormBean的名字,该名字必须在Form-Bean定义过。
2.5.6 input:输入表单的URL路径,当表单验证失败时,将把请求转发到该URL。
2.5.7 path:指定访问Action的路径,以“/”开头,无扩展名。
2.5.8 parameter:指定Actgion的配置参数,在Action类的execute()方法中,可以调用ActionMapping对象的getParameter()方
法来读取该配置参数。
2.5.9 scope:指定ActionForm Bean的存在范围,可选取为request和session,默认为session。
2.5.10 type:指定Action类的完整类名
2.5.11 validate:指定是否要调用Action FormBean的validate方法,默认值为ture.
注:forward、include、type属性只能选中其中一项。