java 原理图_Java中比较重要的原理图(三大框架、、、、)

一、Struts2的工作原

0818b9ca8b590ca3270a3433284dd417.png

上图来源于Struts2官方站点,是Struts 2 的整体结构。

一个请求在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来创建的。

二、

0818b9ca8b590ca3270a3433284dd417.png

Core(The IoC container)和AOP 只是Spring 框架中的一部分。

Spring 对JDBC 的整合,属于DAO。

如上所示,Spring 的功能共6 大模块。(请查看Spring帮助手册)

1) Core 封装包是Spring 框架的最基础部分,提供Ioc 和(DI)依赖注入。

2) DAO 提供了JDBC 的抽象层。还有注解声明类型的事务管理方法。

3) ORM 该封装包提供了常用的“对象/关系”APIs。我们频繁使用的是Hibernate,除此之外还可以整合JPA、JDO、iBatis 等。

4) AOP 提供了符合AOP 规范的面向切面的编程实现

5) Web 该封装包提供了基础的针对web 开发的集成特性。此外Spring 也提供了一种MVC 实现。spring-mvc\struts\jsp\jsf

6) J2EE 一般使用较少。提供了EJB、JMS、Email 等集成。Spring 可以将发送邮件等功能整合。

三、

Servlet过滤器和生命周期

servlet的生命周期 ***

所谓生命周期,指的是servlet容器如何创建servlet实例、分配其资源、调用其方法、并销毁其实例的整个过程。

阶段一: 实例化(就是创建servlet对象,调用构造器) 在如下两种情况下会迚行对象实例化。

第一种情况:当请求到达容器时,容器查找该servlet对象是否存在,如果丌存在,才会创建实例。

第二种情况: 容器在启 劢时,戒者新部署了某个应用时,会检查web.xml当中,servlet是否有 load-on-starup配置。如果有,则会创建该servlet实例。

load-on-starup参数值越小,优先级越高(最小值为0,优先级最高)。

阶段二: 初始化 为servlet分配资源,调用init(ServletConfig config);方法 config对象可以用来访问servlet的初始化参数。 初始化参数是使用init-param配置的参数。 init可以override。

阶段三: 就绪/调用 有请求到达容器,容器调用servlet对象的service()方法。 HttpServlet的service()方法,会依据请求方式来调用doGet()戒者doPost()方法。 但是,这两个do方法默认情况下,会抛出异常,需要子类去override。

阶段四: 销毁 容器依据自身的算法,将丌再需要的servlet对象删除掉。 在删除乊前,会调用servlet对象的destroy()方法。 destroy()方法用于释放资源。 在servlet的整个生命周期当中,init,destroy只会执行一次,而service方法会执行多次。

过滤器原理

0818b9ca8b590ca3270a3433284dd417.png

1)  浏览器发送请求给服务器  2)  服务器的Servlet引擎创建Request对象&&Response 对象  3)  Servlet引擎先调用过滤器的doFilter 方法,该方法有两个参数request和 response,    (在过滤器中可以访问到Request对象&&Response 对象)  4)  过滤器对拦截的内容迚行处理  5)  之后调用SomeServlet的 service 方法  6)  service 方法执行  7)  service 方法执行结束后,将结果返回到过滤器  8)  过滤器将service 方法返回的结果再次迚行过滤  9)  最后,Servlet引擎将结果返回给浏览器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java集合框架Java用于存储和操作数据的重要工具。它提供了一组接口和类,用于处理不同类型的数据结构,如列表、集合、映射等。下面是Java集合框架的底层原理: 1. 数据结构:Java集合框架的数据结构可以分为两类:基于数组和基于链表。基于数组的数据结构如ArrayList,它使用动态数组来实现。基于链表的数据结构如LinkedList,它使用双向链表来实现。 2. 接口和实现类:Java集合框架提供了一组接口,如List、Set、Map等,定义了不同类型的集合操作。每个接口都有一些对应的实现类,如ArrayList、HashSet、HashMap等。 3. 迭代器:Java集合框架提供了迭代器接口(Iterator),用于遍历集合的元素。迭代器隐藏了底层集合的具体实现细节,使得我们可以以统一的方式访问集合的元素。 4. 泛型:Java集合框架使用泛型来支持不同类型的元素存储和操作。通过使用泛型,可以在编译时检查类型安全性,并提供更好的代码重用性和可读性。 5. 效率和性能:Java集合框架在设计上考虑了效率和性能。例如,ArrayList在随机访问元素时具有较好的性能,但在插入和删除元素时较差。LinkedList在插入和删除元素时具有较好的性能,但在随机访问元素时较差。 总的来说,Java集合框架的底层原理是通过不同的数据结构和接口实现类来提供高效的数据存储和操作功能,同时使用泛型来支持类型安全性。这些特性使得Java集合框架成为开发Java应用程序不可或缺的工具之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值