三大框架面试整合.docx
- 文档编号:7169799
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:8
- 大小:107.10KB
三大框架面试整合.docx
《三大框架面试整合.docx》由会员分享,可在线阅读,更多相关《三大框架面试整合.docx(8页珍藏版)》请在冰豆网上搜索。
三大框架面试整合
三大框架面试题目
Struts,Spring,Hibernate三大框架的面试
1.Hibernate工作原理及为什么要用?
原理:
1.读取并解析配置文件2.读取并解析映射信息,创建SessionFactory3.打开Session4.创建事务Transation5.持久化操作6.提交事务7.关闭Session8.关闭SesstionFactory
为什么要用:
1.对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
2.Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。
他很大程度的简化DAO层的编码工作3.hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。
4.hibernate的性能非常好,因为它是个轻量级框架。
映射的灵活性很出色。
它支持各种关系数据库,从一对一到多对多的各种复杂关系
2.Hibernate是如何延迟加载?
Hibernate为什么要实现序列化
1.Hibernate2延迟加载实现:
a)实体对象b)集合(Collection)
2.Hibernate3提供了属性的延迟加载功能当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。
它的作用是可以将一个对象实例序列化,序列化后你可以选择将它保存在你需要的位置。
相对的,读取后生成的对象所有属性(除了设置为瞬时值的属性)将和原对象的属性相同(只是内存地址不同)。
这样可以方便的将一个java对象写入到磁盘中,保存该对象的所有状态!
值得注意的是序列化的对象中包含的属性和其他对象都需要实现序列化接口,不然无法正常序列化!
在hibernate里,并非所有的实体类必须实现序列化接口,因为在hibernate中我们通常是将基本类型的数值映射为数据库中的字段。
而基础类型都实现了序列化接口(String也实现了)。
所以,只有在想将一个对象完整存进数据库(存储为二进制码),而不是将对象的属性分别存进数据库,读取时再重新构建的话,就可以不用实现序列化接口。
实现了Serializable,可以方便保存数据
4.Struts1流程:
1、客户端浏览器发出HTTP请求。
2、根据web.xml配置,该请求被ActionServlet接收。
3、根据struts-config.xml配置,ActionServlet先将请求中的参数填充到ActionForm中,然后ActionServlet再将请求发送到Action进行处理。
4、是否验证,需要验证则调用ActionForm的validate方法,验证失败则跳转到input,成功则继续。
5、Action从ActionForm获得数据,调用javabean中的业务方法处理数据。
6、Action返回ActionForward对象,跳转到相应JSP页面或Action。
7、返回HTTP响应到客户端浏览器。
MVC设计模式:
modal:
“模型”也称业务逻辑,是正真完成任务的代码,相当与JavaBeanview:
视图,其实就是显示界面,相当于JSPcontroller:
控制器,他控制模型和视图的交互过程,相当于servletstruts1是基于MVC设计模式hibernate是基于ORM对象关系映射
5.struts是什么?
struts1是基于JSP和servlet的一个开源的Web应用框架,使用的是MVC的设计模式struts2是基于webwork技术的框架,是sun和webwork公司联手开发的一个功能非常齐全的框架,struts2和struts1没有任何关系,是一个全新的框架
6.spring是什么?
spring是一个集成了许多第三方框架的大杂烩,其核心技术是IOC(控制反转,也称依赖注入)和AOP(面向切面编程)
7.hibernate是什么?
hibernate是基于ORM对象关系映射(完成对象数据到关系数据映射的机制)实现的,做数据持久化的工具
8.JSF是什么?
JavaServerFace是基于组件的web开发框架,跟sturts差不多的框架
9.数据库里面的索引和约束是什么?
索引是为了提高数据的检索速度,索引是建立在数据表上,根据一个或多个字段建立的约束是为了保持数据的完整性,约束有非空约束,主键约束,外键约束等等。
10.spring是什么
这个问题,往往可以通过我们为什么要使用spring这个问题来切入:
AOP让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。
使用AOP后,公共服务(比如日志、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。
IOC允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。
正如单词倒置所表明的,IOC就像反过来的JNDI。
没有使用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straightconstruction),每一个对象都是用其协作对象构造的。
因此是由容器管理协作对象(collaborator)。
Spring即使一个AOP框架,也是一IOC容器。
Spring最好的地方是它有助于您替换对象。
有了Spring,只要用JavaBean属性和配置文件加入依赖性(协作对象)。
然后可以很容易地在需要时替换具有类似接口的协作对象。
11.用自己的话简要阐述struts2的执行流程。
Struts2框架本身大致可以分为3个部分:
核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。
核心控制器FilterDispatcher是Struts2框架的基础,包含了框架内部的控制流程和处理机制。
业务控制器Action和业务逻辑组件是需要用户来自己实现的。
用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。
Struts2的工作流程相对于Struts1要简单,与WebWork框架基本相同,所以说Struts2是WebWork的升级版本。
基本简要流程如下:
1、客户端浏览器发出HTTP请求。
2、根据web.xml配置,该请求被FilterDispatcher接收。
3、根据struts.xml配置,找到需要调用的Action类和方法,并通过IoC方式,将值注入给Aciton。
4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。
5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。
6、返回HTTP响应到客户端浏览器。
Struts2的工作原理
(1)客户端发送一个HTTP请求道服务器
(2)FilterDispatcher拦截该请求并寻求恩ActionMapper来决定是否需要调用哪个Action
(3)FilterDispatch吧控制器委派给ActionProxy,ActionProxy会调用配置管理器从strus.xml文件中读取配置信息,然后创建ActionInvocation的实例对象
(4)ActionInvocation的实例对象调用Action并执行Aciton前后的拦截器
(5)一旦Aciton执行完毕,ActionInvocation的实例对象会根据struts.xml中的配置找到对应的结果试图来呈现页面
(6)拦截器会再次被执行,顺序与执行Action时的顺序正好相反,然后试图会返回给FilterDispacther并呈现在客户端浏览器中
1:
首先要做好准备工作
下一步是你要选择的具体类别
这样就可以开工了
2用struts2开发首先要了解里面都有什么东西
比如说你要做一个struts的小项目首相要做的具体步骤
(1)在src下面应该包括Action类、实体类(entity)、帮助类(SqlsessionFactory/DBhelper)、
在Action类里具体些该类的一些方法比如登陆、删除、添加等等。
(2)struts配置文件里的属性的功能介绍
Pacakge标签中name属性是包的名称,该包必须继承struts默认的包,否则要报错的
其中里面还有一个namespace属性是用来区分包的,比如前台有个index页面,后台可以通过namespace的不同也可以由个index页面
Action中的name是页面上你要提交的actionname,class是你的资源来源地
Result是通过result中type属性返回的值(dispatcher,redirect,chan)进行页面的跳转。
(3)在Action类中首先该类必须继承ActionSuppor类
(4)并且该类中的方法都是公共的返回类型都是String类型publicString方法名
(5)解耦和耦合的方法介绍
解耦的方法可以在Action中直接访问对应HttpServletRequest、HttpServletSession、
HttpServletContext
解耦方法是互补依赖的,很常用
3:
具体项目实战操作讲要
(1)解决中文乱码问题:
(2)属性驱动和模型驱动的介绍 属性驱动是在Action类的内部直接写实体类的具体属性,该方法不常用,应为太繁琐 模型驱动是在建一个实体类,里面都是一些实体的具体属性,在Action中直接调用该类然后给他get和set方法就可以通过类名+点直接访问 (3)拦截器 工作原理: 拦截器是围绕Action和result的执行而执行的,Action被一系列的Action包裹着,首先执行Action之前的拦截器,并按照顺序依次执行拦截器1,拦截器2,拦截器3….. 在Action和result执行过之后,拦截器会再一次执行,并按照相反的顺序依次执行 (4)自定义拦截器在使用拦截器的时候一定要应用struts中自带的拦截器,他为我们提供了好多我们需要的拦截器,具体代码是在你自定义的拦截器中直接引用就可以了, 默认的拦截器放在一个默认的站里所以说直接引用该站即可;同时自己也可以自定义一个站来存放自己自定义的拦截器最后将其站设置为默认站来使用 代码是 (5)拦截方法过滤 建一个类继承MethodFilterInterceptor (6)拦截器的实现有两种实现方法: 一种是: 建一个类实现interceptor接口 另一种是: 建一个类继承abstractInterceptor (7)拦截的顺序 首先执行Action之前的拦截器,并按照顺序依次执行拦截器1,拦截器2….., 在Action和result执行过之后,拦截器会再次执行,并按照相反的吮吸依次执行 (8)标签库和OGNL表达式 Struts2中ActionContext、ValueContext和ValueStack对象鱼OGNL密切的关系 在ActionContext中包含有StackContext和ValueStack,ValueStack是ActionCOntext的根元素,所以调用值站里面的属性是可以直接调用.(一般不忘值站里放东西) 在页面区别StackContext和ValueStack用#号区别有的话去StackContext中查找 一般情况下: 会话(Session)请求参数(parameter)和Servlet上下文对象(ServletContext)等对象,实际上都存在ActionContext上下文中的StackContext中 (9)OGNL操作符 “%”号用于对属性字符串类型的OGNL表达式进行计算主要用在submit标签中,其他的也是可以的 “? ”,“^”,“$”的具体含义 ? 操作符取出所有符合选择逻辑的元素 ^操作符取出符合选择逻辑的第一个元素 $操作符取出符合选择逻辑的最后一个元素 (10)Struts2的标签库 首先是一些概念性的东西 UI标签: 只要用于生成HTML元素 { 表单标签: 主要用于生成HTMl表单元素 主要常用的包括(formcheckboxlistradioselectdoubleselectoptiontransferselecttoker) 非表单标签: 主要包含一系诶常用的功能标签,例如显示日期或属性菜单 主要常用的包括(Datetimepikertreetreenode) } 非UI标签: 只要用于逻辑控制、数据访问登操作 { 数据访问标签: 只要用于获得或输出ValueStack中的值 主要包括(action、includeparampropertysettexturldate) 逻辑控制标签: 只要用于数据访问中的条件分支、循环等流程控制 主要包括(ifelseifelsegeneratoriterator) } Ajax标签: 只要用于支持Ajax访问 (11)类型转换盒数据校验 自定义类型转换器: 首先必须直接实现ognl。 TypeConverter接口但是为了开发方便,可以直接继承org.apache.Struts2.util.StrutsTypeConverter抽象类,并且实现其中的两个方法 注册定义类型转换器 创建好的类型转换器后只有将它注册在Web应用中,Struts2框架才能正常使用该类型转换器 数据校验 用数据校验的原因是: 按理说可以在Action中写一些飞空验证但是,尽量没法方法应该精良完成单一的任务,而不推荐两个货两个以上的功能在同一个方法中实现,否则就问烦了“高内聚,低耦合”的设计原则,这样会给系统的开发与维护带来很大的麻烦,尤其是一个大型系统更是如此 ActionSupport类的validate()方法专门用来实现数据校验,所以我们创建的Action通常继承该类,同时重写validate()方法来实现数据校验,Strtus2框架会在调用Action的业务方法之前调用validate()完成数据校验 Struts2的校验顺序 1: 客户端校验,如果有的话 2: 对请求的字符串参数进行类型转换,并设置为对应的Action属性值 3: 调用Action中的validateXxx方法进行校验 4: 调用Action的validate方法进行校验 5: 完成上面的步骤之后,Struts2框架开始检查在以上过程中有没有通过输入校验,如果没有则返回“input”逻辑试图,如果通过,则执行Action中的业务方法 6: 系统根据上一步骤的逻辑试图名,跳转到相对应的试图页面 Struts2的内置校验器 使用到校验器就不需要校验代码了像validate方法就不需要了! 只需要增加一个校验配置文件即可,校验配置文件必须和需要验证的Action放在同一个包中,并且采用“Action”的类名—validation.xml方式命名。 (12)Struts2国际化 实现国际化的过程需要三个步骤: 1: 创建中英文资源文件 2: 在Struts.xml文件中配置资源文件 3: 在JSP页面中使用 text/>标签货OGNL显示国际化信息 国际化资源命名规范是: resource.name_language.properties 在配置文件中需要添加一行代码
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 框架 面试 整合