struts-config.xml配置文件详解 (元素顺序和大概功能)

技术 专栏收录该内容
31 篇文章 0 订阅

元素顺序

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&amp;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属性只能选中其中一项

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

渡灬魂

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值