ssh框架面试

谈谈对mvc的理解:
mvc就是一种开发模式,model-view-controller的简称,就是模型-视图-控制器
视图:
就是用户看到并进行交互的界面,视图向用户显示相关的数据,并接受用户的输入,视图不尽兴任何业务逻辑的处理。
模型:
表示业务数据和业务逻辑,详单与javabean,一个模型能位多个视图提供数据,这提高了应用程序的重用性。

 控制器:
     当用户点击web页面中的提交按钮,控制器接受请求并调用相应的模型去处理请求。

mvc的处理过程:首先控制器接受用户的请求,调用相应的模型来进行业务处理,并返回数据给控制器,
struts1和struts2 的区别?
struts1mvc模式的实现,接收用户请求,调用业务逻辑代码,转发至正确页面,控制器
struts2读取struts的优点,以webwork为核心,接口可重用的标准。,
拦截器。
项目中为什么使用ssh?
1 使用struts是因为基于mvc模式的,很好的将应用程序进行分层,让程序员更关注业务逻辑的实现,struts有丰富的taglib,如能灵活运用,则大大提高开发效率
2 hibernate位Java应用提供了易用的高效率的对象关系映射框架,是一个轻量级吃机型框架。
3使用spring,因为spring基于ioc反响控制,和aop面向切面编程。多层j2ee系统的框架,但是不强迫你在每一层都是用spring,因为他模块化的很好,允许根据自己的需要选择使用他的某一个行为。

什么时候执行拦截器?先执行action的创建还是拦截器?
按照用户顺序执行拦截器,
先执行action类的创建再执行拦截器,

struts2的核心功能是什么?
是内置的拦截器实现的

谈谈对struts的理解
struts是一个基于mvc开发的web层框架,实质是一个强大的servlet,负责处理请求转发。
1 客户端请向servlet容器(tomcat)提交了一个请求,
2 请求经过了一系列的容器
3 核心控制被调用,询问actionmapper来决定请求是否要嗲用某个action
4 如果action mapper决定需要调用某个action核心过滤器,把控制器委派给actionproxy,
5 actionproxy通过configuractionmanager询问框架配置文件如(struts.xml)文件,找到需要调用的action类
6 action proxy创建一个actioinvocation的实例
7 action invocation负责调用action,在此之前负责依次调用拦截器。
8 action调用结束,action invocation负责根据结果码字符串,再struts.xml文件配置找到相应的结果
9 拦截器执行
10 过滤器执行

struts的优缺点

. 优点

:实现mvc控制模式的开发,结构清晰,让开发者只关注业务逻辑的开发。有丰富的标签库,提高了开发的效率,页面导航语言(ognl) 。还有异常处理机制,数据库连接池和语言支持i18n.

缺点:
struts必须是线程安全的,仅仅只允许一个实例去处理所有的请求,所以action用到所有的资源都必须统一同步,不然会有线程安全。
测试不安全,当struts的每一个都和web层耦合在一起,这样他的测试依赖于web容器,单元测试不容易,不过可以使用junit的扩展工具strustestcase实现
谈谈对hibernate的理解
是一个 orm思想的实现,对jdbc的的封装,通过配置使Javabean对象和数据库表之间进行映射,提供了增删改查的操作,同时支持事务处理,对数据库的记录斤进行缓存机制,提高了效率,可以让程序员不写sql,语句,不关心数据库的差异,通过方言对数据进行很好的适配。
hibernate的配置文件里面配置了数据源,连接池,缓存和事务,及其表的生成策略等配置。
映射文件定义了实体对象和数据库表知啊进的映射关系,还定义了对象和对象之间的映射关系:一对多 多对多 多对一
还有查询和修改,里面用query查询可以进行分页 。
hibernate的工作原理
创建配置文件
创建session工厂
得到session进行增删改查
得到事务
持久化
提交事务
回滚

hibernate的优点
对jdbc访问数据库的代码封装简化了数据库层繁琐的重复代码。
是一个orm实现简化dao层,使用Java反射机制,适用于多种数据库,以一对多,多对一,多对多的机制。

三种状态之间的转换
这里写图片描述

加载方式有几种?为什么回只用延迟加载?
延迟加载和立即加载两种,
当应用程序只需要访问需要访问的对象的时候,使用延迟加载,就不会加载对于的对象。

一级缓存和二级缓存机制:
一级缓存:
session级别的,又叫做事务缓存,hibernate内置的,不能卸除的
缓存范围:缓存只能被当前session对象访问,缓存生命周期依赖于session的生命周期,当session被关关闭后,session的生命周期也结束了。
二级缓存:
sessionfactory级别的缓存,使用缓存插件,eccache插件,缓存被所有的session共享,这些seesion可能并发访问缓存,所以必须对缓存进行更新。缓存的生命周期主要依赖于应用程序的生命周期,应用程序结束后,缓存生命周期也就结束了,二级缓存属于应用程序的缓存。

谈谈对Spring的理解
spring是一个轻量级的开源的框架,是一个ioc和aop的容器。
spring的核心就是控制反转(IOC)和切面编程(aop)
ioc和di到底是什么?
ioc是某个角色需要另一个协助时,在传统的应用程中,通常由调用者来创建被调用者的实例,在sprin中创建调用者的工作不由被调用者完成,
DI其实控制反转和依赖注入是一样的,就是在spring配置文件中的bean之间的ref进行依赖注入或者控制反转。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值