struts-config.xml配置文件详解 (元素顺序和大概功能)
元素顺序
struts 配置文件struts-config.xml中的元素是有有严格的顺序,如果元素的顺序出错,系统会抛出错误,程序启动失败。正确的顺序如下:
<struts−config>
<data−sources>
<data−source>
</data−source>
</data−sources>
<form−beans>
<form−bean />
</form−beans>
<global-exceptions>
<exception />
</global-exceptions>
<global−forwards>
<forward />
</global−forwards>
<action−mappings>
<action/>
</action−mappings>
<controller />
<message−resource />
<plug−in />
</struts−config>
配置文件讲解
XML定义
<?xml version="1.0" encoding="UTF-8" ?>
DTD定义
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
struts−config
<struts-config> 是struts的根元素,它主要有8个子元素,其它元素皆是其子元素
data−sources
<date-sources>元素用来配置应用程序所需要的数据源,可配置多数据源。java语言提供了javax.sql.DateSource接口,所有数据源必须实现该接口。如下配置:
<data-sources>
<!-- key是不同数据源的标识 -->
<data-source key="a" type="org.apached.commons.dbcp.BasicDataSource">
<!--所用的JDBC驱动类,必须-->
<set-property property="driverClass" value="com.mysql.jdbc.Driver"/>
<!--所用的JDBC的URL,必须-->
<set-property property="url" value="jdbc:mysql://localhost/test"/>
<!--连结到数据库的用户名,必须-->
<set-property property="user" value="root"/>
<!--连结到数据库的密码,必须-->
<set-property property="password" value="root"/>
<!--同时打开的最小连结数,缺省值为1,可选-->
<set-property property="minCount" value="1"/>
<!--同时打开的最大连结数,缺省值为2,可选-->
<set-property property="maxCount" value="5"/>
<!--关于DataSource的描述信息(可选的)-->
<set-property property="description " value="...."/>
<!--如果设为true,则表示该连结是只读的,缺省为false。(可选的)-->
<set-property property="readOnly" value="true"/>
<!--创建连结的最大允许时间,以秒为单位。(可选的)-->
<set-property property="loginTimeout" value="10"/>
<!--如果为true,则每次execute之后会强制回滚。缺省为true。(可选的)-->
<set-property property="autoCommit" value="true"/>
</data-source>
<data-source key="b" type="org.apached.commons.dbcp.BasicDataSource">
………………
</data-source>
</data-sources>
此元素我基本没用过,都是在其它配置文件中进行配置
form−beans
<form−beans>元素用来配置绑定到Action的各个FormBean的实例。每个FormBean实例用form-bans的子元素form-bean来定义。form-bean又分普通的FormBan和动态FormBean。
-
普通form-bean
普通FormBean需要定义一个JavaBean类,在form-bean元素中指定该类。定义格式如下:<form-beans> <form-bean name="LoginForm" type="com.login.forms.LoginForm"/> </form-beans>
- classname :指定和form-bean无素对应的配置类,默认为org.apache.struts.config.FormBeanConfig,如果自定义,则必须扩展FormBeanConfig类。可有可无。
- name:ActionForm Bean的惟一标识。必须。
- type:FormBean对应JavaBean类的全路径。必须。
-
动态form-bean
动态form-bean不需要定义对应的javabean类,其元素都在struts-config.xml中定义。定义格式如下:<form-bean name="LoginForm" type="org.apache.struts.validator.DynaValidatorForm"> <form-property name="userName" type="java.lang.String"/> <form-property name="password" type="java.lang.String"/> <form-property name="age" type="java.lang.Integer" initial="20"/> </form-bean>
- name:ActionForm Bean的惟一标识。必须。
- type:此为指定 org.apache.struts.validator.DynaValidatorForm。
- initial:以字符串的形式设置表单字段的初始值,如果没有设置该属性,则是基本类型为0,如果是对象则为null。可有可无。
global-exceptions
<global−forwards>元素主要配置异常处理,它的exception子元素代表全局的异常配置。struts采取配置的方式来处理异常。它用来设置java异常和异常处理类org.apache.struts.action.ExceptionHandler之间的映射。格式如下:
<global-exceptions>
<exception key="ExceptionID"
type="java.lang.Exception"
scope="request"
path="/global_error.jsp"/>
</global-exceptions>
- className:指定和exception元素对应的配置类,默认为org.apache.struts.config.ExceptionConfig。可有可无。
- Handler:指定异常得理类,默认为:org.apache.struts.action.ExceptionHandler。可有可无。如果要自定义的异常处理,则需指定到自定义的异常处理类的路径上。
- key:指定在Resource Bundle中描述该异常的消息key,唯一标识
- path:指定当异常发生时的转发路径。
- scope:指定ActionMessages实例的存放范围,可选值包括:request和session,默认为request。可有可无。
- type:指定所需处理异常类的路径,必须。
- bundle:指定Resource Bundle,可有可无
global−forwards
<global−forwards>元素用于配置全局转发,struts首先会在元素中找对应的<forward>,若找不到,则到全局转发配置中找。它包含0个或多个元素,格式如下所示:
<global-forwards>
<forward name="failed" path="/error.jsp" />
<forward name="success" path="/success.jsp" />
</global-forwards>
- name:转发的唯一的名称
- path:转发指向资源的相对路径
注意:此元素还有一个redirect属性,其默认值为false,如果redirect设为true的时候,则用HttpServletResponse.sendRedirect()方法,否则用RequestDispatcher.forward()方法,缺省为false。
action−mappings
<action−mappings>元素用于描述从特定的请求路径到相应的Action类的映射。示例如下:
<action-mappings>
<!-- ==================== LOGIN/LOGOUT ==================== -->
<action path = "/login"
type = "com.ct10000.ctwelcome.login.actions.LoginAction"
name = "LoginForm"
scope = "request"
validate = "false"
input = "/login/login.jsp">
<forward redirect="true" name="success" path="/main/main.jsp" />
<forward name="failure" path="/login/login.jsp" />
<forward name="modify" path="/loginUserEdit.do?actionflag=pw&from=login" />
</action>
<action-mappings>
- attribute:设置和Action关联的ActionForm Bean在request和session范围内的key。如:Form Bean存在于request范围内,此项设为“myBenas”,则在request.getAttribute(“myBenas”)就可以返回该Bean的实例。可有可无
- classsName:和action元素对应的配置元素,默认为:org.apache.struts.action.ActionMapping.可有可无
- forward:转发到相应的URL路径。可有可无
- include:指定包含的URL路径。可有可无
- input:输入表单的URL路径,当表单验证失败时,将把请求转发到该URL。
- name:指定和Action关联的Action FormBean的名字,该名字必须在Form-Bean定义过。映射请求参数和实体
- path:指定访问Action的路径,以“/”开头,无扩展名。必须
- parameter:指定Actgion的配置参数,在Action类的execute()方法中,可以调用ActionMapping对象的getParameter()方法来读取该配置参数。可有可无
- roles:指定允许调用该Action的安全角色,多个角色之间用,隔开,在处理请求时RequestProcessor会根据该配置项来决定用户是否有权限调用Action权限。可有可无
- scope:指定ActionForm Bean的存在范围,可选取为request和session,默认为session。
- type:指定Action类的完整路径。必须
- unknown:如果此项为true,表示可以处理用户发出的所有无效的Action URL,默认为false;
- validate:指定是否要调用Action FormBean的validate方法,默认值为ture. 如果不想校验,则必填false
注: forward、include、type属性只能选中其中一项