2022年2022年框架面试题 .pdf
《2022年2022年框架面试题 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年框架面试题 .pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1、写出你熟悉的开源框架以及各自的作用(项目中为什么使用SSH)答:框架:hibernate,spring,struts1/struts2.Hibernate主要用于数据持久化;封装了JDBC操作;还提供了一个易用的、高效率的对象关系映射框架;Spring 的控制反转能起到解耦合的作用;Struts 主要用于请求处理的流程控制;struts是基于 MVC 模式的,很好的将应用程序进行了分层,使开发者更关注于业务逻辑的实现;struts有着丰富的taglib,如能灵活运用,则能大大提高开发效率。Struts(表示层)+Spring(业务层)+Hibernate(持久层)struts相关2、简述
2、STRUTS 架构(说下 Struts的工作流程、struts的工作原理)简述:Struts是采用 Java Servlet/JavaServer Pages技术,开发Web应用程序的开放源码的framework。采用 Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。Struts有如下的主要功能:一.包含一个 controller servlet,能将用户的请求发送到相应的Action对象。二.JSP 自由 tag 库,并且在 controller servlet中提供关联支持,帮助开发员创建交互式表单应用。三.提供了一系列实用对象:XML处理、
3、通过Java reflection APIs自动处理JavaBeans 属性、国际化的提示和消息。流程:在 web应用启动时就会加载初始化ActionServlet,ActionServlet从 struts-config.xml文件中读取配置信息,把它们存放到各种配置对象当ActionServlet接收到一个客户请求时,将执行如下流程.(1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息;(2)如果 ActionForm实例不存在,就创建一个ActionForm 对象,把客户提交的表单数据保存到ActionForm对象中;(3)根据配置信息决定是否需要
4、表单验证.如果需要验证,就调用 ActionForm 的 validate()方法;(4)如果 ActionForm 的 validate()方法返回 null或返回一个不包含ActionMessage 的 ActuibErrors对象,就表示表单验证成功;(5)ActionServlet根据 ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的Action实例不存在,就先创建这个实例,然后调用 Action的 execute()方法;(6)Action的 execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发
5、给ActionForward对象指向的 JSP组件;(7)ActionForward对象指向 JSP组件生成动态网页,返回给客户;3、Struts对 MVC 的体现M:在 Struts中,模型由 JavaBean 和 EJB组件组成,用来实现程序的业务逻辑部分.C:ActionServlet,RequestProcessor和 Struts辅助类来实现控制器。ActionServlet是 Struts中的核心控制器 ActionServlet会根据在 Struts配置文件中的配置将控制权转交给相应的Action类。Action 类是业务的代理,在 Action类中可以调用模型组件或者编写其他业
6、务逻辑代码来完成一项具体的业务。V:Struts框架中的视图主要由JSP文件构成,在 JSP文件中可应用Struts标签和自定义标签来表现模型组件中的数据进行简单的处理。ActionForm Bean实际上是一个遵循了特殊约定的JavaBean,在 Struts中ActionForm Bean可看作为一个中间存储器在视图与控制器之间进行数据传递。4、struts1.2和 struts2.0的区别?a、Action类:名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 8 页 -struts1.2要求 Action类继承一个基类。struts2.0 Action可以是简单的JOPO对象
7、或者(都会)继承ActionSupport基类b、线程模式struts1.2 Action是单例模式的并且必须是线程安全的,因为仅有一个Action的实例来处理所有的请求。单例策略限制了Struts1.2 Action能做的事情,并且开发时特别小心。Action资源必须是线程安全的或同步的。struts2.0 Action为每一个请求产生一个实例,因此没有线程安全问题。c、Servlet依赖struts1.2 Action依赖于 Servlet API,因为当一个Action被调用时 HttpServletRequest和HttpServletResponse被传递给 execut 方法。st
8、ruts2.0 Action不依赖于容器,允许 Action脱离容器单独测试。如果需要,Struts2 Action仍然可以访问初始的 Request 和 Response。但是,其他的元素减少或者消除了直接访问HttpServletRequest和 HttpServletResponse的必要性。d、可测性测试 struts1.2 Action的一个主要问题是execute 方法暴露了Servlet API(这使得测试要依赖于容器)。一个第三方扩展:struts TestCase 提供了一套struts1.2的模拟对象来进行测试。Struts2.0 Action可以通过初始化、设置属性、调用
9、方法来测试,“依赖注入”也使得测试更容易。5、struts如何实现国际化以下以两国语言(中文,英文)为例:1.在工程中加入Struts支持2.编辑 ApplicationResource.properties文件,在其中加入要使用国际化的信息,例如:lable.welcome.china=Welcome!3.创建英文资源文件ApplicationResource_en.properites 4.创建临时中文资源文件ApplicationResource_temp.properites 例如:lable.welcom.china=中国欢迎您!5.对临时中文资源文件进行编码转换。可以使用myecl
10、ipse的插件,也可以在 dos 下执行:native2ascii-encoding gb2312 ApplicationResource_temp.properties ApplicationResource_zh_CN.properties 6.在 jsp 中加入 struts的 bean 标记库6、Struts框架的数据验证可分为几种类型?表单验证(由ActionForm Bean处理):如果用户没有在表单中输入姓名,就提交表单,将生成表单验证错误业务逻辑验证(由Action处理):如果用户在表单中输入的姓名为“Monster”,按照本应用的业务规则,不允许向“Monster”打招呼,因
11、此将生成业务逻辑错误。7、简述 Form Bean 的表单验证流程。1、当用户提交了HTML 表单,Struts框架自动把表单数据组装到ActionForm Bean中。2、接下来 Struts框架会调用ActionForm Bean的 validate()方法进行表单验证。名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 8 页 -3、如果 validate()方法返回的ActionErrors 对象为 null,或者不包含任何ActionMessage 对象,就表示没有错误,数据验证通过。4、如果 ActionErrors中包含 ActionMessage 对象,就表示发生了验
12、证错误,Struts框架会把 ActionErrors对象保存到request范围内,然后把请求转发到恰当的视图组件,视图组件通过标签把request范围内的 ActionErrors对象中包含的错误消息显示出来,提示用户修改错误。8、简单叙述ActionForm Bean的作用1、ActionForm Bean也是一种 JavaBean,除了具有一些JavaBean 的常规方法,还包含一些特殊的方法,用于验证 HTML表单数据以及将其属性重新设置为默认值。2、Struts框架利用 ActionForm Bean来进行 View 组件和 Controller组件之间表单数据的传递。3、Stru
13、ts框架把 View 组件接受到的用户输入的表单数据保存在ActionForm Bean中,把它传递给Controller组件,Controller组件可以对ActionForm Bean中的数据进行修改JSP文件使用 Struts标签读取修改后的ActionForm Bean的信息,重新设置HTML 表单。9、Struts优缺点优点:1.实现 MVC 模式,结构清晰,使开发者只关注业务逻辑的实现.2有丰富的tag 可以用 ,Struts的标记库(Taglib),如能灵活动用,则能大大提高开发效率3.页面导航使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的
14、维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。4.提供 Exception处理机制 .5.数据库链接池管理6.支持 I18N 缺点一、转到展示层时,需要配置forward,如果有十个展示层的jsp,需要配置十次struts,而且还不包括有时候目录、文件变更,需要重新修改forward,注意,每次修改配置之后,要求重新部署整个项目,而tomcate 这样的服务器,还必须重新启动服务器二、二、Struts 的 Action必需是 thread safe 方式,它仅仅允许一个实例去处理所有的请求。所以action用到的所有的资源都必需统一同步,这个就引起了线程安全的
15、问题。三、测试不方便.Struts的每个 Action都同 Web层耦合在一起,这样它的测试依赖于Web容器,单元测试也很难实现。不过有一个Junit的扩展工具Struts TestCase可以实现它的单元测试。四、类型的转换.Struts的 FormBean把所有的数据都作为String类型,它可以使用工具Commons-Beanutils进行类型转化。但它的转化都是在Class 级别,而且转化的类型是不可配置的。类型转化时的错误信息返回给用户也是非常困难的。五、对 Servlet的依赖性过强.Struts处理 Action时必需要依赖ServletRequest 和 ServletResp
16、onse,所有它摆脱不了Servlet容器。六、前端表达式语言方面.Struts集成了 JSTL,所以它主要使用JSTL的表达式语言来获取数据。可是 JSTL的表达式语言在Collection和索引属性方面处理显得很弱。七、对 Action执行的控制困难.Struts创建一个Action,如果想控制它的执行顺序将会非常困难。甚至你要重新去写Servlet来实现你的这个功能需求。八、对 Action 执行前和后的处理.Struts处理 Action 的时候是基于class 的 hierarchies,很难在 action处理前和后进行操作。九、对事件支持不够.在 struts中,实际是一个表单F
17、orm 对应一个 Action类(或 DispatchAction),换名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 8 页 -一句话说:在 Struts中实际是一个表单只能对应一个事件,struts这种事件方式称为application event,application event和 component event相比是一种粗粒度的事件Hibernate相关1、Hibernate框架的认识(工作原理)Hibernate是一个轻量级的持久层开源框架,它是连接 Java 应用程序和关系数据库的中间件,负责 Java 对象和关系数据之间的映射.Hibernate内部对 JDBC
18、API 进行了封装,负责 Java 对象的持久化.因为它封装了所有的数据访问细节,使得业务逻辑层可以专注于实现业务逻辑.它是一种优秀的ORM 映射工具,提供了完善的对象关系映射服务,开发过程不依赖容器,灵活性非常大,可以无缝集成到任何一个java 系统中2、为什么要用Hibernate 1.封装了 jdbc,简化了很多重复性代码。2.简化了 DAO层编码工作,使开发更对象化了。3.移植性好,支持各种数据库,如果换个数据库只要在配置文件中变换配置就可以了,不用改变 hibernate代码。4.支持透明持久化,因为 hibernate操作的是纯粹的(pojo)java类,没有实现任何接口,没有侵入
19、性。所以说它是一个轻量级框架。3、缓存:session缓存:被称为 Hibernate的第一级缓存.它存放被单前工作单元加载的对象.sessionFactory缓存:被称为 Hibernate的第二级缓存.一个实例对应一个数据存储源.它是线程安全的,是重量级的.它需要一个很大的缓存,用来存放预定义的SQL语句以及映射元数据等.4、对象的 3 个状态瞬时:一个实体通过new操作符创建后,没有和Hibernate的 Session 建立关系,也没有手动赋值过该实体的持久化标识(持久化标识可以认为映射表的主键)。此时该实体中的任何属性的更新都不会反映到数据库表中。持久化:当一个实体和Hibernat
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年框架面试题 2022 框架 试题
限制150内