2023年框架面试题自己别人的试题.pdf

上传人:文*** 文档编号:91006290 上传时间:2023-05-20 格式:PDF 页数:95 大小:11.51MB
返回 下载 相关 举报
2023年框架面试题自己别人的试题.pdf_第1页
第1页 / 共95页
2023年框架面试题自己别人的试题.pdf_第2页
第2页 / 共95页
点击查看更多>>
资源描述

《2023年框架面试题自己别人的试题.pdf》由会员分享,可在线阅读,更多相关《2023年框架面试题自己别人的试题.pdf(95页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、(问答题+选 择 题(在 55页)Java工 程 师(程序员)面题Struts,Spring,Hibemate 三大框架1.Hibernate工作原理及为什么要用?原理:1.读取并解析配置文献2.读取并解析映射信息,创建SessionFactory 3.打开Session 4.创建事务Transation 5.持久化操作6.提交事务7.关闭Session 8.关闭SesstionFactory为什么要用:I.对 JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的反复性代码。2.Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大限度的简化DAO层的编码

2、工作3.hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。4.hibernate的性能非常好,由于它是个轻量级框架。映射的灵活性很杰出。它支持各种关系数据库,从一对一到多对多的各种复杂关系。2.Hibernate是如何延迟加载?1.Hibernate2延迟加载实现:a)实体对象b)集 合(Collection)2.Hibemate3提供了属性的延迟加载功能当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。3.Hibernate中如何实现类之间的关

3、系?(如:一对多、多对多的关系)类与类之间的关系重要体现在表与表之间的关系进行操作,它们都是对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文献中的many-to-one、one-to-many、many-to-many4.Strutsl 流程:1、客户端浏览器发出HTTP请求。2、根据web.xml配置,该请求被ActionServlet接受。3、根 据 struts-config.xml配置,ActionServlet先将请求中的参数填充到ActionForm中,然后ActionServlet再将请求发送到Action进行解决。4、是否验证,需要验证则调用ActionFo

4、rm的 validate方法,验证失败则跳转到input,成功则继续。5、Action从 ActionForm获得数据,调用javabean中的业务方法解决数据。6、Action返回ActionForward对象,跳转到相应JSP页面或Action。7、返回HTTP响应到客户端浏览器。M V C 设计模式:modal:“模 型”也称业务逻辑,是正真完毕任务的代码,相称与JavaBeanview:视图,其实就是显示界面,相称于JSPcontroller:控制器,他控制模型和视图的交互过程,相称于servletstruts 1是基于MVC设计模式hibernate是基于ORM对象关系映射5.str

5、uts是什么?struts 1是基于JSP和 servlet的一个开源的Web应用框架,使用的是MVC的设计模式struts2是基于webwork技术的框架,是 sun和 webwork公司联手开发的一个功能非常齐全的框架,struts2和 struts 1 没有任何关系,是一个全新的框架6.spring是什么?spring是一个集成了许多第三方框架的大杂夕会,其核心技术是IOC(控制反转,也称依赖注入)和 AOP(面向切面编程)7.hibernate是 彳 十 么?hibernate是基于ORM对象关系映射(完毕对象数据到关系数据映射的机制)实现的,做数据持久化的工具8.JSF是什么?Jav

6、aServer Face是基于组件的web开发框架,跟 sturts差不多的框架9.数据库里面的索引和约束是什么?索引是为了提高数据的检索速度,索引是建立在数据表上,根据一个或多个字段建立的约束是为了保持数据的完整性,约束有非空约束,主键约束,外键约束等等。lO.spring是什么这个问题,往往可以通过我们为什么要使用spring这个问题来切入:A O P让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。使 用 A O P后,公 共 服 务(比 如 日 记、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增长域对象的对象模型的复杂性。IO C 允许创建

7、一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如单词倒置所表白的,IO C 就 像 反 过 来 的 JNDI。没有使用一堆抽象工厂、服务定位器、单 元 素(singleton)和直接构造(straight construction),每一个对象都是用其协作对象构造的。因此是由容器管理协作对象(collaborator)。Spring即使一个AOP框架,也是一 IOC容器。Spring最佳的地方是它有助于您替换对象。有了Spring,只要用JavaBean属性和配置文献加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类似接口的协作对象。1L用自己的话简要阐述struts

8、2的执行流程。Struts 2 框架自身大体可以分为3 个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的公司业务逻辑组件。核心控制器FilterDispatcher是 Struts2框架的基础,包含了框架内部的控制流程和解决机制。业务控制器Action和业务逻辑组件是需要用户来自己实现的。用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文献,供核心控制器FilterDispatcher来使用。Struts 2 的工作流程相对于Struts 1 要简朴,与 Web Work框架基本相同,所以说Struts 2 是WebWork的升级版本。基本

9、简要流程如下:1、客户端浏览器发出HTTP请求。2、根据web.xml配置,该请求被FilterDispatcher接受。3、根 据 struts.xml配置,找到需要调用的Action类和方法,并通过IoC方式,将值注入给Aciton。4、Action调用业务逻辑组件解决业务逻辑,这一步包含表单验证。5、Action执行完毕,根 据 struts.xml中的配置找到相应的返回结果result,并跳转到相应页面。6、返回HTTP响应到客户端浏览器。1 Action是不是线程安全的?假如不是有什么方式可以保证Action的线程安全?假如是,说明因素不是声明局部变量,或者扩展RequestProc

10、essor,让每次都创建一个 A ction,或者在spring中用scope=prototype来管理2.M V C,分析一下struts是如何实现MVC的m:JavaBean或 结 合 E JB 组件或者pojo构成c:Action来实现v:一 组 JS P 文献及其标签构成。3.struts中的几个关键对象的作用(说说几个关键对象的作用)Action:控制器类,ActionForm:表单对象,DynaValidatorForm:动态 form,ActonMapping:配置文献中action节点的信息 4.说说AOP和 IOC的概念以及在spring中是如何应用的AOP:面向方面编程,i

11、oc:依赖注入;声明式事务和编程式事务积极一些通用部分5.Hibernate有哪几种查询数据的方式hql查询,sql查询,条件查询6.1oad()和 get()的区别hibernate对于load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,load默认支持延迟加载,在用到对象中的其他属性数据时才查询数据库,但是万一数据库中不存在该记录,只能抛异常ObjectNotFoundEcception;所说的load方法抛异常是指在使用该对象的数据时,数据库中不存在该数据时抛异常,而不是在创建这个对象时。由于session中的缓存对于hibernate来说是个相称便宜的资源,所 以

12、在 load时会先查一下session缓存看看该id 相应的对象是否存在,不存在则创建代理(load时候之查询一级缓存,不存在则创建代理)。get()现在一级缓存找,没有就去二级缓存找,没有就去数据库找,没有就返回null;而对于get方法,hibernate一定要获取到真实的数据,否则返回null。7.谈谈 hibernate 的延迟加载和 openSessionlnView延迟加载要在session范围内,用到的时候再加载;opensessioninview是在web层写了一个filter来打开和关闭session,这样就表达在一次request过程中session 一直开着,保证了延迟加

13、载在session中的这个前提。8.spring的事务有几种方式?谈谈spring事务的隔离级别和传播行为。声明事务和编程事务隔离级别:-DEFAULT使用数据库默认的隔离级别-READ_UNCOMMITTED会出现脏读,不可反复读和幻影读问题-READ_COMMITTED会出现反复读和幻影读-REPEATABLE_READ会出现幻影读-SERIALIZABLE最安全,但是代价最大,性能影响极其严重和传播行:-REQUIRED存在事务就融入该事务,不存在就创建事务-SUPPORTS存在事务就融入事务,不存在则不创建事务-MANDATORY存在事务则融入该事务,不存在,抛异常-REQU1RES_

14、NEW总是仓犍新事务-NONSUPPORTED存在事务则挂起,一直执行非事务操作-NEVER总是执行非事务,假如当前存在事务则抛异常-NESTED嵌入式事务9.Hibernate 中的 update。和 saveOrUpdate()的区别.摘自hibernate说明文档:saveOrUpdate。做下面的事:假如对象已经在本session中持久化了,不做任何事假如另一个与本session关联的对象拥有相同的持久化标记(identifier),抛出一个异常假如对象没有持久化标记(identifier)属性,对其调用save()假如对象的持久标记(identifier)表白其是一个新实例化的对象,

15、对其调用save()假如对象是附带版本信息的(通过 version,或)并且版本属性的值表白其是一个新实例化的对象,save。它。否则update。这个对象lO.Spring对多种ORM框架提供了很好的支持,简朴描述在Spring中使用Hibernate的方法,并结合事务管理。gelHiberanteTemplate 里面提供了 save,update,delete,find 等方法。简朴说一个:假如配置了声明式事务,当执行getHibernateTemplate的各种方法的时候,事务会自动被加载假如没有配置事务,那么以上操作不会真正的被同步到数据库,除非配置了 hibernate的autoc

16、ommit=true8.spring的事务有儿种方式?谈谈spring事务的隔离级别和传播行为。spring事务分两种形式,声明式事务和编程式事务,spring提供了一个事务的接口PaltformTractionManager,针对不同的事务,spring进行了不同的实现,对 hibernate事务的实现 HlbernateTractionManager,JDBC 的 JdbcTractionManager,DataSourceTractionManager 以及 JdoTractionManager。接口 platfonnTractionManager 提供了个方法,获取事务,提交和回滚的方

17、法。分享面试题二】Spring,hibernate,struts的面试笔试题(含答案)(声明:这里不是为其他商业利益,是为学习讨论使用)【郑重声明】:单纯接分将被删帖,希望大家有自己的感触Hibernate工作原理及为什么要用?原理:1 .读取并解析配置文献2.读取并解析映射信息,创建SessionFactory3.打开 Sesssion4.创建事务Transation5.持久化操作6.提交事务7.关闭 Session8.关闭 SesstionFactory为什么要用:1.对 JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的反复性代码。2.Hibernate是一个基于JDBC的主流

18、持久化框架,是一个优秀的ORM实现。他很大限度的简化DAO层的编码工作3.hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。4.hibernate的性能非常好,由于它是个轻量级框架。映射的灵活性很杰出。它支持各种关系数据库,从一对一到多对多的各种复杂关系。2.Hibernate是如何延迟加载?1.Hibemate2延迟加载实现:a)实体对象b)集 合(Collection)2.Hibemate3提供了属性的延迟加载功能当 Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,

19、从而提高了服务器的性能。3.Hibernate中如何实现类之间的关系?(如:一对多、多对多的关系)类与类之间的关系重要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文献中的many-to-one one-to-manymany-to-many、4.说下Hibernate的缓存机制1.内部缓存存在Hibernate中又叫一级缓存,属于应用事物级缓存2.二级缓存:a)应用及缓存b)分布式缓存条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非 关键数据c)第三方缓存的实现5.Hibernate的查询

20、方式Sql、Criteria,object comptositionHql:1、属性查询2、参数查询、命名参数查询3、关联查询4、分页查询5、记录函数6.如何优化Hibernate?1 .使用双向一对多关联,不使用单向一对多2.灵活使用单向一对多关联3.不用一对一,用多对一取代4.配置对象缓存,不使用集合缓存5.一对多集合使用Bag,多对多集合使用Set6.继承类使用显式多态7.表字段要少,表关联不要怕多,有二级缓存撑腰7.Struts工作机制?为什么要使用Struts?工作机制:Struts的工作流程:在 web应用启动时就会加载初始化ActionServlet,ActionServlet从

21、struts-config.xml文献中读取配置信息,把它们存放到各种配置对象当 ActionServlet接受到一个客户请求时,将执行如下流程.-检索和用户请求匹配的ActionMapping实例,假如不存在,就返回请求途径无效信息;-(2)假如ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;-(3)根据配置信息决定是否需要表单验证.假如需要验证,就调用ActionForm的 validate。方法;-(4)假 如 ActionForm的 validate。方法返回n u ll或返回一个不 包 含 ActionMess

22、age的ActuibErrors对象,就表达表单验证成功;-(5)ActionServlet根 据 ActionMapping所包含的映射信息决定将请求转发给哪个Action,假 如 相 应 的 Action实例不存在,就先创建这个实例,然后调用Action的 execute。方法;-(6)Action 的 execute。方法返回一个 ActionForward 对象,ActionServlet 在把客户请求转发 给 ActionForward对象指向的JSP组件;-(7)ActionForward对象指向JSP组件生成动态网页,返回给客户;为什么要用:JSP、Servlet、JavaBea

23、n技术的出现给我们构建强大的公司应用系统提供了也许。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。基于Struts开发的应用由3 类组件构成:控制器组件、模型组件、视图组件8.Struts的 validate框架是如何验证的?在 struts配置文献中配置具体的错误提醒,再在FormBean中的validate。方法具体调用。9.说下Struts的设计模式MVC模式:web应用程序启动时就会加载并初始化ActionServler。用户提交表单时,一个配置好的 ActionForm对 象 被 创 建,并被填入表

24、单相应的数 据,ActionServler根据Struts-config.xml文献配置好的设立决定是否需要表单验证,假如需要就调用ActionForm的Validate()验证后选择将请求发送到哪个A ction,假 如 Action不存在,ActionServlet会先创建这个对象,然后调用Action的 execute()方法。Execute()从 ActionForm对象中获取数据,完毕业务逻辑,返回一个ActionForward对 象,ActionServlet再把客户请求转发给ActionForward对象指定的jsp组件,ActionForward对象指定的jsp生成动 态的网页

25、,返回给客户。10.spring工作机制及为什么要用?1.spring m vc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的解决工作。2.DispatcherServlet 查询一个或多个 HandlerMapping,找到解决请求的 Controller.3.DispatcherServlet 请请求提交到目的 Controller4.Controller进行业务逻辑解决后,会返回一个 ModelAndView5.Dispathcher查询一个或多个ViewResolver视图解析器,找 到 ModelAndView对象指定的视图

26、对象6.视图对象负责渲染返回给客户端。为什么用:AOP让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。使 用 A O P后,公 共 服 务(比 如 日 记、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增长域对象的对象模型的复杂性。IO C 允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如单词倒置所表白的,IO C 就 像 反 过 来 的 JNDI。没有使用一堆抽象工厂、服务定位器、单 元 素(singleton)和直接构造(straight construction),每一个对象都是用其协作对象构造的。因此是山容器管理协

27、作对象(collaborator)。Spring即使一个AOP框架,也是一 IOC容器。Spring最佳的地方是它有助于您替换对象。有了 Spring,只 要 用 JavaBean属性和配置文献加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类似接口的协作对象。Struts,Spring,Hibernate 优缺陷Struts跟 Tomcat、Turbine等诸 多 Apache项目同样,是开源软件,这是它的一大优点。使开发者能更进一步的了解其内部实现机制。Struts开放源码框架的创建是为了使开发者在构建基于Java Servlet和 JavaServer Pages(JS P)技术

28、的Web应用时更力口容易。Struts框架为开放者提供了一个统一的标准框架,通过使用Struts作为基础,开发者可以更专注于应用程序的商业逻辑。Struts框架自身是使用Java Servlet和 JavaServer Pages技术的一种Model-View-Controller(M V C)实现.具体来讲,Struts的优点有:1.实现MVC模式,结构清楚,使开发者只关注业务逻辑的实现.2.有丰富的tag可 以 用 Struts的标记库(Taglib),如能灵活动用,则能大大提高开发效率。此外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Strut

29、s是一个很好的起点。3.页面导航.页面导航将是此后的一个发展方向,事实上,这样做,使系统的脉络更加清楚。通过一个配置文献,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。特别是当另一批开发者接手这个项目时,这种优势体现得更加明显。4.提供Exception解决机制.5.数据库链接池管理6.支持I18N缺陷:一、转到展示层时,需要配置forward,每一次转到展示层,相信大多数都是直接转到jsp,而涉及到转向,需要配置forward,假如有十个展示层的js p,需要配置十次struts,并且还不涉及有时候目录、文献变更,需要重新修改forward,注意,每次修改配置之后,规定重

30、新部署整个项目,而 tomcate这样的服务器,还必须重新启动服务器,假如业务变更复杂频繁的系统,这样的操作简朴不可想象。现在就是这样,几十上百个人同时在线使用我们的系统,大家可以想象一下,我的烦恼有多大。二、Struts的 Action必需是thread-safe方式,它仅仅允许-一个实例去解决所有的请求。所以action用到的所有的资源都必需统一同步,这个就引起了线程安全的问题。三、测试不方便.Struts的每个Action都同Web层耦合在一起,这样它的测试依赖于Web容器,单元测试也很难实现。但是有一个Junit的扩展工具Struts TestCase可以实现它的单元测试。四、类型的转

31、换.Struts的 FormBean把所有的数据都作为String类型,它可以使用工具Commons-Beanutils进行类型转化。但它的转化都是在Class级别,并且转化的类型是不可配置的。类型转化时的错误信息返回给用户也是非常困难的。五、对 Servlet的 依 赖 性 过 强.Struts解 决 A ction时 必 需 要 依 赖 ServletRequest和ServletResponse,所有它摆脱不了 Servlet 容器。六、前端表达式语言方面Struts集成了 JSTL,所以它重要使用JSTL的表达式语言来获取数据。可是JSTL的表达式语言在Collection和索引属性方

32、面解决显得很弱。七、对 Action执行的控制困难.Struts创建一个A ction,假如想控制它的执行顺序将会非常困难。甚至你要重新去写Servlet来实现你的这个功能需求。八、对 Action执行前和后的解决.Struts解决Action的时候是基于class的 hierarchies,很难在action解决前和后进行操作。九、对 事 件 支 持 不 够.在 struts中,实 际 是 一 个 表 单 Form 相 应 一 个 A ction类(或DispatchAction),换一句话说:在 Struts中实际是一个表单只能相应一个事件,struts这种事件方式称为applicatio

33、n event,application event和 component event相比是一种粗粒度的事件。Struts重要的表单对象ActionForm是一种对象,它代表了一种应用,这个对象中至少包含几个字段,这些字段是Jsp页面表单中的input字段,由于一个表单相应一个事件,所以,当我们需要将事件粒度细化到表单中这些字段时,也就是说,一个字段相 应 一 个事件时,单纯使用Struts就不太也许,当然通过结合JavaScript也是可以转弯实现的。2.HibernateHibernate是一个开放源代码的对象关系映射框架,它 对 JDBC进行了非常轻量级的对象封装,使得Java程序员可以随

34、心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的 Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的 J2EE架构中取代C M P,完毕数据持久化的重任。大多数开发机构经常采用创建各自独立的数据持久层。一旦底层的数据结构发生改变,那么修改应用的其余部分使之适应这种改变的代价将是十分巨大的。Hibernate适时的填补了这一空白,它 为 Java应用提供了一个易用的、高效率的对象关系映射框架。hibernate是个轻量级的持久性框架,功能却非常丰富。优点:a.Hibe

35、mate使 用 Java反射机制而不是字节码增强程序来实现透明性。b.Hibernate的性能非常好,由于它是个轻量级框架。映射的灵活性很杰出。c.它支持各种关系数据库,从一对一到多对多的各种复杂关系。缺陷:它限制您所使用的对象模型。(例如,一个持久性类不能映射到多个表)其独有的界面和可怜的市场份额也让人不安,尽管如此,Hibernate还是以其强大的发展动力减轻了这些风险。其他的开源持久性框架也有一些,但是都没有Hibernate这样有市场冲击力。上面回贴情绪有点激动,希望谅解,我不是由于有人批评Hibernate而感到不快,而是由于帖子里面的观点实在让我觉得荒唐。不管觉得Hibernate

36、好也吧,不好也吧,我唯一觉得遗憾的是,在中文论坛里面找不到一个对Hibernate的真正高水平的评价。在 TSS上有一个关于 Hibernate 的 hot thread,跟了几百贴,其中涉及 Hibernate 作者 Gavin 和 LiDO JDO 的 CTO,对 于 JD O 和 Hibernate有过一些剧烈的争论,我曾经耐心的看了一遍,仍然没有发现针对Hibernate真正有力的袭击,那些所谓的袭击无非针对Hibernate没有一个GUI的配置工具,没有商业公司支持,没有标准化等等这些站不住脚的理由。补充几点我的意见:一、Hibernate是JDBC的轻量级的对象封装,它是一个独立的

37、对象持久层框架,和App Server,和 EJB没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的代码。从这个意义上来说,Hibernate和 EB不是一个范畴的东西,也不存在非此即彼的关系。二、Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和 App Server没有任何关系,也不存在兼容性问题。三、Hibernate不能用来直接和Entity Bean做对比,只有放在整个J

38、2EE项目的框架中才干比较。并且即使是放在软件整体框架中来看,Hibernate也是做为JDBC的替代者出现的,而 不是 Entity Bean的替代者出现的,让我再列一次我已经列n 次的框架结构:传统的架构:I)Session Bean Entity Bean DB为了解决性能障碍的替代架构:2)Session Bean DAO JDBC DB使用Hibernate来提高上面架构的开发效率的架构:3)Session Bean DAO Hibernate DB就上面3 个架构来分析:1、内存消耗:采用JDBC的架构2 无疑是最省内存的,Hibernate的架构3 次之,E B 的架构 1 最差

39、。2、运营效率:假如JDBC的代码写的非常优化,那么JDBC架构运营效率最高,但是实际项目中,这一点几乎做不到,这需要程序员非常精通JD B C,运 用 B atch语句,调整PreapredStatement的 Batch Size和 Fetch Size等参数,以及在必要的情况下采用结果集cache等等。而一般情况下程序员是做不到这一点的。因此Hibernate架构表现出最快的运营效率。EB的架构效率会差的很远。3、开发效率:在有JBuilder的支持下以及简朴的项目,EB架构开发效率最高,JDBC次之,Hibernate最差。但是在大的项目,特别是持久层关系映射很复杂的情况下,Hiber

40、nate效率高的惊人,JDBC次之,而 EB 架构很也许会失败。4、分布式,安全检查,集群,负载均衡的支持由于有SB做为Facade,3 个架构没有区别。四、EB和 Hibernate学习难度在哪里?EB 的难度在哪里?不在复杂的XML配置文献上,而在于EB运用稍微不慎,就有严重的性能障碍。所以难在你需要学习很多EJB设计模式来避开性能问题,需 要 学 习 App Server和EB 的配置来优化E B 的运营效率。做 E B 的开发工作,程序员的大部分精力都被放到了 EB的性能问题上了,反而没有更多的精力关注自身就重要投入精力去考虑的对象持久层的设计上来。Hibernate难在哪里?不在Hi

41、bernate自身的复杂,事实上Hibernate非常的简朴,难在Hibernate太灵活了。当你用EB来实现持久层的时候,你会发现EB实在是太笨拙了,笨拙到你主线没有什么可以选择的余地,所以你主线就不用花费精力去设计方案,去平衡方案的好坏,去费脑筋考虑选择哪个方案,由于只有唯一的方案摆在你面前,你只能这么做,没得选择。Hibernate相反,它太灵活了,相同的问题,你至少可以设计出十几种方案来解决,所以特别的犯难,究竟用这个,还是用那个呢?这些方案之间到底有什么区别呢?他们的运营原理有什么不同?运营效率哪个比较好?光是主键生成,就有七八种方案供你选择,你为难不为难?集合属性可以用S et,可

42、 以 用 L ist,还可以用B ag,到底哪个效率高,你为难不为难?查询可以用iterator,可 以 用 lis t,哪个好,有什么区别?你为难不为难?复合主键你可以直接在hbm里面配置,也可以自定义CustomerType,哪种比较好些?你为难不为难?对于一个表,你可以选择单一映射一个对象,也可以映射成父子对象,还可以映射成两个1:1的对象,在什么情况下用哪种方案比较好,你为难不为难?这个列表可以一直开列下去,直到你不想再看下去为止。当你面前摆着无数的眼花缭乱的方案的时候,你会觉得幸福呢?还是悲哀呢?假如你是一个负责的程序员,那么你一定会仔细研究每种方案的区别,每种方案的效率,每种方案的

43、合用场合,你会觉得你已经陷入进去拔不出来了。假如是用E B,你第一秒种就已经做出了决定,主线没得选择,比如说集合属性,你只能用Collection,假如是Hibernate.你会在Bag.List和 Set之间来回踌躇不决,甚至搞不清楚的话,程序都没有办法写。3.Spring它是一个开源的项目,并且目前非常活跃;它基于IoC(Inversion of Control,反向控制)和AOP的构架多层j2ee系统的框架,但它不逼迫你必须在每一层中必须使用Spring,由于它模块化的很好,允许你根据自己的需要选择使用它的某一个模块;它实现了很优雅的MVC,对不同的数据访问技术提供了统一的接口,采 用

44、IoC使得可以很容易的实现bean的装配,提供了简洁的AOP并据此实现Transcalion Managmenl,等等优点:a.Spring能有效地组织你的中间层对象,不管你是否选择使用了 EJB。假如你仅仅使用了Struts或其他为J2EE的 API特制的framework,Spring致力于解决剩下的问题。b.Spring能消除在许多工程中常见的对Singleton的过多使用。根据我的经验,这是一个很大的问题,它减少了系统的可测试性和面向对象的限度。c.通过一种在不同应用程序和项目间一致的方法来解决配置文献,Spring能消除各种各样自定义格式的属性文献的需要。曾经对某个类要寻找的是哪个魔

45、法般的属性项或系统属性感到不解,为此不得不去读Javadoc甚至源编码?有了 Spring,你仅仅需要看看类的JavaBean属性。Inversion of Control的 使 用(在下面讨论)帮助完毕了这种简化。d.通过把对接口编程而不是对类编程的代价几乎减少到没有,Spring可以促进养成好的编程习惯。e.Spring被设计为让使用它创建的应用尽也许少的依赖于他的APIs。在 Spring应用中的大多数业务对象没有依赖于Springef.使用Spring构建的应用程序易于单元测试。g.Spring能使EJB的使用成为一个实现选择,而不是应用架构的必然选择。你能选择用POJOs或 loca

46、l EJBs来实现业务接口,却不会影响调用代码。h.Spring帮助你解决许多问题而无需使用EJB。Spring能提供一种EJB的替换物,它们合用于许多web应用。例如,Spring能使用AOP提供声明性事务管理而不通过EJB容器,假如你仅仅需要与单个数据库打交道,甚至不需要一个JTA实现。i.Spring为数据存取提供了一个一致的框架,不管是使用的是JDBC还 是 O/R mapping产品(如 Hibernate)()Spring的确使你能通过最简朴可行的解决办法来解决你的问题。而这是有有很大价值的。缺陷:使用人数不多、jsp 中要写很多代码、控制器过于灵活,缺少一个公用控制器。6.Jav

47、a web 部分1、Tomcat的优化经验答:去掉对web.xml的监视,把jsp提前编辑成Servlet。有富余物理内存的情况,加大tomcat使用的jvm 的内存1、HTTP请求的GET与 POST方式的区别(1)get是从服务器上获取数据,post是向服务器传送数据。在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTML HEADER内提交。(2)对于get方式,服务器端用Request.QuerySlring获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。(3)GET方式提交的数据最多只能有1024字节,而

48、POST则没有此限制。(4)安全性问题。正如在(1)中提到,使 用 G e t的时候,参数会显示在地址栏上,而 Post不会。所以,假如这些数据是中文数据并且是非敏感数据,那么使用get;假如用户输入的数据不是中文字符并且包含敏感数据,那么还是使用post为好。62解释一下什么是servlet;答:servlet有良好的生存期的定义,涉及加载和实例化、初始化、解决请求以及服务结束。这个生存期由 javax.servlet.Servlet 接口的 init,service 和 destroy 方法表达。1、说一说Servlet的生命周期?答:servlet有良好的生存期的定义,涉及加载和实例化、

49、初始化、解决请求以及服务结束。这个生存期由 javax.servlet.Servlet 接口的 init,service 和 destroy 方法表达。Servlet被服务器实例化后,容器运营其init方法,请求到达时运营其service方法,service方法自动派遣运营与请求相应的doXXX方 法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。web容器加载servlet,生命周期开始。通过调用servlet的 init()方法进行servlet的初始化。通过调用service。方法实现,根据请求的不同调用不同的do*()方法。结束服务,w eb容器调

50、用servlet的 destroy。方法。4、Servlet的基本架构public class ServletName extends HttpServlet public void doPost(HttpServletRequest request,HttpServletResponse response)throwsServletException,lOException)public void doGet(HttpServletRequest request,HttpServletResponse response)throwsServletException,lOException)3

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁