共和应变:【Struts1.2总结】struts-config.xml配置
<global-forwards>
global-forwards>
以上各元素必须是按照这个顺序的,若开发人员打乱顺序,很可能引起Struts容器启动时出错。
当然struts-config.xml还有
1. data-sources
本节讲述子元素data-sources的配置,该元素可以配置一个或多个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元素的定义格式如下:
Eg. 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属性,配置如下:
3 global-forwards
global-forwards用于配置全局转发,struts首先会在元素中找对应的
Eg.
<global-forwards>
global-forwards>
4 action-mappings
该元素用于将Action元素定义到ActionServlet类中,它含有0到多个元素,其格式如下:
type="该Action的对应类的全路径" name="该Action绑定的FormBean" 每个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. path="/userAction" type="com.amigo.struts.action.UserAction" name="UserForm" scope="request" validate = "false" parameter="method" > Eg2. 有input属性的例子: type="com.amigo.struts.action.CalcAction" name="CalcForm" scope="request" validate="true" input="/index.jsp"> Eg3. 仅有JSP的action元素: