1:struts2的工作流程

  1)客户端浏览器发出HTTP请求。

  2)根据web.xml配置,HTTP请求会被FilterDispatcher接收。

  3)根据struts.xml,找到对应的Action类和方法,并通过IOC方式,注入参数给Action。

  4)Action调用业务逻辑组件处理业务逻辑。

  5)Action执行完后,通过struts2.xml配置找到返回结果result,并跳转到对应页面。

  6)返回HTTP响应到客户端浏览器。

2:spring的优点

  1:低侵入式设计,代码污染率极低。

  2:独立于各种应用服务器,基于spring框架实现了一次编写,处处运行。

  3:DI机制降低了业务对象替换的复杂性,提高了程序之间的解耦。

  4:AOP支持允行将通用任务如安全、事务、日志等集中管理,从而提高更好的复用。

  5:Spring的ORM和dao提供了第三方持久层框架的良好整合,并简化了底层数据库的访问.

  6:灵活的设计模式和对各种框架的集成

3:spring事务的几种方式

  1)编程式事务管理:需要手动编写代码。

  2)基于TransactionProxyFactoryBean声明式事务管理:需要为每个进行事务管理的类做相应的配置

  3)基于AspectJ的XML的声明式事务管理,不需要改动类,在XML文件中配置即可

  4)基于注解的声明式事务管理,配置简单,需要在业务层类中添加注解

4:spring事务特性

  什么是事务:事务逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败。

  4种事务特性:原子性:一个事务中对数据库的操作是不可分割的操作序列,要么完全执行完,要么所有执行失败。

          一致性:数据不会因为事务的执行而遭到破坏。

          隔离性:一个事务在执行过程中不会受到其它事务的影响。

          持久性:一个事务的提交是对数据的改变是永久的。

5:事务的隔离级别

  DEFAULT:使用数据库的默认隔离级别

  read nocommited:未提交读,是最低的事务隔离级别,它充许一个事务可以看到另一个事务未提交的数据,可能导致脏度、不可重复度、幻读。

  read commited :已提交读,只有一个事务提交后另一个事务才能读取第一个事务提交的数据。避免了脏读,可能导致不可重复读、幻读。

  repeatable read:避免了脏读、不可重复读,但有可能导致幻读。

  serializable:避免了脏读、不可重复读、幻读,是一种最可靠的事务隔离级别,但花费的代价也是最高的。

6:什么是脏读,不可重复读,幻读。

  1)脏读:指当一个事务对数据进行了修改,但没有提交,这时另一个事务对这个数据读取操作,但由于修改后的数据没有提交,所以导致事务2的数据是错误的。

  2)不可重复读:事务1读取一个数据后,事务1还没有结束,这时事务2修改了数据,之后事务1又重新读取数据,导致两次读取的数据不同。

  3)幻读:事务1对表中的一行数据或者一列数据全部进行了修改,而这时事务2又插入了一条数据,导致用户以为数据表中的数据没有被修改,就好像产生幻觉了。

7:mybatis与Hibernate有什么不同?

  相同点:屏蔽jdbc api底层访问细节,使我们不用和jdbc api打交道就可以访问数据库。

  不同点:mybatis将sql语名与java代码分离,提供了将结果集自动封装为实体对象和对象集合的功能,提供了自动将实体对象的属性传递给sql语名的参数。它是通过xml配置文件中写sql语句。

      Hibernate:它是一个全自动的orm映射工具,它可以自动生成sql语句,对于一些不太复杂的sql查询,hibernate可以很好帮我们完成。

8:Hibernate的缓存机制

  为什么要有缓存:它是一个待久层框架,它需要经常访问数据库,为了降低应用程序对物理数据的访问频率,从而提高应用程序的运行效率。

  缓存分类:

    一级缓存:Hibernate一级缓存是保存在session中的,其生命周期也和session一样,当查询数据的时候,首先会查询session里面是否有当前所需要的数据,如果没有,它会将查询的数据保存在session中,下次查询这条数据的时候会直接在session中查询。

    二级缓存:二级缓存又叫SessionFactory缓存。Hibernate的二级缓存就是要为Hibernate配置一种全局缓存,让多个线程和多个事务都可以共享这个缓存。它可以在多个session中共享缓存中的数据。它主要保存很少被修改、不会被并发访问、不是很重要的数据。

  当要访问数据时,首先会先访问Session中是否有数据,如没有也配置了二级缓存,然后会在SessionFactory中查询,如果也没有才会去数据库里查询数据。在执行删除、更新、添加操作时,同时也会更新缓存。

9:Session和cookie有什么区别

  Cookie是会话技术,将用户的信息保存到浏览器的对象,也就是保存在本地计算机中。Session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息,数据也是保存在服务器上的。

  区别:

    1:cookie数据是存放在客户端浏览器上的,Session数据是存放在服务器上的。

    2:对于比较重要的数据应存放在Session中,因为cookie是不安全的,别人可以通过分析cookie进行cookie欺骗。

    3:Session会在其生命周期内何存在服务器上,当访问增多会影响服务器的性能。如只考虑服务器性能,尽量将数据保存在cookies中。

    4:单个cookie中保存的数据不能超过4K

    5:将登录信息保存在Session中,其它不重要的信息尽量保存在cookies中。

10:如何优化Hibernate

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

   2:灵活使用单向一对多

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

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

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

   6:继承类使用显示多态

   7:表字段要少,多使用表关联

SSH框架面试总结----1的更多相关文章

  1. SSM、SSH框架搭建,面试点总结

    文章目录 1.SSM如何搭建:三个框架的搭建: 2.SSM系统架构 3.SSM整合步骤 4.Spring,Spring MVC,MyBatis,Hibernate个人总结 5.面试资源 关于SSM.S ...

  2. Java就业企业面试问题-ssh框架

    SSH框架阶段SSH的优缺点,使用场景?   Hibernate优点:   (1) 对象/关系数据库映射(ORM) 它使用时只需要操纵对象,使开发更对象化,抛弃了数据库中心的思想,完全的面向对象思想 ...

  3. 企业面试问题收集-ssh框架

    SSH框架阶段 SSH的优缺点,使用场景? Hibernate优缺点 Hibernate优点:(1) 对象/关系数据库映射(ORM)它使用时只需要操纵对象,使开发更对象化,抛弃了数据库中心的思想,完全 ...

  4. 为什么大多数培训机构还停留在只教ssh框架?

    最近听一些朋友说,招聘面试的很多人简历都差不多,大部分人的简历上面都写了熟悉ssh框架,我朋友就在吐槽,为什么这些人简历都差不多,并且都熟悉ssh框架? 后面他说, 可能这些人都是培训机构出来的, 然 ...

  5. 为什么要放弃ssh框架

    本文是转载他人的,觉得很好,分享! 最近听一些朋友说,招聘面试的很多人简历都差不多,大部分人的简历上面都写了熟悉ssh框架,我朋友就在吐槽,为什么这些人简历都差不多,并且都熟悉ssh框架? 后面他说, ...

  6. SSH框架(2)

    个人分类: Java面试   Struts 谈谈你对Struts的理解. 答: 1.struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为Acti ...

  7. 【SSH】---【Struts2、Hibernate5、Spring4集成开发】【SSH框架整合笔记】

    Struts2.Hibernate5.Spring4集成开发步骤: 一.导入Jar包(基本的大致有41个,根据实际项目的需求自己添加) antlr-2.7.7.jar aopalliance.jar ...

  8. 简化SSH框架的整合

    一.开发环境: (1)    OS:Windows 7 (2)    DB:MySql 5.1.6 (3)    JDK:1.8.0_17 (4)    Server:Apache Tomcat 8. ...

  9. SSH框架整合

    SSH框架整合 一.原理图 action:(struts2) 1.获取表单的数据 2.表单的验证,例如非空验证,email验证等 3.调用service,并把数据传递给service Service: ...

随机推荐

  1. Js 文件上传后缀验证

    //img格式验证 function imgFormat(name) { //再对文件名进行截取,以取得后缀名 var namearr= name.split("."); //获取 ...

  2. 075 Sort Colors 分类颜色

    给定一个包含红色.白色和蓝色,且含有 n 个元素的数组,对它们进行排序,使得相同颜色的元素相邻,颜色顺序为红色.白色.蓝色.此题中,我们使用整数 0, 1 和 2 分别表示红色,白色和蓝色.注意:不能 ...

  3. scrapy爬取美女图片

    使用scrapy爬取整个网站的图片数据.并且使用 CrawlerProcess 启动. 1 # -*- coding: utf-8 -* 2 import scrapy 3 import reques ...

  4. HDU 1087 E - Super Jumping! Jumping! Jumping! DP

    http://acm.hdu.edu.cn/showproblem.php?pid=1087 设dp[i]表示去到这个位置时的最大和值.(就是以第i个为结尾的时候的最大值) 那么只要扫描一遍dp数组, ...

  5. Redis 基础特性讲解

    目录 1.Redis基础杂项小节 1.是什么 2.能干嘛 3.去哪下 4.Redis启动后基础知识讲解 2.Redis数据类型 1.常用的五大数据类型 2.高级'玩家'才知道的其他数据类型 3.Red ...

  6. Array.isArray() 和 isObject() 原生js实现

    function isObject(val) { return val != null && typeof val === 'object' && Array.isAr ...

  7. 现阶段github上的emysql编译无法通过的问题

    最近在写db引擎,今天用到了emysql,找到https://github.com/Eonblast/Emysql,拽下来,然后发现竟然编译不通过~~去网上找了下资料,在 http://erlang. ...

  8. I/O操作总结(一)

    所谓IO,也就是Input与Output的缩写.在java中,IO涉及的范围比较大,这里主要讨论针对文件内容的读写 其他知识点将放置后续章节(我想,文章太长了,谁都没耐心翻到最后) 对于文件内容的操作 ...

  9. 通过Maven构建打包Spring boot,并将config配置文件提取到jar文件外

    如果通过不同的IDE打包,着实会觉得依赖性太大,并且容易出现错误,操作也比较复杂 同时,spring-boot-maven-plugin的使用感觉,相关配置太少,并且无法满足方便部署和运行的需求. 这 ...

  10. Map-HashMap-LinkedHashMap-Map.Entry-Collections-可变参数

    一.Map 接口(java.util) 定义:public interface Map<K,V> 介绍:     (1)Map是一个接口,含有两个泛型,创建子类对象的时候,需要传递两个泛型 ...