Linux ,c/c++, web,前端,php,js
分类:
2011-11-16 23:41:50
原文地址:struts1 执行流程2 作者:wjxcoder
2 sturts1框架基本组件包
整个struts1大约由15个包,300个java类组成
核心包如下
org.apache.struts.Action:控制整个struts1框架运行的核心类;如ActionServlet,RequestProcessor,Action,ActionMapping,ActionForm,ActionForward等
org.apache.struts.Actions:特定适配器转换功能;如DispatchAction
org.apache.struts.Config:提供对配置文件struts-config.xml元素的映射
org.apache.struts.Taglib:标签类的集合
org.apache.struts.Util:支持web Application的一些常用服务功能
org.apache.struts.Validator:用于动态的配置form表单验证(struts1.1以上)
3、Struts1.2中组件的功能:
1)控制层的分类
1.ActionServlet:(公司的老总)
由Struts框架提供的一个类,用来接受所有客户端的*.do请求,但是他本身不会去处理请求,而是将请求委托给RequestProcessor全权处理;
2.RequestProcessor:(项目总监)
由Struts框架提供的一个类,用来接受ActionServlet转发过来的请求并处理请求,它会根据struts.xml中的配置调用不同的Action去全权处理客户端不同的请求;
3.Action:(程序员)
由Struts框架提供的一个类,它的功能和Servlet一样作为控制器来控制和转发请求,由它去调用模型层中的业务接口方法,并根据不同的结果选择不同的jsp视图显示;
注:我们用户需要自己写一个类继承Action(跟写Servlet一样)。
struts1应用的生命周期中RequestProcessor只保证一个Action实例,所有的客户请求都共享这个实例.所有请求可以同时执行它的
excute()方法。RequestProcessor类包含一个HashMap,作为存放所有Action实例的缓存。每个Action实例在缓存中
存放的key为Action类名。在RequestProcessor类的processActionCreate()方法中,首先检查在HashMap
中是否存在Action实例,如果有直接使用,否则创建一个新的。创建Action实例的代码位于同步代码块中,以保证只有一个线程创建Action实
例,然后放在HashMap中。供其他线程使用。
2)模型层中的ActionForm:由struts框架提供的一个类
作用:
a.封装提交表单中的字段信息
b.对提交表单中的字段信息进行验证(服务器端验证)
c.可以对表单中的字段信息重新赋值
3)ActionMapping
继承自ActionConfig。ActionMapping的作用
4)ActionForward
ActionForword继承自ForwardConfig,它实际上是用来封装视图路径和转发请求方式的一个对象,目的是控制器将 Action 类的处理结果转发至目的地。这个对象可以有两种创建方式:
//第一种返回页面的方法
return new ActionForward("/basic/error.jsp");
//第二种返回页面的方法--一般采用此方法
return mapping.findForward("error");
5)ActionMessages和ActionErrors
ActionMessages和ActionErrors的详细介绍
转载自: http://pengshao.iteye.com/blog/635724