您的位置:首页 > 编程语言 > Java开发

深入分析javaweb技术内幕5---Jetty、Spring、Spring MVC

2017-02-11 15:51 357 查看
Jetty的工作原理解析

1.Jetty的基本架构



2.Jetty也是一个Servlet引擎,也可以基于AJP(定向包协议)工作,一般基于AJP

3.Jetty的基本的数据模型是Handler,所有被拓展的组件都可以被作为一个Handler添加到Server中,Jetty将帮你管理这些Handler

4.Container是管理Mbean(可管理的java资源)的容器。Jetty的Server的扩展主要是实现了一个个的Handler,并将Handler加到Server中,在Server中提供了调用这些Handler的访问规则

5.Handler两种类型

HandlerWrapper:将一个Handler委托给另一个类去执行,如我们要将一个Handler加到Jetty中,那么久必须将这个Handler委托给Server去调用
HandlerCollection:将多个Handler组装在一起,构成一个Handler链,方便我们做扩展
6.基于AJP工作

 通常一个Web服务站点的后端服务器不是讲Java的应用服务直接暴露给服务访问者,而是在应用服务者(如Jboss)的前面再加一个Web服务器(如Apache和Nginx),原因是方便做日志分析、负载均衡、权限控制、访问恶意请求以及静态资源预加载等
 在这种架构下Servlet引擎就不需要解析和封装返回的HTTP,因为HTTP的解析工作已经在Apache或Nginx服务器上完成了,JBoss只要基于更简单的AJP工作就行了,这样可以加快请求的响应速度。相对比HTTP唯一的不同就是在读取到Socket数据包时如何来转换这个数据包,按照HTTP的包格式来解析就是HttpParser,按照AJP来解析就是Ajp13Parserer

7.与Tomcat的比较

架构:Jetty是面向Handler的架构,就想Spring是面向Bean的架构,iBatis是面向Statement的一样,而Tomcat是以多级容器构建的
拓展性:Jetty更易被拓展
性能:Tomcat在处理少数非常繁忙的连接上更有优势,也就是说链接的生命周期如果短,Tomcat的总体性能更高;而Jetty恰恰相反,Jetty可以同时处理大量连接而且可以长时间保持这些连接,如一些web连天应用

Spring框架的设计理念与设计模式分析
1.Spring框架的总体架构图



2.Spring解决了一个非常关键的问题,它可以让你把对象之间的依赖关系转而用配置文件管理,也就是它的依赖注入机制。而这个注入关系在一个叫Ioc的容器中管理
3.核心组件的协同工作

Context给数据提供生存环境,发现每个Bean之间的关系,为他们建立这种关系并且维护好这种关系,所以Context就是一个Bean关系的集合,这个关系集合就是Ioc容器。
Core就是发现、建立和维护每个Bean之间的关系所需要的一系列工具,定义了资源的访问方式
4.ApplicationContext必须完成的工作

标识一个应用环境
利用BeanFactory创建Bean对象
保存对象关系表
能够捕获各种事件
5.Spring的AOP特性

AOP基于动态代理实现的
Spring的AOP实现遵守了AOP联盟的约定,同事Spring又扩展了它,增加了Pointcut、Advisor等一些接口使其更加灵活
6.Spring用到的设计模式

代理模式:给某一个对象创建一个代理对象,由这个代理对象控制对源对象的引用,而创建这个代理对象后可以在调用原对象时增加一些额外的操作
策略模式:顾名思义就是做某事的策略,这在变成上通常就是指完成某个操作可能有多种方法,这些方法各有千秋,可能有不同的适合场合,然而这个这些操作方法都有可能被用到,把各个操作方法都当做一个实现策略,使用者可根据需要选择适合的策略

Spring MVC
1.市场上主流MVC框架有Struts和Spring MVC,Struts1.x、spring mvc和servlet只有一个实例,Struts2.x每次访问都会有一个实例,Spring mvc是面向方法级,Struts是面向对象
Spring mvc实例:http://blog.csdn.net/zzhao114/article/details/54709629
2.Spring MVC的Control主要由HandlerMapping和HandlerAdapters两个组件提供
3.使用Modle而不用request,虽然model最终也是合并到request,但是为了低耦合的设计
4.使用的设计模式

模板模式:核心是,大的逻辑已经定义,你要做的就是实现一些具体的步骤,不同的人实现这些具体步骤的方法也会有所不同,从而模板的行为也会表现出具体的区别。如HandlerMapping的设计
5.Spring MVC和Struts区别 http://blog.csdn.net/zzhao114/article/details/54985448

深入分析ibatis框架

1.iBatis主要完成

根据JDBC规范建立与数据库连接
通过反射打通Java对象与数据库参数交互之间相互转化的关系
2.设计模式:

简单工厂模式:根据客户指定的一些属性就可以通过调用工厂类来生产产品。如com.iBatis.sqlmap.engine.type.TypeHandlerFactory类,使用简单工厂创建不用的TypeHandler对象
工厂模式:简单工厂模式中通过指定特定产品属性来生产不同的具体的产品,但是有时我们并不知道要生产的产品有哪些特定的产品属性,但是可能知道哪些工厂生产的产品具有我们需要的产品属性,也就是根据不同的工厂来决定不同的产品,与简单工厂类似,只是增加了一个抽象工厂角色。如iBatis中的资源加载,对应的类时DataSourceFactory
3,.Hibernate和Mybatis区别 http://blog.csdn.net/zzhao114/article/details/54985455
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jetty spring mvc spring