技术开发 频道

Struts基础介绍及开发流程


IT168技术文档】 
    Struts首先在Container启动的时候调用ActionServlet的init()方法。初始化各种配置。这些配置写在struts-config.xml文件中。

 一个标准的struts-config文件包含如下结构:
?xml version="1.0" encoding="UTF-8"?!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"<struts-config> <data-sources /// 定义数据源 <form-beans /// 定义ActionForm <global-exceptions /// 定义全局异常 <global-forwards /// 定义全局转向url <action-mappings /// 定义action <controller /// 配置Controller <message-resources /// 配置资源文件 /struts-config>
     Struts由上述几部分组成。其中最主要的是Action和Form。下面简单叙述一下其处理过程。 

    一个请求提交给ActionServlet,ActionServlet会寻找相应的Form和Action,首先将提交的request对象,映射到form中。,然后将form传递给action来进行处理。action得到form,对xml的mapping,request,response四个对象,并调用execute()方法然后返回一个forward-url(相应视图)给ActionServlet,最终返回给客户端。 

    Struts开发指南之工作流程 

    ActionServlet是一个FrontController,它是一个标准的Servlet,它将request转发给RequestProcessor来处理, 

    ActionMapping是ActionConfig的子类,实质上是对struts-config.xml的一个映射,从中可以取得所有的配置信息

 RequestProcessor根据提交过来的url,如*.do,从ActionMapping 中得到相应的ActionForn和Action。然后将request的参数对应到ActionForm中,进行form验证。如果验证通过则调用Action的execute()方法来执行Action,最终返回ActionFoward。 

    ActionFoward是对mapping中一个foward的包装,对应于一个url 

    ActionForm使用了ViewHelper模式,是对HTML中form的一个封装。其中包含有validate方法,用于验证form数据的有效性。ActionForm是一个符合JavaBean规范的类,所有的属性都应满足get和set对应。对于一些复杂的系统,还可以采用DynaActionForm来构造动态的Form,即通过预制参数来生成Form。这样可以更灵活的扩展程序。 

    ActionErrors是对错误信息的包装,一旦在执行action或者form.validate中出现异常,即可产生一个ActionError并最终加入到ActionErrors。在Form验证的过程中,如果有Error发生,则会将页面重新导向至输入页,并提示错误。 

    Action是用于执行业务逻辑的RequsestHandler。每个Action都只建立一个instance。Action不是线程安全的,所以不应该在Action中访问特定资源。一般来说,应改使用 Business Delegate 模式来对Business tier进行访问以解除耦合。 

    Struts提供了多种Action供选择使用。普通的Action只能通过调用execute执行一项任务,而DispatchAction可以根据配置参数执行,而不是仅进入execute()函数,这样可以执行多种任务。如insert,update等。LookupDispatchAction可以根据提交表单按钮的名称来执行函数。
0
相关文章