Struts配置文件简介

 
 
有关Struts Controller及其相关的的配置描述
       因为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”具有整数值,它指示将有关处理的详细信息写至控制台的程度。
-          ”detail”具有整数值,它指示将“映射”详细信息(如后面所述)写至控制台的程度。
― <load-on-startup>导致在启动应用程序时装入servlet。
l         <servlet-mapping>元素标识这样的命名模式:当命名模式由URL进行匹配时,Web服务器就将控制权移交给ActionServlet。考虑下面各种情况:
― 访问了ActionServlet,原因是“操作”(<servlet-mapping>中的<servlet-name>元素的内容)与“操作”(<servlet>中的<servlet-name>元素的内容)相匹配。
    ― <servlet-mapping>元素指定URL的结尾的命名模式。每个URL的开头都是应用程序上下文路径。按照惯例,ActionServlet调用对象以响应与命名模式“*do”(其中“*”是通配符)一致的URL。
l         <welcome-file-list>元素指示获得初始控制权的特定于应用程序的代码;在本例中,Web服务器直接从Web Content目录中调用index.jsp。
l         <error-page>元素指示显示哪个JSP来响应错误;在本例中,错误为如下所示:
― 404 (找不到资源)
― 500 (Web服务器内部发生错误)
l         每个<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文档的描述,请参考http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd
       一般struts-config(version1.1)包含了如下几个部分:
(1)form-bean
       (2)global-forwards
       (3)action-mappings
       (4)data-sources
 
    我们知道,对于这样的一个请求(例如,表示为“/login.do”),执行下列步骤:
1、 寻找操作类对象(继承org. apache.struts.action.Action的类)
2、 ActionServlet调用操作类对象的执行方法
操作类中的执行方法的特征符为如下所示:
public ActionForward execute(
     ActionMapping mapping,
     ActionForm form,
     HttpServletRequest request,
     HttpServletResponse response)
l         映射对象(ActionMapping),它包含指示如何响应方法的每个可能结果的规则(“映射”)
l         Struts表单bean(ActionForm),它保存发送至HTML表单或接收自HTML表单的数据
l         请求和响应对象(HttpServletReques/ HttpServletResponse)
 
3、 从执行方法返回ActionForward对象,用于指导ActionServlet接着访问哪个操作类或JSP
返回的ActionForward对象中的信息取决于两个值:
l         方法的结果(如在“成功”或“故障”等字符串中所述)
l         映射对象,它包含从Struts配置文件中读取的信息
 
 
要弄明白某些运行时关系,要明白struts-config.xml该文件包括下面的一组条目:
l         <form-beans>标记标识每个表单bean
l         <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中,你可以定义多了配置文件协同工作。
 
注:当用户或ActionServlet调用JSP时,请求是由Web应用程序服务器直接处理的不会受到ActionServlet的干预。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值