J2EE简答题及答案_第1页
J2EE简答题及答案_第2页
J2EE简答题及答案_第3页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 简述J2EE的四层模型。运行在客户端机器上的客户层组件运行在J2EE服务器上的Web层组件运行在J2EE服务器上的业务逻辑层组件运行在EIS服务器上的企业信息系统层软件2、什么是对象持久化?即把数据(如内存中的对象)保存到可永久保存的存储设备中 (如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。3、 简述一下ORMAPPIN为什么我们使用它?ORM(ObjectReIationaIMapping) 是一种为了解决面向对象与关系型数据库存在的互不匹配的现象的技术。简单说: ORM是通过使用描述对象和数据库之间映 射的元数据,将Java程序中的对象自动持久化到关系数据中。本质上就是将数 据从一种形式转换到另外一种形式。原因:用它来架起对象和关系型数据库的桥梁,可解决对象层次的映射、对象 关系的映射以及对象的持久化问题。4、 简述一下如何使用Hibernate实现对象持久化的过程(可画图或用伪码描述)STEP1:创建Configuration对象。在这一步中主要为了进行配置文件的装载操作,读取所有的配置文件并进行解析STEP2:创建SessionFactory对象。通过创建好的Configuration对象可以创建一个sessionFactory对象的实例,同时是生成Session对象实例的工厂,他在整个应用中应该是唯一的。STEP3:创建Session对象。Session对象类似于数据库的连接对象,可以理解为与数据库建立的一个连接,但是他的功能要比 JDBC中的Connection对象丰富很多。STEP4开始一个事务。在Java中定义一个事务操作的开始,这是使用 Hibernate进行持久化操作必不可少的步骤STEP5:进行持久化操作。在这个步骤中可以读取或者保存Java对象。STEP6:结束事务。在操作完成之后还要进行显式的结束事务的操作。STEP7:关闭Sessiono类似于释放数据库的连接。5、 为什么要实现序列化?1、 序列化以某种存储形式使自定义对象持久化2、 序列化将对象转换为可传输方式从一个地方传递到另一个地方3、 序列化使程序更具维护性6、 比较一下sessionFactory中的opensession()和getcurrentsession()方法。1、 getCurrentSession创建的session会和绑定到当前线程,而openSession不会。2、getCurrentSession创建的线程会在事务回滚或事物提交后自动关闭,而openSession必须手动关闭7、比较一下session中的load()和get()方法,以及如何保证每次都是从数据库读取而不是在缓存中读?load()和get()方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象。其区别在于:如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObjectNotFoundExceptionoLoad方法可返回实体的代理类实例,而get方法永远直接返回实体类。load方法可以充分利用内部缓存和二级缓存中的现有数据,而get方法则仅仅在内部缓存中进行数据查找,如没有发现对应数据,将越过二级缓存,直接调用SQL完成数据读取。8、Action接受用户参数输入,主要有哪几种方式?我们常用的是哪一种?Action属性接收参数;DomainmodaI(域模型)接收参数;ModaIdriven 接收参数。常用第一种跟第二种9、在struts中实现一个action有哪几种方式?最常用的是哪种?定义一个普通的类,类中只要有一个 pubIicStringexecute() 方法且返回一个字符串即可。定义一个类,实现Action接口,xwork2.Action这个包的3继承xwork2.ActionSupport这个类。最常用的是第三种10、 在struts,xml中Result的type常用的有四种类型1)dispatcher2)redirect3)chain4)redirectAction哪些是服务器跳转?哪些是客户端跳转?dispatcher和chain是服务器端跳转,所以客户端只发起一次请求redirect和redirectAction是客户端跳转,所以客户端发起两次请求。11、 j2ee是技术还是平台还是框架?它主要包含哪些技术,列举并简单描述2到3个技术?J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。J2EE也是一个框架,包括JDBGJNDI、RMI、JMSEJBJTA等技术。JDBC是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组 用Java语言编写的类和接口组成。RMI:RMI协议调用远程对象上的方法。它使用了序列化方式在客户端和服务 器端传递数据。RMI是一种被EJB使用的更底层的协议。12、MVC勺各个部分都有哪些技术来实现?如何实现?MVC是Model-View-ControIIer 的简写。"ModeI"代表的是应用的业务逻辑(通过JavaBean,EJB组件实现),"View"是应用的表示面(由JSP页面产生),"Controller"是提供应用的处理过程控制(一般是一个 Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以 进行交互和重用。13、 什么是JNDI?JNDI是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户 端API,通过不同的访问提供者接口 JNDISPI的实现,由管理者将JNDIAPI映射为特定的命名服务和目录系统,使得 Java应用程序可以和这些命名服务和目 录服务之间进行交互。14、 举例并简单描述2到3种动态网页开发技术。PHP,是英文超文本预处理语言 HypertextPreprocessor的缩写。PHP是一种HTML内嵌式的语言,是一种在服务器端执行的嵌入 HTML文档的脚本语言,语言的风格有类似于C语言,被广泛地运用。ASP,它是微软公司开发的代替CGI脚本程序的一种应用,它可以与数据库和其它程序进行交互,是一种简单、方便的编程工具。 ASP的网页文件的格式是.asp,现在常用于各种动态网站中。15、 简 单 描 述 浏 览 器 输 入http://localhost:8088/myFirstweb/Firstservlet 访问web资源的过程(也就是servletX作的时序图)(提示,解释地址-?用端口号和地址访问服务器-?访问资源)。浏览器会将请求打包成http请求数据包,发送给web服务器,2.web服务器中的servIet 引擎解析请求并圭寸装为一个 HttpServIetRequest对象(包含了请求数据),同时创建个 HttpServIetResponse 对象。servlet调用servlet的service()方法,并将HttpServIetReque,HttpServIetResponse 对象作为参数传递给servIet实例servIet可以从HttpServletRequest对象中获得请求数据,并处理,当然,servlet也可能要访问数据库。然后将处理之后的结果放到 HttpServIetResponse中。servIet引擎从HttpServletResponse中取数据,并将数据打包成 http数据包发送给浏览器。16、 开发servlet服务器程序三种方法。开发servlet有三种方法:a,实现servlet接口;b,继承GenericServet;c,继承HttpServlet17、 通过httpservlet去开发servlet,需要重写doGet和doPost方法。这是常用的方式,请简述Get与Post方法的区别。(1) get是从服务器上获取数据,post是向服务器传送数据。在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTMLHEADEIR提交。对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。GET方式提交的数据最多只能有 1024字节,而POST则没有此限制。安全性问题。使用Get的时候,参数会显示在地址栏上,而Post不会。所以,还是使用post为好。18、 简述http返回包中的状态码200,302,404,500的意义。[200]请求已成功,请求所希望的响应头或数据体将随此响应返回。[302]请求的资源现在临时从不同的 URI响应请求。[404]请求失败,请求所希望得到的资源未被在伺服器上发现。[500]伺服器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理.19、 简述请求重定向(response.sendRedirect)和请求转发(getRequestDispatcherforward)的区另虬1、forward()只能将请求转发给同一个Web应用中的组件,而sendRedirect()方法不仅可以重定向到当前应用程序中的其他资源,还可以重定向到其他站点 的资源。2、sendRedirect()方法重定向的访问过程结束后,浏览器地址栏中显示的 URL会发生改变,由初始的URL地址变成重定向的目标URL;而调用千orward()方法的请求转发过程结束后,浏览器地址栏保持初始的 URL地址不变。3>forward()方法的调用者与被调用者之间共享相同的request对象和response对象;而sendRedirect()方法调用者和被调用者使用各自的request对象和response对象,它们属于两个独立的请求和响应过程。1、 hibernate拒绝连接、服务器崩溃的原因?最少写5个a)1.db没有打开网络连接可能出了问题连接配置错了驱动的driver,url是否都写对了LIB下加入相应驱动,数据连接代码是否有误数据库配置可能有问题当前联接太多了,服务器都有访问人数限制的服务器的相应端口没有开,即它不提供相应的服务hibernate有哪些缓存,分别怎么使用?你对hibernate的了解到了一个什么样的程度?写出一个sql语句体现hibernate中一对多的关系2、 update()和saveOrUpdate()的区别?a)update()更新,没有主键会报错的b)saveOrUpdate()保存或更新,没有主键就执行插入.Update:是对暂态(transient)或是只是脱W(detached)的更新操作,对于暂态对象的更新操作通常不产生效果,对于脱管对象是做了同步的操作,即数据库的数据发生变化并且对象状态也成为托管对象SaveOrUpdate:也是对暂态(transient )或是只是脱

管(detached)的进行操作,至于是插入还是更新,则要根据id中指定的一些具体条件来分析。但是个人认为在明显只会发生插入操作的情况还是尽量避免用saveOrUpdate而直接用save即可)3、3、hibernate的三种状态之间如何转换瞬时态、持久态、脱管态。b)瞬时对象在内存孤立存在,可通过session的save()或saveOrUpdate()方法将瞬时对象与数据库相关联,并将数据对应的插入数据库中,此时该瞬时对象转变成持久化对象。c)持久态:如果是用hibernate的delete。方法,对应的持久对象就变成瞬时对象,因数据库中的对应数据已被删除,该对象不再与数据库的记录关联。当一个session执行close()或clear()、evict()之后,持久对象变成脱管对象,d)脱管状态:(1)当通过get或load方法得到的po对象它们都处于持久态,但如果执行delete(po)时(但不能执行事务),该po状态就处于脱管态,因delete而变成游离态可以通过save或saveOrllpdate()变成持久态(2)当把session关闭时,session缓存中的持久态的po对象也变成脱管态因关闭session而变成脱管态的可以通过lock、save、update变成持久态4、工厂模式a)就是专门负责将大量有共同接口的类实例化,而且不必事先知道每次是要实例化哪一个类的模式有简单工厂模式,工厂方法模式,抽象工厂模式5、抽象类和接口的区别属性:抽象类可以有普通成员变量,接口不行;方法:抽象类有非抽象的方法和构造方法,并且修饰符可以是私有的,接口只能是抽象的方法,并且修饰符是public,最后说一句只能继承一个抽象类,但能实现多个接口。a)6、forward和redirect的区另Uforward是服务器请求资源,服务器直接访问目标地址的 URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器, URL地址不改变,request的信息不丢失。redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,URL地址改变‘request的信息会丢失。7、持久化对象的三种状态,代表含义。临时状态---刚用new语句创建,未被持久化,不处于 session的缓存中。持久化状态——已经被持久化,处于session的缓存中游离态 巳经被持久化,但不处于 session的缓存中。a)8 页面之间的值传递:使用QueryString使用Session变量使用Application变量9、 Struts框架的数据验证可分为几种类型?表单验证(由ActionFormBean处理):如果用户没有在表单中输入 姓名,就提交表单,将生成表单验证错误业务逻辑验证(由Action处理):如果用户在表单中输入的姓名为“Monster”,按照本应用的业务规则,不允许向 “Monster"打招呼,因此将生成业务逻辑错误10、 写一个Singleton模式的例子publicclassSingleton(privateSingleton()()〃在自己内部定义自己一个实例,是不是很奇怪?〃注意这是private只供内部调用privatestaticSingletoninstanee=newSingleton();〃这里提供了一个供外部访问本 class的静态方法,可以直接访问publicstaticSingletongetInstance()(returninstanee;)}11、 谈谈你mvc的理解MVC是一种设计模式,它强制的将应用程序的输入、处理、和输岀 分开。使用了 MVC的应用程序被分为 3个核心部件:试图(View)、模型(Model)、控制器(Controller)o首先视图接受用户输入请求,然后将请求传递给控制器,控制器再调 用某个模型来处理用户的请求,在控制器的控制下,再将处理后的结 果交给某个视图进行格式化输岀给用户。 MVC不仅实现了功能模块 和显示模块的分离,同时它还提高了系统的可维护性、可扩展性和组 件的可复用性,是一个优秀的创建软件的途径。12、项目中为什么使用 SSH1、使用Struts:因为Struts是基于MVC模式的,很好的将应用程序进行了 分层,使开发者更关注与业务逻辑的实现。并且 Struts有着丰富的taglib,如果能够灵活运用,则能大大的提高开发效率。2、使用Hibernate:因为Hibernate为Java应用提供了一个易用的、高效率的对象关系映射框架。Hibernate是一个轻量级的持久性框架、功能丰富。和AOP3、使用Spring:因为Spring基于和AOP构架多层j2ee系统的框架,但它不强迫你必须在每一层中必须使用 Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块。采用 IOC使得可以很容易的实现bean的装配,提供了简洁的AOP并据此实现了事务管理(TranscationManagement),等等。13、 action是单实例还是多实例,为什么?action是单实例的。当多个用户访问一个请求的时候,服务器内存中只有一个与之对应的 action类对象。因为当服务器第一次加载 struts

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论