面试总结

1 谈谈你 mvc 的理解? 
MVC 是 Model—View—Controler 的简称。即模型—视图—控制器。MVC 是一种设计模式, 它强制性的把应用程序的输入、处理和输出分开。MVC 中的模型、视图、控制器它们分别 担负着不同的任务。        
(1)视图: 视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并接 受用户的输入。视图不进行任何业务逻辑处理。        
(2)模型: 模型表示业务数据和业务处理。相当于 JavaBean。一个模型能为多个视 图提供数据。这提高了应用程序的重用性        
(3)控制器: 当用户单击 Web 页面中的提交按钮时,控制器接受请的 action 类对象。 因为当服务器第一次加载 struts 的配置文件的时候,创建了一个 Action 后,每发送一 个请求,服务器都会先去检索相应的范围内(request,session)是否存在 这样一个 action 实例,如果存在,则使用这个实例,如果不存在,则创建一个 action 实例。 求并调用相应的 模型去处理请求。然后根据处理的结果调用相应的视图来显示处理的结果。 MVC 的处理过程:首先控制器接受用户的请求,调用相应的模型来进行业务处理,并返回 数据给控制器。控制器调用相应的视图来显示处理的结果。并通过视图呈现给用户。 
 
2 项目中为什么使用 SSH?实际开发中如 何决定选择使用哪个框架进行开发? 
(1) 使用 Struts2 是因为 struts2 是基于 MVC 模式的,很好的将应用程序进行了分层,使开 发者更关注于业务逻辑的实现;第二,struts 有着丰富的 taglib,如能灵活运用,则能大大提 高开发效率。 
(2)使用 Hibernate:因为 hibernate 为 Java 应用提供了一个易用的、高效率的对象关系映 射框架。hibernate 是个轻量级的持久性框架,功能丰富。 
(3)使用 Spring:因为 spring 基于 IoC(Inversion of Control,反向控制)和 AOP 构架多层 j2ee 系统的框架,但它不强迫你必须在每一层中必须使用 Spring,因为它模块化的很好,允许你 根据自己的需要选择使用          它的某一个模块;采用 IoC 使得可以很容易的实现 bean 的装配,提供了简洁的 AOP 并据此实现事务管理(Transcation Managment),等等 
 
3 Struts2 中转发和重定向有何区别? 
转发:一次请求,一次响应。地址栏的 url 不会改变。在服务器端执行,所以必须在同一台 服务器上。转发速度快。 重定向:两次请求。地址栏的 url 会随之改变为定向后的那个 url。在客户端执行,所以可以

 
 页 2 
在不同的服务器上。重定向速度慢。 
4 action 是单实例还是多实例,为什么? 
action 是单实例的。当多个用户访问一个请求的时候,服务器内存中只有一个与之 对应的 action 类对象。 因为当服务器第一次加载 struts 的配置文件的时候,创建了一个 Action 后,每发送一 个请求,服务器都会先去检索相应的范围内(request,session)是否存在 这样一个 action 实例,如果存在,则使用这个实例,如果不存在,则创建一个 action 实例。 
5 struts2.0 的 mvc 模式?与 struts1.0 的区 别? 
struts2 的 mvc 模式:当用户在页面提交用户请求时,该请求需要提交给 struts2 的控 制器处理。struts2 的控制器根据处理结果, 决定将哪个页面呈现给客户端。 与 struts1 最大的不同是:struts2 的控制器。struts2 的控制器不再像 struts1 的控 制器,需要继承一个 Action 父类,甚至可以无需实现 任何接口,struts2 的 Action 就是一个普通的 POJO。实际上,Struts2 的 Action 就是 一个包含 execute 方法的普通 Java 类 该类里包含的多个属性用于封装用户的请求参数。 
 
6 Struts 的工作机制? 
Struts 2 框架的大致处理流程如下: 浏览器发送请求,例如请求/mypage.action、/reports/myreport.pdf 等。 核心控制器 FilterDispatcher 根据请求决定调用合适的 Action。 WebWork 的拦截器链自动对请求应用通用功能,例如 workflow、validation 或文件 上传等功能。 回调 Action 的 execute 方法,该 execute 方法先获取用户请求参数,然后执行某种数 据库操作,既可以是将数据保存到数据库,也可以从数据库中检索信息。实际上, 因为 Action 只是一个控制器,它会调用业务逻辑组件来处理用户的请求。 Action 的 execute 方法处理结果信息将被输出到浏览器中,可以是 HTML 页面、图 像,也可以是 PDF 文档或者其他文档。此时支持的视图技术非常多,既支持 JSP,也 支持 Velocity、FreeMarker 等模板技术。 
 

 
 页 3 
7 什么是 Hibernate 的并发机制?怎么去处 理并发问题? 
Hibernate 并发机制: a、Hibernate 的 Session 对象是非线程安全的,对于单个请求,单个会话,单个的工作 单元(即单个事务,单个线程),它通常只使用一次, 然后就丢弃。 如果一个 Session 实例允许共享的话,那些支持并发运行的,例如 Http request,session beans 将会导致出现资源争用。 如果在 Http Session 中有 hibernate 的 Session 的话,就可能会出现同步访问 Http Session。只要用户足够快的点击浏览器的“刷新”, 就会导致两个并发运行的线程使用同一个 Session。 b、多个事务并发访问同一块资源,可能会引发第一类丢失更新,脏读,幻读,不可 重复读,第二类丢失更新一系列的问题。 
 
解决方案:设置事务隔离级别。 Serializable:串行化。隔离级别最高 Repeatable Read:可重复读 Read Committed:已提交数据读 Read Uncommitted:未提交数据读。隔离级别最差 设置锁:乐观锁和悲观锁。 乐观锁:使用版本号或时间戳来检测更新丢失,在的映射中设置 optimistic- lock=”all”可以在没有版本或者时间戳属性映射的情况下实现 版本检查,此时 Hibernate 将比较一行记录的每个字段的状态 行级悲观锁:Hibernate 总是使用数 据库的锁定机制,从不在内存中锁定对象!只要为 JDBC 连接指定一下隔 离级别, 然后让数据库去搞定一切就够了。类 LockMode 定义了 Hibernate 所需的不同的锁定 级别:LockMode.UPGRADE,LockMode.UPGRADE_NOWAIT,LockMode.READ; 
 
8 Hibernate 与 jdbc 有何联系?与 Spring 有何联系? 
1、hibernate 是 jdbc 的轻量级封装,包括 jdbc 的与数据库的连接(用 hibernate.property 的配置文件实现当然本质是封装了 jdbc 的 forname), 和查询,删除等代码,都用面向对象的思想用代码联系起来,hibernate 通过 hbm 配置文件把 po 类的字段和数据库的字段关联起来比如数据库的 id, 在 po 类中就是 pravite Long id; public Long getId() ;public setId(Long id); 然后 hql 语句也是面向对象的,它的查询语句不是查询数据库而是查询类的,这些实 

 
 页 4 
现的魔法就是 xml 文件,其实 hibernate=封装的 jdbc+xml 文件. 
 
2、hibernate 中的一些对象可以给 Spring 来管理,让 Spring 容器来创建 hibernate 中一 些对象实例化。例如:SessionFactory,HibernateTemplate 等。 Hibernate 本来是对数据库的一些操作,放在 DAO 层,而 Spring 给业务层的方法定义了 事务,业务层调用 DAO 层的方法,很好的将 Hibernate 的操作也加入到事务中来了。 
9 Hibernate3 种状态如何转换? 
当对象由瞬时状态(Transient)一 save()时,就变成了持久化状态。 当我们在 Session 里存储对象的时候,实际是在 Session 的 Map 里存了一份, 也就是它的缓存里放了一份,然后,又到数据库里存了一份,在缓存里这一份叫持 久对象(Persistent)。 Session 一 Close()了,它的缓存也都关闭了,整个 Session 也就失效了, 这个时候,这个对象变成了游离状态(Detached),但数据库中还是存在的。 当游离状态(Detached)update()时,又变为了持久状态(Persistent)。 当持久状态(Persistent)delete()时,又变为了瞬时状态(Transient), 此时,数据库中没有与之对应的记录。 
10 Hibernate 拒绝连接、服务器崩溃的原 因是什么?(最少写 5 个)。 
1. db 没有打开 2. 网络连接可能出了问题 3. 连接配置错了 4. 驱动的 driver,url 是否都写对了 5. LIB 下加入相应驱动,数据连接代码是否有误 6. 数据库配置可能有问题 7. 当前联接太多了,服务器都有访问人数限制的 8. 服务器的相应端口没有开,即它不提供相应的服务 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,227评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,755评论 1 298
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,899评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,257评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,617评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,757评论 1 221
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,982评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,715评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,454评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,666评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,148评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,512评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,156评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,112评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,896评论 0 198
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,809评论 2 279
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,691评论 2 272

推荐阅读更多精彩内容