`

Struts,spring工作机制(总结)

 
阅读更多

1,Struts1 工作流程:

web.xml:

<servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

在web应用启动时就会加载初始化ActionServlet,ActionServlet从
struts-config.xml文件中读取配置信息,把它们存放到各种配置对象
当ActionServlet接收到一个客户请求时,将执行如下流程.
-(1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息;
-(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;
-(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法;
-(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象, 就表示表单验证成功;
-(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的 Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;
-(6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给 ActionForward对象指向的JSP组件;
-(7)ActionForward对象指向JSP组件生成动态网页,返回给客户;


2,Struts2的工作机制

web.xml

<filter>    
    <filter-name>struts2</filter-name>    
    <filter-class>    
    org.apache.struts2.dispatcher.FilterDispatcher     
    </filter-class>    
</filter>    

<filter-mapping>    
    <filter-name>struts2</filter-name>    
    <url-pattern>/*</url-pattern>    
</filter-mapping>  

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。

包名 说明
org.apache.struts2.components 该包封装视图组件,Struts2在视图组件上有了很大加强,不仅增加了组件的属性个数,更新增了几个非常有用的组件,如updownselect、doubleselect、datetimepicker、token、tree等。
org.apache.struts2.config 该包定义与配置相关的接口和类。实际上,工程中的xml和properties文件的读取和解析都是由WebWork完成的,Struts只做了少量的工作。
org.apache.struts2.dispatcher Struts2的核心包,最重要的类都放在该包中。
org.apache.struts2.impl 该包只定义了3个类,他们是StrutsActionProxy、StrutsActionProxyFactory、StrutsObjectFactory,这三个类都是对xwork的扩展。
org.apache.struts2.interceptor 定义内置的截拦器。
org.apache.struts2.util 实用包。
org.apache.struts2.validators 只定义了一个类:DWRValidator。
org.apache.struts2.views 提供freemarker、jsp、velocity等不同类型的页面呈现。

3,Spring工作机制 

web.xml

<web-app>
   <servlet>

<servlet-name>Dispatcher</servlet-name>
       <servlet-class>
           org.springframework.web.servlet.DispatcherServlet 
       </servlet-class>
       <init-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>/WEB-INF/applicationContext.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Dispatcher</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
</web-app> 

spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。
DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.
DispatcherServlet请请求提交到目标Controller
Controller进行业务逻辑处理后,会返回一个ModelAndView
Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象
视图对象负责渲染返回给客户端。

分享到:
评论

相关推荐

    SSH面试总结 struts spring hibernate 面试

    Struts工作机制与为何使用 - **工作机制**: - 在Web应用启动时,初始化ActionServlet,并从`struts-config.xml`中读取配置信息。 - 当接收客户端请求时,ActionServlet根据配置查找相应的ActionMapping,处理...

    struts spring hibernate 面试总结.doc

    Spring的工作机制包括: 1. 通过Spring容器(如ApplicationContext)来管理Bean的生命周期和依赖关系。 2. 使用XML或注解配置来定义Bean的定义和依赖。 3. Spring的AOP允许在不修改源代码的情况下,对方法进行拦截...

    struts2+Spring2.5+Spring3.2)实现登录.

    - **用户输入验证**:利用Struts2的拦截器或自定义验证机制对用户输入进行验证,确保输入的有效性。 - **登录逻辑处理**:当用户提交登录信息后,由Struts2转发至Spring管理的业务逻辑层进行处理,通过调用UserDAO的...

    struts2总结项目总结

    在本项目总结中,我们将深入探讨Struts2的核心特性、工作原理以及如何在实际项目中应用。 一、Struts2框架基础 1. 动态方法调用(Dynamic Method Invocation,DMI):Struts2允许通过URL直接调用Action类的方法,...

    struts1.2 + spring2.5 + hibernate3.2框架demo

    总结来说,这个demo项目提供了一个学习和实践Struts1.2、Spring2.5和Hibernate3.2集成的平台,涵盖了MVC设计模式、依赖注入、面向切面编程和对象关系映射等多个关键概念。通过深入研究和修改这个项目,开发者能够...

    springstruts的自己的总结文档

    3. AOP集成:Spring的AOP可以与Struts2的拦截器协同工作,提供更细粒度的控制。 4. 数据源集成:Spring管理的数据源可以无缝地用于Struts2的DAO操作,简化配置。 5. 国际化与本地化:Spring和Struts2都支持国际化...

    Struts2.3.28+spring4.1.6+hibernate4.3.8整合总结(注解)

    1. **Struts2.3.28**:Struts2是一个基于MVC设计模式的Web应用框架,它提供了强大的动作控制和拦截器机制。在2.3.28版本中,Struts2支持注解配置,如`@Action`和`@结果`,可以将Action类和结果页面的映射写在类或...

    SSH(Struts+Spring+Hibernate)结合项目简单实例

    2. **Spring MVC**:Spring提供的MVC模块可以与Struts 2协同工作,提供另一种处理HTTP请求的方式。 3. **事务管理**:Spring提供声明式和编程式的事务管理,确保业务操作的一致性。 4. **服务层**:Spring容器可以...

    Java基础+Struts+Spring+Hibernate总结

    Java基础是编程世界的基石,它是Java开发者必备的技能...而Spring MVC作为前端控制器,协调Struts和Hibernate的工作,提供高效的Web服务。这样的组合使得开发过程更为高效,维护性更强,是现代Java Web开发的标准配置。

    最新Struts和Hibernate和Spring经典面试题

    以下是对 Struts、Hibernate 和 Spring 的经典面试题的总结,涵盖了这些框架的工作机制、优点、缓存机制、查询方式、优化方法等知识点。 Hibernate 1. Hibernate 工作原理及为什么要用? Hibernate 工作原理包括...

    java javaee struts2 spring hibernate免费学习视频教程

    - **Spring MVC**:学习Spring MVC的工作机制,包括控制器(Controller)、模型(Model)和视图(View)的使用。 - **Spring高级特性**:了解Spring事务管理、数据访问支持、测试支持等功能,并探讨Spring Boot简化...

    struts+spring文件上传大小限制.rar

    总结,"struts+spring文件上传大小限制.rar"的内容可能包含了如何在Struts和Spring框架下设置文件上传大小限制的示例代码或配置文件,帮助开发者解决在实际项目中遇到的此类问题。理解并掌握这些知识对于开发安全、...

    Struts2+Spring+hibernate中对action的单元测试环境搭建[总结].pdf

    Struts2+Spring+Hibernate 中的Action单元测试环境搭建 在软件开发中,单元测试是一种非常重要的测试方法,可以帮助我们确保代码的可靠性和稳定性。在 Struts2+Spring+Hibernate 框架中,对 Action 的单元测试环境...

    2022年StrutsSpringHibernate面试题总结.docx

    【Struts工作原理】 Struts是一个开源的MVC框架,它的主要作用是帮助开发者构建结构清晰、易于维护的Web应用程序。Struts的工作流程如下: 1. **初始化**:当Web应用启动时,ActionServlet(Struts的核心控制器)被...

    Struts+Spring+hibernate学习总结

    【Struts+Spring+Hibernate 学习总结】 SSH(Struts、Spring、Hibernate)是Java Web开发中的一个经典企业级应用架构,它将MVC设计模式应用到Web应用的各个层次,实现了良好的分层和解耦。这篇学习总结旨在帮助读者...

    SSH中 struts hibernate spring 各起什么作用

    ### SSH框架:Struts、Hibernate、Spring的作用解析 #### Struts **Struts** 是一个基于MVC(Model-View-Controller)设计模式的开源框架,主要用于构建动态Web应用程序。在SSH架构中,Struts主要负责处理用户界面...

    spring-mybatis-struts2-master ——demo

    总结,"spring-mybatis-struts2-master"项目是一个典型的SSM框架整合示例,它展示了如何在实际项目中运用这三个框架。通过深入研究这个项目,开发者可以更好地掌握SSM框架的集成技巧,提升自己的Java Web开发能力。

    Struts+Hibernate+Spring面试总结

    7. **Struts 工作机制**: Struts的工作流程包括加载ActionServlet,解析struts-config.xml,处理用户请求,根据ActionMapping找到对应的Action,可能进行表单验证,执行Action的execute方法,转发到指定的JSP组件...

    struts2 spring hibernate整合要点、注意点

    综上所述,Struts2、Spring与Hibernate的整合涉及到多个方面的配置与协调工作。通过合理地配置各种配置文件并遵循一定的最佳实践,可以有效地实现这三个框架的无缝集成,从而构建出高效稳定的Web应用程序。

Global site tag (gtag.js) - Google Analytics