摘自 三层架构,MVC浅谈[三] http://gcfwuwei-yahoo-com-cn.iteye.com/blog/867390
struts如何实现MVC
struts是java web目前最常用的实现框架。他采用mvc结构,将页面展现,流程控制和业务处理强有力的分开,结构清晰,思路明确,是进行java web的最好选择。
java web组件间的关系基本有三类:
页面跳转(javax.servlet.RequestDispatcher.forward()方法)
页面重定向(javax.servlet.response.sendRedirect()方法)
页面包含(javax.servlet.RequestDispatcher.include()方法).
其中,页面跳转只是在同一个web应用中进行的,传递的是request和response对象;重定向和包含则可以是不同的url内容。
java web组件间的数据共享有四类:page,request,session和application,共享范围有单个页面到整个web应用,依次变大。
struts的页面展示用jsp技术实现,按严格的mvc讲,jsp只是负责显示,不负责流程控制和数据处理;流程控制用action实现,在action的execute()里面通过return actionMapping.findForward()进行跳转,具体的业务处理是有各种java bean或者ejb来实现的。actionForm也是struts里面的一部分,目的是存储jsp页面提交的内容,供对应的action使用。
struts1.2 的工作流程
Web应用启动时加载并初始化ActionServlet。ActionServlet从struts-config.xml中读取配置信息,把它们存放到各种配置对象中。当ActionServlet接收到一个请求时,流程如下:
1.检索和用户请求匹配的ActionMapping实例,如果不存在,就返回用户请求路径无效的信 息。
2.如果ActionForm实例不存在,就创建一个ActionForm对象,把提交的表单数据保存到 ActionForm中。
3.根据配置,决定是否需表单验证,若需要,则调用ActionForm的validate方法。
4.如果ActionForm的validate方法返回null或返回不包含ActionMessage的ActionErrors 对象,则表示验证成功。
5.ActionServlet根据ActionMapping实例包含的映射信息决定将请求转发给哪个Action, 如果Action不存在则先创建这个实例,然后调用Action的execute方法。
6.Action的execute方法返回一个ActionForward对象,ActionServlet再把请求转发给 ActionForward对象指向的JSP组件。
7.ActionForward指向的JSP组件生成动态网页,返回给用户。
Struts2的工作流程
1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求;
2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做 ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)
3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是 否需要调用某个Action
4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给 ActionProxy
5 ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action 类
6 ActionProxy创建一个ActionInvocation的实例。
7 ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦 截器(Intercepter)的调用。
8 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返 回结果。返回结果通常是(但不总是,也可 能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper
在上述过程中所有的对象(Action,Results,Interceptors,等)都是通过ObjectFactory来创建的。
分享到:
相关推荐
### Struts实现MVC机制的Web应用 #### 引言 随着互联网技术的快速发展和Web应用的日益复杂化,为了更高效地管理和构建大规模的Web应用程序,开发领域中出现了多种软件开发框架。其中,Struts作为一种基于MVC...
Struts实现MVC机制的Web应用论文
这格里面介绍了struts 的MVC结构,里面的内容非常详细
### Struts:MVC的一种开源实现 #### 一、引言 随着互联网技术的发展,越来越多的应用程序被开发出来,为了确保这些应用具有良好的用户体验、高效的功能性和可维护性,开发者们逐渐采用了一些成熟的设计模式来指导...
在Struts框架中,模型(Model)通常由JavaBeans或EJB(Enterprise JavaBeans)实现,负责处理业务逻辑;视图(View)主要由JSP(JavaServer Pages)或HTML页面组成,用于展示数据;控制器(Controller)则是Struts的...
### 使用Struts实现MVC模式 在J2EE项目中,Struts通过将JSP、JSP tags和Java Servlets结合使用,有效地实现了MVC模式。Struts的标签库提供了丰富的功能,如表单处理、数据展示等,可以大大减少JSP页面的复杂度,...
MVC原理(struts框架详解), Struts 质上就是在Model2的基础上实现的一个MVC架构。它只有一个中心控制器,他采用XML定制转向的URL。采用Action来处理逻辑
Struts作为MVC框架,其实现了控制器的角色,使得模型和视图可以解耦,提高代码的可测试性和可维护性。 iBatis,又称为SQL Maps,是一个能够将SQL语句和Java代码分离的持久层框架。它允许开发者直接写SQL语句,避免...
在这个"Struts1 MVC实例"中,我们将深入探讨如何利用Struts1实现一个基础的CRUD(Create, Read, Update, Delete)操作。 MVC模式是软件工程中的一个设计模式,它将应用程序分为三个主要部分:模型(Model)、视图...
### 基于Struts框架MVC模式应用的实现 #### 概述 本文主要探讨Struts框架在MVC(Model-View-Controller)模式下的应用实现,旨在为读者提供一个深入理解Struts框架及其在Web开发中作用的机会。通过详细解析MVC模式...
Struts 是一个开源的 Java 框架,主要用于构建企业级的 Web 应用程序,尤其在实现 Model-View-Controller(MVC)设计模式方面表现出色。MVC 模式是一种软件设计模式,它将应用程序分为三个核心部分:模型(Model)、...
1. **HelloAction**: 这是实现业务逻辑的Action类,继承自Struts的抽象Action类。在这个例子中,它可能包含一个execute方法,该方法处理HTTP请求,可能包括验证用户输入、调用业务服务等。 2. **HelloForm**: ...
Struts 2是一款强大的Java Web开发框架,基于Model-View-Controller(MVC)设计模式,旨在简化企业级应用的开发。它通过提供一个统一的架构来管理控制器、视图和模型,使得开发者能够更专注于业务逻辑,而不是底层...
在Struts2框架中,MVC模式的实现如下: 1. **模型(Model)**:模型层是应用程序的核心,负责处理业务逻辑。在Struts2中,模型通常由JavaBean或者Action类来实现。Action类是业务逻辑的载体,它包含了处理用户请求的...
《精通Struts:基于MVC的JavaWeb设计与开发》是由孙卫琴编著的一本经典书籍,专门探讨了如何使用Struts框架进行高效的JavaWeb应用程序开发。这本书深入浅出地介绍了Struts的核心概念、架构以及实践应用,帮助开发者...
这个压缩包“JSP源码——Struts+Hibernate实现MVC_strutsmvc.zip”显然包含了使用这两种技术构建的MVC应用的源代码。下面将详细阐述Struts和Hibernate的核心概念以及它们如何协同工作。 **Struts框架**: 1. **MVC...
Struts+Hibernate实现MVC_strutsmvc.zip
《员工工资管理系统基于Struts2 MVC的毕业设计详解》 在信息技术日新月异的今天,软件工程领域的学生们经常会被要求进行毕业设计,以实践所学理论知识并提升实际编程能力。本文将深入探讨一个典型项目——“员工...
在这个"Struts+Hibernate实现MVC"项目中,开发者通过整合这两个框架,构建了一个高效、可维护的业务系统。 **Struts框架**是Apache软件基金会下的一个开源项目,它主要用于构建基于Java Servlet的Web应用程序。...
2. **依赖注入**:Spring MVC是Spring框架的一部分,天然支持DI,而Struts2需要额外集成Spring才能实现DI。 3. **测试**:Spring MVC更容易进行单元测试,因为Controller通常是无状态的,而Struts2的Action有状态,...