这是很久前的东西了,拿过来再结合自己的做过项目,琢磨琢磨。
1 Struts1的执行流程
1)客户端发起.do结尾的请求,由ActionSerlvet接收;
2)ActionServlet接收请求,交给RequestProcessor处理(实际上就是调用RequestProcessor的process方法);
3)RequestProccessor根据请求路径查找对应的ActionMapping,如果找不到,报404错误;
4)RequestProccessor查找或者创建一个ActionForm对象(ActionForm可以被重用,存在于两个范围,Session或者Request);
5)RequestProccessor调用ActionForm的reset方法,重置状态信息;
6)RequestProccessor调用ActionForm的setXXX方法,将客户端提交的参数封装到ActionForm中;
7)RequestProccessor调用ActionForm的validate方法,如果此方法返回一个ActionErrors对象,并且这个对象中包含错误信息,那么认为验证失败,如果验证失败,那么将请求转发到Action元素的input属性指定的路径上去,反之验证成功;
8)RequestProccessor查找或者创建一个Action(Action对象是单例的);
9)RequestProccessor调用Action对象的execute方法执行Action,并且传入ActionMapping,ActionForm,HttpServletRequest,HttpServletResponse这四个对象;
10)在Action的execute方法中可以通过调用ActionForm的getter方法来获得客户端提交的数据,可以调用模型的方法来处理业务;
11)通过ActionMapping的findForward方法返回一个ActionForward对象或者直接new一个ActionForward对象;
12)主控器获得Action返回的ActionForward对象,然后根据这个对象中封装的信息,将请求转发(重定向或者内部跳转)到具体页面;
13)jsp页面向客户端作出响应;
四个主要类的请求顺序是:ActionMapping--ActionForm---Action---ActionForward.
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的详细介绍
分享到:
相关推荐
在了解Struts程序的执行流程之前,我们需要首先理解几个核心概念: 1. ActionServlet:是Struts框架中的控制器,负责接收用户请求,调用Action的execute()方法处理请求,并根据返回的ActionForward对象进行页面跳转...
下面将详细介绍Struts1的工作流程及其相关知识点。 1. **MVC架构**: Struts1基于MVC设计模式,旨在简化Java Servlet和JSP的开发,通过分离业务逻辑、数据模型和用户界面,提高代码的可维护性和可复用性。在MVC中...
### Struts2的工作流程及配置文件详解 #### 一、Struts2简介 Struts2是基于MVC设计模式的Java Web开发框架之一,它继承了Struts1的优点,并在此基础上进行了大量的改进和扩展。Struts2框架的核心是拦截器...
此框架的发布版本包括jar包和源码,方便开发者进行学习、调试和自定义扩展。 首先,`struts1.2.9.jar`是Struts框架的核心库文件,它包含了运行Struts应用所需的所有类和资源。这个jar包中主要包括以下组件: 1. **...
在Java Web开发中,Struts2被广泛用于构建企业级应用,提供了强大的控制层,使得开发者能够更有效地管理请求和响应流程。Struts2.2.3的"需要11个基本包"是指为了成功地配置和运行Struts2框架,开发者通常需要引入一...
Struts1是一个基于MVC(Model-View-Controller)设计模式的开源框架,它主要负责处理用户请求和控制应用程序流程。在Struts1中,ActionForm对象用于封装请求参数,Action类执行业务逻辑,而JSP页面则作为视图展示...
3. **Action Mapping**:基于请求的URL和方法,框架找到对应的Action类及其执行方法。 4. **拦截器(Interceptors)**:在Action执行之前,一系列预定义或自定义的拦截器按照顺序执行,可以实现如日志、权限验证、...
1. **配置文件**:Struts1.2的配置主要通过`struts-config.xml`和`web.xml`完成。前者定义了动作映射、数据源、结果类型等,后者负责设置过滤器和Servlet的配置。 2. **动作(Action)**:Struts1.2的核心是Action...
Struts2是Struts1的升级版,它继承了Struts1的优点并解决了其存在的问题,提供了更高效的请求处理机制和更强大的拦截器(Interceptor)体系。 JAR(Java Archive)包是一种文件格式,用于将多个Java类文件打包在...
总的来说,Struts2的核心jar包和XML配置文件是构建基于Struts2的Java Web应用的基础,它们共同协作,帮助开发者高效、结构化地开发web应用程序。理解和熟练掌握这些组件,能极大地提高开发效率和代码质量。
Struts、SQL Server和JDBC连接包是Java Web开发中的重要组成部分,它们构成了一个功能强大的MVC(模型-视图-控制器)框架的基础。这里,我们深入探讨这些关键组件及其在实际开发中的应用。 首先,Struts是一个开源...
Struts是一个开源的JavaEE框架,它主要用于构建和管理基于MVC(Model-View-Controller)模式的Web应用程序。在Java开发中,Struts扮演着核心控制器的角色,它简化了客户端请求与服务器端业务逻辑之间的交互流程。...
1. **struts2-core**: 这是最核心的包,包含了框架的基础组件和服务。其中包括Action接口,它是处理用户请求的主要实体;Result接口,用于定义动作执行后的结果页面;以及Interceptor(拦截器),这是Struts2的一大...
Struts1.x 中的控制器主要由 ActionServlet 和 Action 类实现。 2. **工作流程**: - 用户通过浏览器发送 HTTP 请求至服务器端。 - **ActionServlet** 接收请求后,根据配置文件 struts-config.xml 中的规则,...
这是Struts2框架的核心库,包含了处理请求、执行动作、管理应用程序流程以及提供多种结果类型的核心类和接口。例如,`ActionSupport`类是大部分自定义动作类的基础,而`ActionProxy`负责代理请求到相应的动作类。 ...
在Eclipse 3.4环境下开发Struts应用,你需要配置一系列的库文件,这些文件主要包含Struts框架的核心组件和其他必要的依赖。以下是一份详细的步骤和知识点解释,以确保你能够顺利进行开发。 首先,Struts是一个开源...
- **Struts1** 的Action类依赖于Servlet API,因为每一次Action调用都会将`HttpServletRequest`和`HttpServletResponse`作为参数传递给`execute`方法。这种设计虽然简化了请求处理过程,但也限制了Action的可测试性...
以下是对这些JAR包及其在Struts2.0框架中的作用的详细说明: 1. **struts2-core.jar**:这是Struts2的核心库,包含了Action、Result、Interceptor等关键组件的实现。它提供了一个灵活的请求处理机制,使得开发者...
总的来说,Struts1小项目是一个很好的学习和实践平台,涵盖了Web应用开发的基本流程和常用技术,对于初学者理解MVC模式、Struts1框架和数据库操作有极大帮助。通过深入研究和扩展这个项目,可以进一步提升Java Web...