J2EE34道复习题答案.doc_第1页
J2EE34道复习题答案.doc_第2页
J2EE34道复习题答案.doc_第3页
J2EE34道复习题答案.doc_第4页
J2EE34道复习题答案.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、简述J2EE的四层模型。(1)运行在客户端机器上的客户层组件 (2)运行在J2EE服务器上的Web层组件 (3)运行在J2EE服务器上的业务逻辑层组件 (4)运行在EIS服务器上的企业信息系统(Enterprise information system)层软件 2、什么是对象持久化? 即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。3、简述一下OR MAPPING,为什么我们使用它? ORM(Object Relational Mapping)是一种为了解决面向对象与关系型数据库存在的互不匹配的现象的技术。简单说:ORM是通过使用描述对象和数据库之间映射的元数据,将Java程序中的对象自动持久化到关系数据中。本质上就是将数据从一种形式转换到另外一种形式。原因:用它来架起对象和关系型数据库的桥梁,可解决对象层次的映射、对象关系的映射以及对象的持久化问题。4、简述一下如何使用Hibernate实现对象持久化的过程(可画图或用伪码描述)STEP 1:创建Configuration对象。在这一步中主要为了进行配置文件的装载操作,读取所有的配置文件并进行解析STEP 2: 创建SessionFactory对象。通过创建好的Configuration对象可以创建一个sessionFactory对象的实例,同时是生成Session对象实例的工厂,他在整个应用中应该是唯一的。STEP 3:创建Session对象。Session对象类似于数据库的连接对象,可以理解为与数据库建立的一个连接,但是他的功能要比JDBC中的Connection对象丰富很多。STEP 4:开始一个事务。在Java中定义一个事务操作的开始,这是使用Hibernate进行持久化操作必不可少的步骤STEP 5:进行持久化操作。在这个步骤中可以读取或者保存Java对象。STEP 6:结束事务。在操作完成之后还要进行显式的结束事务的操作。STEP 7:关闭Session。类似于释放数据库的连接。5、为什么要实现序列化? 序列化是为了解决在对对象流进行读写操作时引发的问题6、比较一下sessionFactory中的opensession()和getcurrentsession()方法。采用getCurrentSession()创建的session会绑定到当前线程中,而采用openSession()创建的session则不会.采用getCurrentSession()创建的session在commit或rollback时会自动关闭,而采用openSession()创建的session必须手动关闭7、比较一下session中的load()和get()方法,以及如何保证每次都是从数据库读取而不是在缓存中读?load()和get()方法均可根据指定的实体类和id从数据库读取记录并返回与之对应的实体对象。区别:(1)如果找不到符合条件的纪录,get()方法将返回null而load()将会报出ObjectNotFoundException(2)load()方法可以返回实体的代理类实例,而get()永远只返回实体类(3)load()方法可以充分利用二级缓存和内部缓存的现有数据,而get()方法只在内部缓存中进行查找,如没有发现对应数据将跳过二级缓存,直接调用完成查找8、Action接受用户参数输入,主要有哪几种方式?我们常用的是哪一种?方式:(1)Action属性传参数;(2)Domain modal(域模型)接收参数;(3)Modal driven接收参数。常用第一种和第二种9、在struts中实现一个action有哪几种方式?最常用的是哪种?(1)定义一个普通的类,类中只要有一个public String execute()方法且返回一个字符串即可。(2)定义一个类,实现Action接口,xwork2.Action这个包的(3)继承xwork2.ActionSupport这个类。最常用的是第三种10、在struts.xml中Result的type的四种类型:(1)dispacther (2)redirect (3)chain (4)redirectAction哪些是服务器跳转?哪些是客户端跳转?dispatcher和chain是服务器端跳转,所以客户端只发起一次请求redirect和redirectAction是客户端跳转,所以客户端发起两次请求。11、j2ee是技术还是平台还是框架?它主要包含哪些技术,列举并简单描述2到3个技术?J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。技术:servlet jsp ejb 主要是这3个部分JDBC(Java Database Connectivity):是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JNDI(Java Name and Directory Interface)JNDI API被用于执行名字和目录服务。它提供了一致的模型来存取和操作企业级的资源如DNS和LDAP,本地文件系统,或应用服务器中的对象。RMI(Remote Method Invoke)RMI协议调用远程对象上方法。它使用了序列化方式在客户端和服务器端传递数据。RMI是一种被EJB使用的更底层的协议。JSP(Java Server Pages)JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。12、MVC的各个部分都有哪些技术来实现?如何实现?MVC是ModelViewController的简写。Model 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现)。View 是应用的表示面(由JSP页面产生)。Controller 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。13、什么是JNDI?JNDI(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。14、举例并简单描述2到3种动态网页开发技术。动态网页开发技术有ASP、ASP.NET、JSP和PHP(1)PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创的语法。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。PHP具有非常强大的功能,所有的CGI的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。最重要的是PHP可以用C、C+进行程序的扩展!(2)ASP是一种服务器端脚本编写环境,可以用来创建和运行动态网页或Web应用程序。ASP网页可以包含HTML标记、普通文本、脚本命令以及COM组件等。利用ASP可以向网页中添加交互式内容(如在线表单),也可以创建使用HTML网页作为用户界面的web应用程序。(3)JSP 即Java Server Pages,是基于Java Servlet以及整个Java体系的Web开发技术。以至 ASP一般只应用于Windows NT/2000平台,而JSP则可以在85以上的服务器上运行,而且基于JSP技术的应用程序比基于ASP的应用程序易于维护和管理。它的主要目的是将表示逻辑从Servlet中分离出来15、简单描述浏览器输入:http:/localhost:8080/myFirstWeb/myFirstServlet访问web资源的过程(也就是servlet的工作时序图),提示:解释地址-用端口号和地址访问服务器-访问资源(1)浏览器会将请求打包成http请求数据包,发送给web服务器,(2)web服务器中的servlet引擎解析请求并封装为一个HttpServletRequest对象(包含了请求数据),同时创建个HttpServletResponse对象。(3)servlet调用servlet的service()方法,并将HttpServletReque,HttpServletResponse对象作为参数传递给servlet实例(4)servlet可以从HttpServletRequest对象中获得请求数据,并处理,当然,servlet也可能要访问数据库。然后将处理之后的结果放到HttpServletResponse中。(5)servlet引擎从HttpServletResponse中取数据,并将数据打包成http数据包发送给浏览器。16、开发serlvet服务器程序三种方法。(1)实现servlet接口(2)继承GenericServet(3)继承HttpServlet17、通过httpservlet去开发servlet,需要重写doGet和doPost方法。这是常用的方式,请简述Get与Post方法的区别。(1)从安全性看:get方法安全性比post方法低,get提交的数据会在浏览器的地址显示出来;用户和密码会被显示出;(2)从提交的内容大小看:get方法post方法低,get提交的数据不能大于2K,而post提交的数据理论上不受限制,但是实际编程中建议不要大于64K;(3)从请求响应速度看:get方法响应速度快于post方法, get要求服务器立刻处理请求,而post请求可能形成一个队列请求。18、简述http返回包中的状态码200,302,404,500的意义。200-服务器成功返回网页 302-对象已移动404-请求的网页不存在 500-内部服务器错误19、简述请求重定向(response.sendRedirect)和请求转发(getRequestDispatcher.forward)的区别。(1)RequestDispatcher.forward方法只能将请求转发给同一个Web应用中组件;HttpServletResponse.sendRedirect方法不仅可以重定向当当前应用程序的其他资源,还可以重定向到同一个站点上的其他应用程序的资源,甚至是使用绝对路径URL重定向到其他站点的资源.(2)调用HttpServletResponse.sendRedirect方法重定向的访问结束后,浏览器的地址栏显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;而调用requestDispatcher.forward方法的请求转发过程结束后,浏览器地址栏保持初始的URL地址不变.(3)HttpServletResponse.sendRedirect方法整个过程浏览器共发送了两次请求信息,接受了两次响应;而getRequestDispatcher.forward方法整个过程浏览器共发送了一次请求信息,接受了一次响应.(4)RequestDispatcher.forward方法调用者与被调用者之间共享相同的Request对象和 Response对象,他们属于同一个访问请求和响应过程;而HttpServletResponse.sendRedirect方法调用者与被调用折使用各自的Request对象和Response对象,他们属于两个独立的访问请求和响应过程。20、 hibernate拒绝连接、服务器崩溃的原因?最少写5个(1)db没有打开(2)网络连接可能出了问题(3)连接配置错了(4)驱动的driver,url是否都写对了(5)LIB下加入相应驱动,数据连接代码是否有误(6)数据库配置可能有问题(7)当前联接太多了,服务器都有访问人数限制的(8)服务器的相应端口没有开,即它不提供相应的服务21、update()和saveOrUpdate()的区别?update和saveOrUpdate是用来对跨Session的PO进行状态管理的, Update()方法操作的对象必须是持久化了的对象。也就是说,如果此对象在数据库中不存在的话,就不能使用update()方法。Saveorupdate()方法操作的对象既可以是持久化了的,也可以是没有持久化了的对象。如果是持久化了的对象调用saveorupdate则会更新数据库中的对象;如果是未持久化了的对象使用此方法,则save到数据库中。22、hibernate的三种状态之间如何转换当对象由瞬时状态(Transient)一save()时,就变成了持久化状态。当我们在Session里存储对象的时候,实际是在Session的Map里存了一份,也就是它的缓存里放了一份,然后,又到数据库里存了一份,在缓存里这一份叫持久对象(Persistent)。Session 一 Close()了,它的缓存也都关闭了,整个Session也就失效了,这个时候,这个对象变成了游离状态(Detached),但数据库中还是存在的。当游离状态(Detached)update()时又变为了持久状态(Persistent)。当持久状态(Persistent)delete()时,又变为了瞬时状(Transient),此时,数据库中没有与之对应的记录。三种状态之间的相互转换图: 23、 工厂模式定义:实例化对象,用工厂方法代替new操作,工厂模式主要是为创建对象提供了接口分类:工厂模式分为三类1. 简单工厂模式(Simple Factory) 2. 工厂方法模式(Factory Method) 3. 抽象工厂模式(Abstract Factory) 24、 抽象类和接口的区别第一点 接口是抽象类的变体,接口中所有的方法都是抽象的。而抽象类是声明方法的存在而不去实现它的类。第二点 接口可以继承,抽象类不行第三点 接口定义方法,不能实现,而抽象类可以实现部分方法。第四点 接口中基本数据类型为static 而抽类象不是的。25、 forward和redirect的区别(1)从地址栏显示来说forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.(2)从数据共享来说forward:转发页面和转发到的页面可以共享request里面的数据;redirect:不能共享数据.(3)从运用地方来说forward:一般用于用户登陆的时候,根据角色转发到相应的模块.redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.(4)从效率来说forward:高. redirect:低.26、 持久化对象的三种状态,代表含义。 持久化对象的三种状态:一个持久化类的实例可能处于三种不同状态中的某一种。(1)瞬时(transient)状态:该实例是刚用new语句创建的,还没有被持久化,不处于任何Session的缓存中。它没有持久化标识(相当于主键值)。处于瞬时状态的实例被称为瞬时对象。它的特点是:不和任何一个Session实 例关联。在数据库中没有对应的记录。(2)持久化(persistent)状态:已经被持久化,加入到 Session缓存中。处于持久化状态的实例被称为持久化对象。实例目前与某个Session有关联。 它拥有持久化标识(相当于主键值),并且可能在数据库中有一个对应的行。 Hibernate保证在同一个Sesion实例的缓存中,数据库中的每条记录只对应唯一的持久化对象。 它的特点是:持久化对象总是被一个Session实例关联。持久化对象和数据库中的相关记录对应。Session在清理缓存时,会根据持久化对象的属性变化,来同步更新数据库。(3)脱管(detached)状态:已经被持久化过,但不再处于 Session的缓存中。处于脱管状态的实例被称为脱管对象。实例曾经与某个持久化上下文发生过关联,不过那个上下文被关闭了, 或者这个实例是被序列化(serialize)到另外的进程。 它拥有持久化标识,并且在数据库中可能存在一个对应的行。 对于脱管状态的实例,Hibernate不保证任何持久化标识和Java标识的关系。它的特点是:不再位于session的缓存 中,即它不再和session关联。它拥有持久化标识。27、 页面之间的值传递: 第一步:模拟两个页面A页面、B页面。需要在B页面获取A页面的信息。A页面:B页面:A.aspx第二步:如何获取呢来个非常简单的,在B页面Page_Load事件中使用Page.PreviousPage 属性,获取向当前页传输控件的页。 找到相应的控件。protected voidPage_Load(object sender, EventArgs e)if (!Page.IsPostBack) TextBox t = (TextBox)(PreviousPage.FindControl(Textbox1);Calendar c = (Calendar)(PreviousPage.FindControl(Calendar1);Label1.Text = string.Format(文本框:0,选择日期?:1, t.Text, c.SelectedDate);OK28、Struts框架的数据验证可分为几种类型? 表单验证(由ActionForm Bean处理):如果用户没有在表单中输入姓名,就提交表单,将生成表单验证错误;业务逻辑验证(由Action处理):如果用户在表单中输入的姓名为“Monster”,按照本应用的业务规则,不允许向“Monster”打招呼,因此将生成业务逻辑错误。29、写一个Singleton模式的例子 public class Singleton private static Singleton single = new Singleton(); private Singleton() public Singleton getInstance() return single; 30、谈谈你mvc的理解 MVC是ModelViewControler的简称。即模型视图控制器。MVC是一种设计模式,它强制性的把应用程序的输入、处理和输出分开。 MVC中的模型、视图、控制器它们分别担负着不同的任务。 视图: 视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并接受用户的输入。视图不进行任何业务逻辑处理。 模型: 模型表示业务数据和业务处理。相当于JavaBean。一个模型能为多个视图提供数据。这提高了应用程序的重用性 控制器: 当用户单击Web页面中的提交按钮时,控制器接受请求并调用相应的模型去处理请求。然后根据处理的结果调用相应的视图来显示处理的结果。 MVC的处理过程:首先控制器接受用户的请求,调用相应的模型来进行业务处理,并返回数据给控制器。控制器调用相应的视图来显示处理的结果。并通过视图呈现给用户。31、 项目中为什么使用SSH(1) 使用Struts是因为struts是基于MVC模式的,很好的将应用程序进行了分层,使开发者更关注于业务逻辑的实现;第二,struts有着丰富的taglib,如能灵活运用,则能大大提高开发效率。(2)使用Hibernate:因为hibernate为Java应用提供了一个易用的、高效率的对象关系映射框架。hibernate是个轻量级的持久性框架,功能丰富。(3) 使用Spring:因为spring基于IoC(Inversion of Control,反向控制)和AOP构架多层j2ee系统的框架,但它不强迫你必须在每一层中必须使用Spring,因为它模块化的很好,允许你根据自己的

温馨提示

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

评论

0/150

提交评论