Struts framework根据配置文件使得ServletAction,ActionMapping,Action,ActionForm这几个不同层次的组件相互交互,协调的工作。这些配置文件是在系统启动的时候,读入并保存于内存中,供控制器使用的。
Struts framework主要包括三部分的配置描述,一个是指定有关Struts Controller及其相关的的配置描述(Initialization Parameters),一个是对struts tag lib的描述,一个是Struts组件(ActionMapping,Action,ActionForm)之间相互映射协调的关系
因为Struts Controller的主要类ActionServlet是继承自HttpServlet,所以必须像配置一个Servlet那样在部署描述符(Web.xml )中配置ActionServlet类及其访问映射。
当第一次创建基于Struts的Web应用程序时,将为您创建一个部署描述符,这通常就足够了。该文件包括下列条目:
l、<servlet>条目定义用于Web应用程序的servlet (在本例中,这是唯一的servlet):
— <servlet-name> 和<servlet-class>指示ActionServlet (标识为“操作”)接收HTTP请求并确定如何响应。
— <init-param>表示servlet初始化参数.
— “config”指示ActionServlet的行为由指定的配置文件来指导,该配置文件通常具有以下名称:
\WEB-INF\struts-config.xml
— “debug”具有整数值,它指示将有关处理的详细信息写至控制台的程度。“0”表示不生成任何Debug信息。
— “detail”具有整数值,它指示将“映射”详细信息(如后面所述)写至控制台的程度。
― <load-on-startup>导致在启动应用程序时装入servlet。
— <servlet-mapping>元素标识这样的命名模式:当命名模式由URL进行匹配时,Web服务器就将控制权移交给ActionServlet。考虑下面各种情况:
― 访问了ActionServlet,原因是“操作”(<servlet-mapping>中的<servlet-name>元素的内容)与“操作”(<servlet>中的<servlet-name>元素的内容)相匹配。
— <servlet-mapping>元素指定URL的结尾的命名模式。每个URL的开头都是应用程序上下文路径。按照惯例,ActionServlet调用对象以响应与命名模式“*.do”(其中“*”是通配符)一致的URL。
— <welcome-file-list>元素指示获得初始控制权的特定于应用程序的代码;在本例中,Web服务器直接从Web Content目录中调用index.jsp。
— <error-page>元素指示显示哪个JSP来响应错误;在本例中,错误为如下所示:
― 404 (找不到资源)
― 500 (Web服务器内部发生错误)
每个<taglib>元素都使相对URL(相对于Web.xml)与标记库描述符(相对于Web应用程序根目录)相关联。每个JSP都可以使用同一个URL来表示给定的标记库,而Web.xml确定引用了哪个文件。
有关struts tag lib的配置描述
如果你的web application打算使用Struts的taglib,那么你有必要在web.xml中对struts taglib进行配置描述。
有关Struts Action Mapping的配置描述
作为先前描述的web.xml设置的结果,Web应用程序服务器将请求的一个子集按路径发送至ActionServlet,它通常调用一系列操作和JSP。ActionServlet的响应是基于配置文件struts-config.xml的内容的。有关其DTD文档的描述,请参考这里。
一般struts-config(version1.1)包含了如下几个部分:
(1)form-bean
(2)global-forwards
(3)action-mappings
(4)data-sources
对于这样的一个请求(例如,表示为“/login.do”),Struts框架将会执行下列步骤:
1、 寻找操作类对象(继承org. apache.struts.action.Action的类)
2、 ActionServlet调用操作类对象的执行方法
操作类中的执行方法的特征符为如下所示:
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
映射对象(ActionMapping),它包含指示如何响应方法的每个可能结果的规则(“映射”)
Struts表单bean(ActionForm),它保存发送至HTML表单或接收自HTML表单的数据
请求和响应对象(HttpServletReques/ HttpServletResponse)
3、 从执行方法返回ActionForward对象,用于指导ActionServlet接着访问哪个操作类或JSP
返回的ActionForward对象中的信息取决于两个值:
方法的结果(如在“成功”或“故障”等字符串中所述)
映射对象,它包含从Struts配置文件中读取的信息
要弄明白某些运行时关系,要明白struts-config.xml该文件包括下面的一组条目:
<form-beans>标记标识每个表单bean
<action-mappings>标记包括用于指导应用程序流的信息,每个<action>子标记都使相对URL与操作类和潜在的后续操作相关。
Form-bean元素
Struts配置文件中的一个示例<form-bean>子元素为如下所示:
<form-bean name=“registerForm” type=“strutscommon.RegisterForm”/>
每个<form-bean>子元素都包括下列属性:
name
表单bean的名称,稍后在配置文件中会用到。ActionServlet举例说明了该bean(如果需要的话)并在将对bean的引用存储在请求或会话对象中时将该名称用作键。
type
类的全限定名称,它继承org.apache.struts.action.ActionForm该类必须在类路径中。接受“Struts贸易样本”中的注册的表单bean包括HTML注册表单中每个字段的getter 和setter方法。该bean还包括验证方法,如下节“验证”中所述。
Action元素
Struts配置文件中的一个示例<action>元素为如下所示:
<action path=“/register”
type=“strutsEGL.RegisterAction”
name=“registerForm”
input=“/register.jsp”
scope=“request”
<forward name=“success”path=“/home.do”/>
< forward name=“failure”path=“/register.jsp”/>
</action>
每个<action>元素都包括下列属性中的某些属性或所有属性:
path
将请求指定为非限定URL,不带文件扩展名(例如,“/register”)请求是根据<action>元素中的其它属性来处理的,并且是用户输入的结果或者是在different<action>元素中标识的转发的结果。
type
指定在发出请求时调用其执行方法的操作类的全限定名。该类必须在类路径中。
注:不指定要实例化的类,可以通过使用forward属性来转发请求,该属性在“Struts贸易样本”中未使用,并且与后面描述的<forward>子元素不相同。
name
用于保存发送至HTML表单或接收自HTML表单的数据表单bean的名称。
input
指定相对URL(例如,“/register.do”或“/index.jsp”)必须包括后缀,
如果表单bean的验证方法指示发生了输入错误,则会调用URL;有关详细信息,参见下节的“验证”。
scope
指定将对表单 bean的引用存储在哪个作用域中。其值为“会话”(缺省值)或“请求”。
Struts配置文件中的每个<action>元素还包括子元素<forward>,它指定从方法结果至后续调用的映射。每个<forward>子元素都包括下列属性
name
指定导致在运行时使用当前映射的字符串(例如,“success”),但是
只限于以下情况:在 type 中引用的操作类的执行方法使用完全相同
的字符串来配置返回至ActionServlet的 ActionForward对象。下面
的执行方法不是很重要,但是会导致使用“success”映射:
public ActionForward exectue(
ActionMapping mapping,
ActoinForm form,
HttpServletRequest request,
HttpServletResponse response)
Throws IOException,ServletException
{
ActionForward forward=new ActionForward();
Forward=mapping,findForward(“success”);
return(forward);
}
path
指定非限定URL(例如,“/home.do” 或“/index.jsp”)必须包括文件扩展名,仅当使用当前映射时才会调用该URL,转发操作类是根据different<action>元素中的属性来处理的,尤其是,在其path属性标识相同URL的<action>元素中。
有必要提一下的是,在struts1.1中,提出了对Multiple Application Support。在struts的早先版本中,只有一个struts配置文件,一般叫struts-config.xml。但是,对于越来越复杂的应用系统的发展,只有一个地方存放这个一个文件,对大型项目来说,使用和修改这个配置文件,使其成为了一个应用的瓶颈问题。在struts1.1中,你可以定义多了配置文件协同工作。
posted on 2005-10-27 16:26
Sung 阅读(743)
评论(0) 编辑 收藏 所属分类:
Struts