【Struts1.2总结系列】struts-config.xml配置
struts-config.xml是Struts的主要配置文件,在该文件中,可以配置数据源、form-bean、action和plug-in(插件)和资源文件的信息。其文件主要结构如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<data-sources>
<data-source>
</data-source>
</data-sources>
<form-beans>
<form-bean / >
</form-beans>
<global-forwards>
<forward / >
</global-forwards>
<action-mappings>
<action / >
</action-mappings>
<controller / >
<message-resources / >
<plug-in />
</struts-config>
以上各元素必须是按照这个顺序的,若开发人员打乱顺序,很可能引起Struts容器启动时出错。
当然struts-config.xml还有<display-name />、<description />和<icon />子元素,因为它们用得很少,在此不再赘述。只是讲述常用的子元素的配置。
1. data-sources
本节讲述子元素data-sources的配置,该元素可以配置一个或多个data-source元素,即数据源元素,可以通过<set-property>设置driverClass、url、user、password等属性。配置实例如下:
<data-source>
<!-- 所用的JDBC驱动类,必须-->
<set-property property="driverClass" value="com.mysql.jdbc.Driver"/>
<!-- 所用的JDBC的URL,必须-->
<set-property property="url" value="jdbc:mysql://localhost/test"/>
<!-- 同时打开的最小连结数,缺省值为1,可选-->
<set-property property="minCount" value="1"/>
<!-- 同时打开的最大连结数,缺省值为2,可选-->
<set-property property="maxCount" value="5"/>
<!-- 连结到数据库的用户名,必须-->
<set-property property="user" value="root"/>
<!-- 连结到数据库的密码,必须-->
<set-property property="password" value="root"/>
</data-source>
开发人员还可以设置Key(绑定在ServletContext上的DataSource实例的索引键,若不设定则缺省为Action.DATA_SOURCE_KEY,如果在应用程序中有多于一个的DataSource,则必须设置Key的值)、Description(关于DataSource的描述信息)、ReadOnly(如果设为true,则表示该连结是只读的,缺省为false)、LoginTimeout(创建连结的最大允许时间,以秒为单位)和AutoCommit(如果为true,则每次execute之后会强制回滚。缺省为true)属性。
在实际项目中,例如在Hibernate + Struts构建的系统中,一般使用Hibernate的hibernate.cfg.xml文件来配置数据源的信息。而在Hibernate + Struts + Spring构建的系统中,一般使用spring的配置文件(eg. applicationContext.xml)来配置数据源的信息。
2. form-beans
子元素form-beans用来配置绑定到Action的各个FormBean的实例。每个FormBean实例用form-bans的子元素form-bean来定义。form-bean又分普通的FormBan和动态FormBean。
(1)普通form-bean
普通FormBean需要定义一个JavaBean类,在form-bean元素中指定该类。普通form-bean元素的定义格式如下:
<form-bean name="FormBean的名称" type="FormBean对应JavaBean类的全路径"/>
Eg. <form-bean name="UserForm"
type="com.amigo.struts.form.user.UserForm" />
对应的FormBean类一般是继承ActionForm类,例如下面的例子定义了一个UserForm,它具有userName和password两个属性。该类的代码如下:
package com.amigo.struts.form.user;
import org.apache.struts.action.ActionForm;
public class UserForm extends ActionForm {
private static final long serialVersionUID = 1L;
/** 用户名.*/
private String userName;
/** 密码. */
private String password;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
(2)动态form-bean
动态form-bean不需要定义对应的javabean类,其元素都在struts-config.xml中定义。其type为:org.apache.struts.validator.DynaValidatorForm。下面的动态FormBean定义了userName和password属性,配置如下:
<form-bean name="UserForm" type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="userName" type="java.lang.String"/>
<form-property name="password" type="java.lang.String"/>
</form-bean>
3 global-forwards
global-forwards用于配置全局转发,struts首先会在<action-mappings>元素中找对应的<forward>,若找不到,则到全局转发配置中找。它包含0个或多个<forward/>元素,格式如下所示:
<forward name="唯一的名称" path="指向资源的相对路径"/>
Eg.
<global-forwards>
<forward name="failed" path="/error.jsp" />
<forward name="success" path="/ success.jsp" />
</global-forwards>
<forward/>元素还有一个redirect属性,其默认值为false,如果redirect设为true的时候,则用HttpServletResponse.sendRedirect()方法,否则用RequestDispatcher.forward()方法,缺省为false。
4 action-mappings
该元素用于将Action元素定义到ActionServlet类中,它含有0到多个<action/>元素,其格式如下:
<action-mappings>
<action path="Action请求的相对路径"
type="该Action的对应类的全路径"
name="该Action绑定的FormBean"
<forward name="指定处理相应请求所对应的地址" path="相对路径"/>
</action>
</action-mappings>
每个action子元素可包含一个或多个forward子元素。除了path、type和name属性外,action还具有如下属性:
l scope:指定ActionForm Bean的作用域(session和request),缺省为session。(可选);
l input:当Bean发生错误时返回的路径(可选);
l classname:指定一个调用这个Action类的ActionMapping类的全名。缺省用org.apache.struts.action.ActionMapping(可选);
l include:如果没有forward的时候,它起forward的作用(可选);
l validate:若为true,则会调用ActionForm的validate()方法,否则不调用,缺省为true(可选)。
forward属性也是可选的。
action元素定义举例如下:
Eg1.
<action-mappings>
<action
path="/userAction"
type="com.amigo.struts.action.UserAction"
name="UserForm"
scope="request"
validate = "false"
parameter="method" >
<forward name="error" path="/user/error.jsp" />
<forward name="success" path="/user/success.jsp"/>
<forward name="add" path="/user/addUser.jsp"/>
<forward name="update" path="/user/updateUser.jsp"/>
<forward name="list" path="/user/userList.jsp"/>
</action>
</action-mappings>
Eg2. 有input属性的例子:
<action-mappings>
<action path="/calcAction"
type="com.amigo.struts.action.CalcAction"
name="CalcForm"
scope="request"
validate="true"
input="/index.jsp">
<forward name="success" path="/success.jsp"/>
<forward name="error" path="/error.jsp"/>
</action>
</action-mappings>
Eg3. 仅有JSP的action元素:
<action path="/menu"
parameter="/default.jsp"
type="org.apache.struts.actions.ForwardAction" />
首先,ActionServlet接到请求后调用ForwardAction的execute()方法,execute()根据配置的parameter属性值来forward到那个URI。
这样做的效果是:没有任何form被实例化,比较现实的情形可能是form在request更高级别的范围中定义;或者这个action被用作在应用程序编译好后充当系统参数,只需要更改这个配置文件而不需要重新编译系统。
5. message-resources
该元素用来定义资源文件,格式如下:
<message-resources parameter="给定资源文件的全名"
classname="定义处理消息资源的类名的全名"
factory="定义MessageResourcesFactory类的全名"
key="定义绑定在这个资源包中的ServletContext的属性主键"
null=" 如果为true,则找不到消息key时,则返回null "/>
message-resources的各属性中,只有parameter是必选的,其余都为可选,classname属性默认为:org.apache.struts.config.MessageResourcesConfig,factory属性默认为:org.apache.struts.util.property.MessageResourcesFacotry,key属性默认为:Action.MESSAGES_KEY,null属性默认为:true。
举例如下,在struts配置文件中添加如下信息:
Eg1. <message-resources parameter="ApplicationResources" />
Eg2. <message-resources
parameter="com.amigo.struts. ApplicationResources "
null="false"/>
6. plug-in
该元素用于定义插件,可定义0到多个插件元素,最常见的plug-in为Struts的验证的插件,配置举例如下:
Eg1. Struts的验证的plug-in:
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames"
value="/WEB-INF/validator-rules.xml, /WEB-INF/manager/validation.xml" />
<set-property property="stopOnFirstError" value="false" />
</plug-in>
Eg2. Spring提供的载入插件配置:
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml, /WEB-INF/action-servlet.xml"/>
</plug-in>
【Struts1.2总结系列】struts-config.xml配置相关推荐
- Cordova config.xml配置WebView全屏浏览
一.config.xml可以配置WebView默认情况下全屏 说明: 1.多数应用默认下不全屏,只是修改系统工具栏的样式. 2.目前Cordova的浏览器插件InAppBrowser,Themeabl ...
- struts config xml详细解释
以下是一份完整的struts-config.xml文件,配置元素的说明详见注释. <?xml version="1.0" encoding="UTF-8" ...
- Maven系列二setting.xml 配置详解
文件存放位置 全局配置: ${M2_HOME}/conf/settings.xml 用户配置: ${user.home}/.m2/settings.xml note:用户配置优先于全局配置.${use ...
- Maven系列一pom.xml 配置详解
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- Cordova 配置文件config.xml常用整理
一.配置WebView全屏 点击:Cordova config.xml配置WebView全屏浏览
- struts2.1.6教程二、struts.xml配置及例程
1.配置文件的优先级 在struts2中一些配置(比如常量)可以同时在struts-default.xml(只读性),strtus-plguin.xml(只读性),struts.xml,struts. ...
- Spring MVC之基于java config无xml配置的web应用构建
更多spring相关博文参考: spring.hhui.top 前一篇博文讲了SpringMVC+web.xml的方式创建web应用,用过SpringBoot的童鞋都知道,早就没有xml什么事情了,其 ...
- struts2 struts.xml 配置(转载)
he URL extension to use to determine if the request is meant for a Struts action 用URL扩展名 ...
- Spring Boot入门系列(六)Spring Boot如何使用Mybatis XML 配置版【附详细步骤】
前面介绍了Spring Boot 中的整合Thymeleaf前端html框架,同时也介绍了Thymeleaf 的用法.不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/z ...
最新文章
- 学籍管理系统 c语言流程图,程序设计基础 ——C语言第10章 综合应用案例——学生学籍管理系统...
- Adding a horizontal separator to a Flex PopUpButton control’s pop up menu (redux)
- 回顾2011年最热门的开源PHP项目
- angular6继承类注意几点:
- 记一次热更新上传补丁包失败问题
- 牛客题霸 [ 大数加法]C++题解/答案
- 学计算机的误解,让人误解的六大专业
- ddns客户端_DDNS哪家最方便?试试看Mikrotik的ROS!
- Java script生成apk_lua脚本实现自动生成APK包
- 学位论文是根,学术论文是叶
- 小程序api 分享scene_微信小程序 插件调用API的限制
- git如何安装aur_git系列:git 简介
- 移动VS.NET2010帮助文档
- Apache Flink 零基础入门(三):DataStream API 编程
- 解读《百度网页质量白皮书》潜台词
- 计算机是如何工作的?
- excel报表汇总怎么做?
- shopex操作记录
- 启动rabbitmq
- Docker容器Exited(137)解决方案
热门文章
- datatables 一列显示两个字段的数据_5个超实用的Excel数据透视表技巧,学会少加班...
- linux远程桌面MacOS,如何在Linux或macOS中使用远程桌面连接到Windows 10 | MOS86
- C++标准(Standard for ProgrammingLanguage C++)
- BigDecimal 工具类
- 30 道 MySQL 面试题全放送!
- 硬核!国外开发者用 25 美元做了个区块链警佩相机!
- 比尔·盖茨退出微软公司董事会;苹果 WWDC、微软 Build 大会均改为线上举办;Rust 1.42.0 发布| 极客头条...
- 大厂爱考的 Binder 系统服务注册问题怎么破?
- iPhone11因便宜销量超预期;三星手机曝高危漏洞;xUtils 3.8.3发布 | 极客头条
- 什么程度才算精通 Linux?