WEB三大应用框架之一structs

structs 基于mvc的web应用框架

structs结构

Model,划分为两个主要子系统(系统的内部数据状态与改变数据状态的逻辑动作),对应Struts里ActionForm与Action,需继承实现超类。

视图(View)端,除使用标准的JavaServer Pages(JSP),还提供了大量的标签库使用tag-lib,同时可与其他表现层组件进行整合,比如Velocity Templates,XSLT等。

控制器Controller由一个名为ActionServlet的Servlet充当,controller功能是 转发视图(View)的请求,组装响应数据模型(Model)。

struts-config.xml的配置文件:描述模型、视图、控制器对应关系。

Struts可以与各种标准的数据访问技术结合在一起,包括Enterprise Java Beans(EJB),JDBC与JNDI。

应用structs框架优缺点
1.通过应用Struts的框架,最终用户可以把大部分的关注点放在自己的业务逻辑(Action)与 映射关系的配置文件(struts-config.xml)。

2.Taglib和页面导航,Taglib是Struts的标记库,大大提高开发效率。

3.开源软件

4.Struts的漏洞处理机制常被诟病,OGNL的功能强大和请求处理机制极易产生远程执行问题。

structs执行流程

WEB三大应用框架之一structs_第1张图片

1). 读取配置(初始化ModuleConfig对象)
      采用Struts的Web应用,在Web应用启动时就会加载并初始化ActionServlet,在ActionServlet初始化 ModuleConfig的候,调用initModuleConfigFactory()初始化配置工厂,然后由配置工厂通过 initModuleConfig("", config)获得ModuleConfig对象。通过ModuleConfig对象调用下列方法去初始化相关模块。
a.initModuleMessageResources(moduleConfig); b.initModuleDataSources(moduleConfig);  c.initModulePlugIns(moduleConfig) 这些方法的功能就是:容器在加载Struts应用程序时,会先加载web.xml中与Struts相关的一些配置参数,找到struts-config.xml文件,然后通过循环来读取此文件和解析里面的内容,并初始化相关对象。

2). 用户请求
      用户提交或调用url向Web应用程序提交一个请求,请求的数据用HTTP协议上传给Web服务器。

3). 填充FormBean
      填充FormBean的过程包括实例化、复位、填充数据、保存等操作。根据*.do请求从ActionConfig中找出对应该请求的 Action子类,如有对应的Action且这个Action有一个相应的ActionForm,则ActionForm被实例化并用HTTP请求的数据 填充其属性,并保存在ServletContext中,这样它们就可以被其他Action对象或JSP调用。如果没有对应的Action,则直接转 发给JSP或静态页面。

   4). 转发请求
      控制器根据配置信息ActionConfig将请求派发到具体的Action,与请求相应的FormBean将一并传给这个Action对象。

   5). 处理业务
     Action一般只包含一个execute()方法,它负责执行相应的业务逻辑。执行完毕后返回一个ActionForward对象,控制器通过该ActionForward对象进行转发工作。

   6). 返回响应
     Action根据业务处理的不同结果返回一个响应对象给总控制器,该目标响应对象对应一个具体的JSP页面或另一个Action。

   7). 查找响应
     总根据业务功能Action返回的目标响应对象找到对应的资源对象,通常是一个具体的JSP页面。

 8). 响应用户
      目标响应对象将结果展现给用户目标响应对象,即具体的JSP页面,这样客户就得到响应的结果。

你可能感兴趣的:(架构)