您的位置:首页 > 其它

SSH原理

2015-08-22 18:22 190 查看
Hibernate工作原理及为什么要用?

原理:

1.读取并解析配置文件

2.读取并解析映射信息,创建SessionFactory

3.打开Sesssion

4.创建事务Transation

5.持久化操作

6.提交事务

7.关闭Session

8.关闭SesstionFactory

为什么要用:

1.对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。

2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作

3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。

4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。

2.Hibernate是如何延迟加载?

1. Hibernate2延迟加载实现:a)实体对象b)集合(Collection)

2. Hibernate3提供了属性的延迟加载功能

当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,

从而提高了服务器的性能。

3.Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系)

类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、

one-to-many、many-to-many、

4.说下Hibernate的缓存机制

1.内部缓存存在Hibernate中又叫一级缓存,属于应用事物级缓存

2.二级缓存:

a)应用及缓存

b)分布式缓存

条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非关键数据

c)第三方缓存的实现

5.如何优化Hibernate?

1.使用双向一对多关联,不使用单向一对多

2.灵活使用单向一对多关联

3.不用一对一,用多对一取代

4.配置对象缓存,不使用集合缓存

5.一对多集合使用Bag,多对多集合使用Set

6.继承类使用显式多态

7.表字段要少,表关联不要怕多,有二级缓存撑腰

Struts2框架

一、简介

Struts2是一个相当强大的Java Web开源框架,是一个基于POJO的Action的MVC Web框架。它基于当年的WebWork和XWork框架,继承其优点,同时做了相当的改进。

1、Struts2基于MVC架构,框架结构清晰,开发流程一目了然,开发人员可以很好的掌控开发的过程。

2、使用OGNL进行参数传递。OGNL提供了在Struts2里访问各种作用域的数据的简单方式,你可以方便的获取Request、Attribute、Application、Session、Parameters中的

数据。大大简化了开发人员在获取这些数据是的代码量。

3、强大的拦截器。Struts2的拦截器是一个Action级别的AOP,Struts2中的许多特性都是通过拦截器来实现的,例如异常处理、文件上传、验证等。 拦截器是可配置与重用的

可以将一些通用的功能如:登录验证、权限验证等置于拦截器中以完成了系统中的权限验证功能。

4、易于测试。Struts2的Action都是简单的POJO,这样可以方便的对Struts2的Action编写测试用例,大大方便了Java Web项目的测试。

5、易于扩展的插件机制。在Struts2添加扩展是一件愉快而轻松的事情,只需要将所需要的Jar包放到WEB-INF/lib文件中,在Struts.xml中做一些简单的设置就可以实现扩展。

6、模块化管理。Struts2已经把模块化作为了体系架构中的基本思想,可以通过三种方法来将应用程序模块化:将配置信息拆分成多个文件把自包含的应用模块创建为插件创建

的框架特性,即将于特定应用无关的新功能组织成插件,以添加到多个应用中去。

7、全局结果与声明式异常。为应用程序添加全局的Result,和在配置文件中对异常进行处理,这样当处理过程中出现指定异常时,可以跳转到特定页面。

二、Struts2的工作机制

在Struts2框架中的处理大概分为:

1、客户端初始化一个指向Servlet容器(如Tomcat)的请求;

2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮组,例如:SiteMeshPlugin);

3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action;

4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy;

5、ActionProcy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类;

6、ActionProxy创建一个ActionInvocation实例。

7、ActionInvocation实例使用命令模式来调用,在调用Action的过程前后,

涉及到相关拦截器(Interceptor)的调用。

8、一旦Action执行完毕,ActionInvocation负责根据Struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的

JSP或者FreeMarker的模板。在表示过程中可以使用Struts2框架中继承的标签。在这个过程中需要涉及到ActionMapper。

Spring框架讲解

一、简介

Spring为企业应用的开发提供了一个轻量级的解决方案,包括基于依赖注入的核心机制,基于AOP的声明式事务管理,与多种持久层技术的整合,以及优秀的Web MVC框架

等。Spring支持对POJO(Plain Object Java Object,指最传统的Java对象,和任何模式都无关)的管理。Spring的目标是实现一个全方位的整合框架,在Spring框架下实现多

个子框架的组合,这些子框架之间彼此可以独立,也可以使用其它的框架方案加以代替。

Spring是一个开源的项目;它基于IOC和AOP的架构多层J2ee系统的框架,

但它不强迫你必须在每一层中必须使用Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块;它实现了很优雅的MVC,对不同的数据访问技术提供了

统一的接口,采用IOC使得可以很容易的实现bean的装配,提供了简洁的AOP并据此实现Transaction Manager等等。

优点:

1、Spring能有效地组织你的中间层对象,不管你是否选择使用了EJB。

2、Spring能消除在许多工程中常见的对Singleton的过多使用;降低了系统的可测试性和面向对象的程度。

3、通过一种在不同应用程序和项目间一致的方法来处理配置文件,Spring能消除各种各样自定义格式的属性文件的需要。

4、通过把对接口编程而不是对类编程的代价几乎减少到没有,Spring能够促进养成好的编程习惯。

5、Spring被设计为让使用者它创建的应用尽可能少的依赖于他的API。

6、使用Spring构建的应用程序易于单元测试。

7、Spring能使EJB的使用成为一个实现选择,而不是应用架构的必然选择。

8、Spring帮助你解决许多问题而无需使用EJB。

9、Spring为数据存取提供了一个一致的框架,不论使用的是JDBC还是O/R Mapping产品(如Hibernate)。

缺点:

Jsp中要写很多代码、控制器过于灵活,缺少一个公用控制器。

二、Spring的工作机制

1、用户向服务器发送请求,请求被Spring前端控制DispatcherServlet捕获;

2.、DispatcherServlet对请求URL进行解析,得到请求资源标示符(URI)。然后根据该URI,调用Handler Mapping获得该Handler配置的所有相关的对象(包括Handler对

象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回;

3、DispatcherServlet根据获得的Handler,选择一个合适的HandlerAdapter。(如果成功获得后,此时将开始执行拦截器的preHandler(…)方法)。

4、提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)。在填充Handler的入参过程中,根据你的配置,Spring将帮助你做一些额外的工作(如:

HttpMessageConveter、数据装换、数据格式化、数据验证),验证结果存储到BindingResult或Error中。

5、Handler执行完成后,向DispatcherServlet返回一个ModelAndView对对象;

6、根据返回的ModelAndView,选择一个合适的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet;

7、ViewResolver结合Model和View,来渲染试图。

8、将渲染结果返回给客户端。

注解:

1.spring mvc将所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。

2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.

3.DispatcherServlet将请求提交到目标Controller

4.Controller进行业务逻辑处理后,会返回一个ModelAndView

5.Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象

6.视图对象负责渲染返回给客户端。

Spring的事务管理

事务就是对一系列的数据库操作(比如插入多条数据)进行统一的提交或回滚操作,如果插入成功,那么一起成功,如果中间有一条出现异常,那么回滚之前的所有操作。

这样可以防止出现脏数据,防止数据库数据出现问题。

开发中为了避免这种情况一般都会进行事务管理。Spring中也有自己的事务管理机制,一般是使用TransactionMananger进行管理,可以通过Spring的注入来完成此功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: