`

Struts2和SpringMVC处理过程

    博客分类:
  • SSH
MVC 
阅读更多
Struts2和SpringMVC处理过程甚为经典,经常被提及。现整理一下。

Struts2的工作机制
一个请求在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。


Spring工作流程描述
1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获;
2. DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回;
3. DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter。(附注:如果成功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(...)方法)
4.  提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)。 在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作:
      HttpMessageConveter: 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息
      数据转换:对请求消息进行数据转换。如String转换成Integer、Double等
      数据格式化:对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等
      数据验证: 验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中
5.  Handler执行完成后,向DispatcherServlet 返回一个ModelAndView对象;
6.  根据返回的ModelAndView,选择一个适合的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet ;
7. ViewResolver 结合Model和View,来渲染视图
8. 将渲染结果返回给客户端。
  • 大小: 33.6 KB
  • 大小: 41.7 KB
分享到:
评论

相关推荐

    maven+struts2+spring+mybatis+springMVC

    本项目"maven+struts2+spring+mybatis+springMVC"就是一个典型的Java Web应用开发组合,利用了这些框架的优势进行集成,实现了数据持久化、业务逻辑处理、视图展示以及依赖管理等多个层面的功能。 首先,我们来详细...

    springmvc-struts

    可以构建一个功能强大的Java Web应用,通过SpringMVC处理请求,Struts(尤其是Struts2)提供额外的MVC功能,MyBatis作为数据访问层处理数据库操作,而JUnit则帮助进行单元测试,确保整个系统的稳定性和正确性。...

    Spring4,SpringMVC,Struts,Hibernate,Maven,Mybatis学习资料

    Struts2是其最新版本,采用Model-View-Controller设计模式,提供了一套完整的解决方案,包括Action、Interceptor、Result等概念,使得开发者可以更方便地处理请求和响应。 4. Hibernate:Hibernate是一个对象关系...

    maven+(springmvc,mybatis,struts2,hibernate)两两整合

    本项目涉及的是四个流行的Java Web框架——Maven、SpringMVC、MyBatis和Hibernate——之间的两两整合。下面将详细阐述这些框架的特点以及整合过程中的关键知识点。 1. Maven: Maven是一个项目管理和综合工具,它...

    javaweb开发各种jar包,有spring、springmvc、mybaits等

    标题中的"javaweb开发各种jar包,有spring、springmvc、mybaits等",意味着这个压缩包包含了用于Java Web开发的一些核心框架和库。Java Web开发是构建基于Web的应用程序的过程,它通常涉及使用Java语言,并结合一...

    sturts2、springmvc知识点

    Struts2是一个用于构建企业级Java Web应用的强大框架,它遵循MVC(Model-View-Controller)设计模式,旨在简化Web应用的开发和维护过程。Struts2的核心优势在于其灵活的配置方式以及强大的插件体系。 ##### 模型...

    SpringMVC精品资源--基于maven的多框架和多视图融合技术(Struts1、Struts2、Spring、.zip

    本资源包着重于如何在项目中整合多种框架,如Struts1、Struts2和Spring,以及如何利用Maven进行项目管理和构建。 1. **Maven**:Maven是Java项目管理工具,它简化了项目的构建、依赖管理和部署过程。通过在`pom.xml...

    Spring+ibatis+struts框架整合+springmvc数据接口封装含数据表可直接运行

    标题中的"Spring+ibatis+struts框架整合+springmvc数据接口封装含数据表可直接运行"揭示了这个项目是关于使用三个主流的Java Web开发框架——Spring、iBatis和Struts进行集成,并且结合Spring MVC实现了数据接口的...

    Struts2 MVC_Spring3_MyBatis整合

    Struts2、Spring3 和 MyBatis 是三个非常重要的 Java Web 开发框架,它们的整合是构建企业级应用的常用技术栈。这篇文章将详细介绍这三个框架的整合过程以及各自的功能特点,帮助开发者理解如何在实际项目中高效地...

    Java SpringMVC 学习路线.pdf

    在对比SpringMVC与Struts2时,可以发现两者在设计思想和实现细节上有所区别。SpringMVC作为新起之秀,在市场使用率上已经超过了Struts2。SpringMVC的控制器是基于方法级别的拦截,而Struts2则是基于类级别的拦截。...

    SSH(struts2,Hibernate,Spring)整合及测试亲测可用所需jar包

    首先,Spring作为容器,管理和装配Struts2和Hibernate中的bean。其次,Struts2的Action通常会注入Spring管理的服务层bean,以调用业务逻辑。最后,Hibernate负责数据操作,Spring可以配置Hibernate的SessionFactory...

    spring、springmvc、mybatis、structs2、hibernate

    在Java开发领域,Spring、SpringMVC、MyBatis、Struts2和Hibernate是五大主流的框架,它们各自承担着不同的职责,共同构建了企业级应用的基石。下面将详细介绍这些框架及其相互间的配合。 **Spring框架**:Spring是...

    springmvc入门参数绑定ssm整合

    SpringMVC的Request 请求处理过程是:用户请求 -> DispatcherServlet -> Controller -> Model -> View -> 用户响应。 八、Model 数据处理 Model 数据处理是指将业务逻辑的数据处理交由Model层处理,然后将处理结果...

    struts,springMVC 上传文件需要的jar包 commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar

    总的来说,`commons-fileupload-1.2.1.jar`和`commons-io-1.3.2.jar`这两个库在Struts和Spring MVC中扮演着关键角色,使得处理文件上传变得更加便捷和可靠。开发者可以通过这些库提供的API轻松实现文件上传功能,...

    springMVC使用文档

    - **性能对比**:由于 SpringMVC 的单例模式和更轻量的设计,理论上其性能优于 Struts2。 #### SpringMVC 执行流程 SpringMVC 的执行流程如下: 1. **请求处理**:用户发起 HTTP 请求至 DispatcherServlet。 2. **...

    struts2+spring+mybatis整合所需的基本jar包

    在与Struts2和MyBatis整合时,需要的jar包包括: 1. spring-context.jar:Spring的核心模块,提供DI和AOP支持。 2. spring-beans.jar:定义了Bean工厂,处理Bean的创建和管理。 3. spring-webmvc.jar:Spring的Web ...

    Spring4,2Springmvc4.2Hibernate4.2

    Spring、SpringMVC和Hibernate是Java开发中三大核心框架,它们的组合被称为SSH(Spring、Struts、Hibernate)集成框架,尽管在本例中Struts并未提及,但SpringMVC可以视为Struts的现代替代品。这个压缩包"Spring4,2...

    springmvc学习第一天

    - **配置方式**:SpringMVC倾向于XML和注解结合的方式,而Struts2则依赖于XML配置。 #### 七、SpringMVC的高级应用 - **参数绑定**:除了基本的数据类型外,还可以处理复杂的对象类型,如List、Map等。 - **数据...

    Struts和Spring两种MVC框架究竟有什么不同呢?

    4. **国际化与异常处理**:Struts提供了强大的国际化支持和统一的异常处理机制。 5. **不足之处**:Struts的Action之间存在耦合,且对依赖注入的支持不够完善,导致代码难以测试和维护。 **Spring框架:** Spring...

    SpringMVC教程及实现原理

    - **处理方式**:Struts2框架是类级别的拦截,每次请求都创建一个新的Action实例,并通过setter/getter方法与request交互;而SpringMVC则是方法级别的拦截,一个方法对应一个请求上下文,支持更灵活的RESTful URL...

Global site tag (gtag.js) - Google Analytics