java 原理图_Java中比较重要的原理图(三大框架、、、、)
一、Struts2的工作原
上图来源于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来创建的。
二、
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方法会执行多次。
过滤器原理
1) 浏览器发送请求给服务器 2) 服务器的Servlet引擎创建Request对象&&Response 对象 3) Servlet引擎先调用过滤器的doFilter 方法,该方法有两个参数request和 response, (在过滤器中可以访问到Request对象&&Response 对象) 4) 过滤器对拦截的内容迚行处理 5) 之后调用SomeServlet的 service 方法 6) service 方法执行 7) service 方法执行结束后,将结果返回到过滤器 8) 过滤器将service 方法返回的结果再次迚行过滤 9) 最后,Servlet引擎将结果返回给浏览器
java 原理图_Java中比较重要的原理图(三大框架、、、、)相关推荐
- java 事务_Java中事务总结详解(精华)
1.什么是JAVA事务? 通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性 (is ...
- [转载] c++多态与java多态性_Java中的多态性
参考链接: Java中的加法和串联 c++多态与java多态性 Polymorphism is one of the core concepts of OOPS paradigm. The meani ...
- java 且_JAVA中逻辑运算符“|”和“”与“||”和“”的用法
1.使用规则: (1)& 可以用作逻辑与的运算符,表示逻辑与(and) a.当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false ...
- java 包装类_Java中的包装类
Java中哪些需要包装类 它们将原始数据类型转换为对象.如果我们希望修改传递给方法的参数,则需要对象(因为基元类型是按值传递的). java.util包中的类只处理对象,因此在这种情况下包装类也有帮助 ...
- java 难度_java中难度大一点的面试题
1.请大概描述一下Vector和ArrayList的区别,Hashtable和HashMap的区别.(5) (1)Vector和ArrayList的异同 实现原理,功能相同,可以互用 主要区别: Ve ...
- math java 计算_Java中的数学计算函数汇总
Math类: java.lang.Math类中包含基本的数字操作,如指数.对数.平方根和三角函数. java.math是一个包,提供用于执行任意精度整数(BigInteger)算法和任意精度小数(B ...
- java中的多态性_[转载] c++多态与java多态性_Java中的多态性
参考链接: Java中的加法和串联 c++多态与java多态性 Polymorphism is one of the core concepts of OOPS paradigm. The meani ...
- c++多态与java多态性_Java中的多态性
c++多态与java多态性 Polymorphism is one of the core concepts of OOPS paradigm. The meaning of polymorphism ...
- java引_JAVA中的引用
JDK1.2之后,Java扩充了引用的概念,将引用分为强引用.软引用.弱引用和虚引用四种. 强引用 类似于"Object a = new Object()"这类的引用,只要垃圾强引 ...
最新文章
- #include 和 #include 的区别
- 望手指半月痕可知内脏疾病
- 删除-ARMV8-V9-ATF-FFA学习笔记目录-2021-08
- Windows内核实验002 中断现场
- ubuntu下面使用clion
- spring - -
- when is Lessifier triggered to be loaded
- 深入分析glibc内存释放时的死锁bug
- 安卓开发 底部导航图标切换时动画效果_体验安卓 10:好用百倍都不止!
- 攻与防--论游戏好玩的本质
- 带你认识六种设计原则(开闭原则、里氏代换原则、依赖倒转原则....)
- 屏幕录制视频时有杂音怎么办?
- TCP/IP模型第二层--数据链路层
- 2023重庆邮电大学计算机考研信息汇总
- 基于Java的聊天即时通讯软件的设计与实现
- 计算机产业、互联网造富的时代
- mysql java 解决幻读_MySQL 是如何解决幻读的
- vue打包部署,解决更新版本清理缓存问题
- [OpenGL] 捏脸系统
- 在html中做产品介绍页面,电商网站的产品介绍怎么写,有哪些方法?
热门文章
- GIAC 2020 全球互联网架构大会演讲实录:基于TarsGo的微服务技术架构实践
- PKG_CONFIG_PATH错误提示解决办法
- st(state-threads) coroutine和stack分析
- EasyRTMP实现的rtmp推流的基本协议流程
- MySQL Group Replication 部署 (Single Master)
- 自定义语言的实现——解释器模式
- maven项目创建过慢解决
- 数据结构:用栈实现中缀表达式的求值(文字描述+详细步骤示例)
- Leet Code OJ 268. Missing Number [Difficulty: Medium]
- java最小子串覆盖_Java 算法-最小子串覆盖