J2EE复习题.docx
- 文档编号:8763954
- 上传时间:2023-05-14
- 格式:DOCX
- 页数:21
- 大小:69.79KB
J2EE复习题.docx
《J2EE复习题.docx》由会员分享,可在线阅读,更多相关《J2EE复习题.docx(21页珍藏版)》请在冰点文库上搜索。
J2EE复习题
1.Servlet:
是用java技术来实现CGI(CommonGatewayInterface,通用网关接口)功能的编程,介于浏览器(或其他HTTP客户端)与服务器之间,起到桥梁的作用。
具体作用为:
●读取客户端发送的数据
●获取客户请(request)中所包含的信息
●产生响应结果,并将结果包含到一个文件中,比如HTML文件中
●设置HTTP响应参数,比如告诉浏览器,文件类型为HTML
●将文件返回给客户端
Servlet的应用并不限于处理HTTP请求的网页或者应用程序服务中,还可以置入到邮件或FTP服务程序中
2.JDBC(JavaDataBaseConnectivity,java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯JavaAPI编写数据库应用程序。
3.通常使用Class.forName()方法加载JDBC驱动程序.成功加载JDBC驱动程序后,负责管理JDBC驱动程序的类DriverManager会识别加载的驱动程序,于是它就调用方法getConnection()来连接数据库。
4.JavaWeb应用的核心技术是JSP、Servlet与JavaBean.
5.从应用的角度来说,Struts有三大块:
Struts核心类、Struts配置文件及Struts标签库。
Hibernate是一个面向Java环境的对象/关系映射工具,它可将对象模型表示的对象映射到基于SQL的关系数据模型中。
6.在HTML语言中,单独使用
标记时会空一行.在
标记位置画一条线。
7.表单用来从用户(站点访问者)处收集信息,然后将这些信息提交给服务器进行处理。
表单中可以包含允许用户进行交互的各种控件,例如,文本框、列表框、复选框和单选按钮等。
用户在表单中输入或选择数据后提交,该数据就会提交到相应的表单处理程序,以各种不同的方式进行处理。
表单结构如下:
8.表格中的每一行用tr标记来表示;行中的单元格用td或th标记定义。
其中th标记定义表格的列标题单元格,
9.框架网页通过一个frameset(框架集)标记和多个frame(框架)标记来定义。
在框架网页中,将frameset标记置于head之后,以取代body的位置,还可以使用noframes标记生成不能被浏览器显示时的替换内容。
框架网页的基本结构如下:
10.可以使用frameset标记的下列属性对框架的结构进行设置。
cols="30%,200,*":
表示将浏览器窗口划分为3个框架,其中第1个占窗口宽度的30%,第2个为200像素,第3个为窗口的剩余部分;
11.Servlet生命周期
当Servlet被装载到容器后,生命周期开始。
首先调用init()方法进行初始化,初始化后,调用service()方法,根据请求的不同调用不同的doXxx()方法处理客户请求,并将处理结果封装到HttpServletResponse中返回给客户端。
当Servlet实例从容器中移除时调用其destroy()方法,这就是Servlet运行的整个过程。
12.Servlet类在项目的src文件夹下创建,布局web.xml文件,有一个Servlet文件就要在web.xml中布置一个
13.JSP常用的有3条指令:
page、include和taglib。
14.指令标签<%@includefile=“fileName”%>和动作标签 includepage=“someFile.html”/>都可以嵌入代码。 前者实际上是将代码插入行内,后者是将另一个页面的输出插入原来的页面. 15.说明它们三者之间的区别 在同一请求范围内,该三个对象都有效,在不同请求中,request对象就失效了,但是由于用的是同一个IE,也就是同一会话,session和application仍然有效。 如果再重新打开一个IE,则只有application仍有效. 16.MVC有以下优点: ①多个视图可以对应一个模型。 按MVC设计模式,一个模型对应多个视图,可以减少代码的复制及代码的维护量,一旦模型发生改变,也易于维护。 ②模型返回的数据与显示逻辑分离。 模型数据可以应用任何显示技术,例如,使用JSP页面、Velocity模板或者直接产生Excel文档等。 ③应用被分隔为三层,降低了各层之间的耦合,提供了应用的可扩展性。 ④控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起,完成不同的请求,因此控制层可以说是包含了用户请求权限的概念。 ⑤MVC更符合软件工程化管理的精神。 不同的层各司其职,每一层的组件具有相同的特征,有利于通过工程化和工具化产生管理程序代码。 17.Struts2的基本流程如下: ①Web浏览器请求一个资源。 ②过滤器Dispatcher查找请求,确定适当的Action。 ③拦截器自动对请求应用通用功能,如验证和文件上传等操作。 ④Action的execute方法通常用来存储和(或)重新获得信息(通过数据库)。 ⑤结果被返回到浏览器。 可能是HTML、图片、PDF或其他。 其实,Struts2框架的应用着重在控制上。 简单的流程是: 页面→控制器→页面。 最重要的是控制器的取数据与处理后传数据的问题。 Struts2的体系结构还可以参考图3.1,更直观地展现出其流程。 图3.1Struts2体系结构 18.Struts2开发中,修改Web.xml文件主要是用来配置过滤器.它是用户请求和处理程序之间的一层处理程序。 它可以对用户请求和处理程序响应的内容进行处理,通常用于权限控制、编码转换等场合。 19.在Struts.xml文件中配置Action实现类及要转向的结果页面. 20.Struts2的工作流程 Struts2框架中的配置文件struts.xml会起映射作用,它会根据“*”来决定调用用户定义的哪个Action类。 例如在项目Struts2.0中,请求为struts.action,前面“*”的部分是“struts”,所以在struts.xml中有个Action类的name为“struts”,这表示该请求与这个Action来匹配,就会调用该Action中class属性指定的Action类。 但是在Struts2中,用户定义的Action类并不是业务控制器,而是Action代理,其并没有和ServletAPI耦合。 所以Struts2框架提供了一系列的拦截器,它负责将HttpServletRequest请求中的请求参数解析出来,传入到用户定义的Action类中。 21.一个Action类继承了ActionSupport类 22.Struts2标签库大大简化了JSP页面输出逻辑的实现.借助于Struts2标签库,完全可以避免在JSP页面中使用Java脚本代码. 23.虽然Struts2把所有的标签都定义在URI为/struts-tags的命名空间下,但依然可以对Struts2标签进行简单的分类.从最大的范围可以将其分为3类: UI标签、非UI标签和Ajax标签。 ØUI标签: 主要用于生成HTML标签,可分为表单标签和非表单标签。 Ø非UI标签: 主要用于数据访问和逻辑控制等,可分为控制标签和数据标签。 ØAjax标签: 主要用于Ajax标签。 24.OGNL是ObjectGraphicNavigationLanguage(对象图导航语言)的缩写,它是一个开源项目。 OGNL是一种功能强大的EL(ExpressionLanguage,表达式语言),可以通过简单的表达式来访问Java对象中的属性。 它先在WebWork项目中得到应用,后成为Struts2框架视图默认的表达式语言。 可以说,OGNL表达式是Struts2框架的特点之一。 25.Struts2框架的绝大部分功能是通过拦截器来完成的.当FilterDispatcher拦截到用户请求后,大量拦截器将会对用户请求进行处理,然后才调用用户自定义的Action类中的方法来处理请求.可见,拦截器是Struts2的核心所在.当需要扩展Struts2的功能时,只需要提供相应的拦截器,并将它配置在Struts2容器中即可.反之,取消即可.Struts2内建的大量拦截器都是以name-class对的形式配置在struts-default.xml文件中,其中name是拦截器名称,class指定该拦截器的实现类.在前面的例子中可以看到,在配置Struts.xml时,都继承了struts-default包,这样就可以应用里面定义的拦截器.否则,就必须自己定义. 26.Hibernate是一个对象/关系映射的解决方案,即将JAVA中对象与对象之间的关系映射至关系数据库中的表与表之间的关系. 27.对象/关系映射ORM(Object-RelationMapping)是用于将对象与对象之间的关系对应到数据库表与表之间的关系的一种模式。 简单地说,ORM是通过使用描述对象和数据库之间映射的元数据,将Java程序中的对象自动持久化到关系数据库中。 对象和关系数据是业务实现的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。 内存中的对象之间存在着关联和继承关系。 而在数据库中,关系数据无法直接表达多对多关联和继承关系。 因此,ORM系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。 一般的ORM包括四个部分: 对持久类对象进行CRUD操作的API、用来规定类和类属性相关查询的语言或API、规定mappingmetadata的工具,以及可以让ORM实现同事务对象一起进行dirtychecking、lazyassociationfetching和其他优化操作的技术。 28.Hibernate体系结构 Hibernate作为模型层/数据访问层。 它通过配置文件(hibernate.cfg.xml或hibernate.properties)和映射文件(*.hbm.xml)把Java对象或持久化对象(PersistentObject,PO)映射到数据库中的数据表,然后通过操作PO,对数据库中的表进行各种操作,其中PO就是POJO(普通Java对象)加映射文件。 Hibernate的体系结构如图4.1所示。 图4.1Hibernate体系结构 Hibernate的映射配置文件是实体对象与数据库关系表之间相互转换的重要依据,一般一个映射配置文件对应着数据库中的一个关系表,关系表之间的关联关系也在映射文件中配置。 POJO类中的属性和表中的字段是一一对应的。 那么通过*.hbm.xml映射文件把它们一一映射起来。 29.Hibernate的主键生成策略分为三大类: Hibernate对主键id赋值、应用程序自身对id赋值、由数据库对id赋值。 由于常用的数据库都提供了易用的主键生成机制(如auto-increase字段)。 故在数据库提供的主键生成机制上,可采用generatorclass=“native”的主键生成方式。 30.Hibernate中的Session对象的创建大致需要以下3个步骤: ①初始化Hibernate配置管理类Configuration。 ②通过Configuration类实例创建Session的工厂类SessionFactory。 ③通过SessionFactory得到Session实例。 31.Hebernate的核心接口一共有5个: Configuration、SessionFactory、Session、Transaction和Query。 通过这些接口,可以对持久化对象进行存取,进行事务控制。 32.HQL是HibernateQueryLanguage的缩写.HQL的语法很像SQL,但HQL是一种面向对象的查询语言。 SQL的操作对象是数据表和列等数据对象,而HQL的操作对象是类、实例、属性等。 HQL的查询依赖于Query类,每个Query实例对应一个查询对象。 Queryquery=session.createQuery(“fromKcbwherekch=198”)中createQuery方法中的字符串即为HQL语句。 33.Hibernate有两种映射实体一对一关联关系的实现方式: 共享主键方式和唯一外键方式。 共享主键方式就是限制两个数据表的主键使用相同的值,通过主键形成一对一映射关系。 唯一外键方式是一个表的外键和另一个表的唯一主键对应形成一对一映射关系,其实质就是多对一关联关系的一种特殊情况。 34.Hibernate批量插入可通过Hibernate的缓存进行批量插入或绕过Hibernate直接调用JDBC进行插入。 35.实体对象的生命周期有以下3种状态。 ³transient(瞬时态) 瞬时态,即实体对象在内存中的存在,与数据库中的记录无关。 如下面的代码: ³persisent(持久态) 在这种状态下,实体对象的引用被纳入Hibernate实体容器中加以管理。 处于持久状态的对象,其变更将由Hibernate固化到数据库中。 ³Detached(脱管状态) 处于持久态的对象,其对应的Session实例关闭之后,此对象就处于脱管状态。 Session实例可以看做是持久对象的宿主,一旦此宿主失效,其从属的持久对象进入脱管状态。 36.Hibernate是JDBC的轻量级封装,本身并不具备事务管理能力。 在事务管理层,Hibernate将其委托给底层的JDBC或JTA,以实现事务管理和调度功能。 JTA(JavaTransactionAPI)是由JavaEETransactionManager去管理的事务。 其最大的特点是调用UserTransaction接口的begin、commit和rollback方法来完成事务范围的界定、事务的提交和回滚。 JTA可以实现统一事务对应不同的数据库。 JTA主要用于分布式的多个数据源的两阶段提交的事务,而JDBC的Connection提供单个数据源的事务。 后者因为只涉及一个数据源,所以其事务可以由数据库自己单独实现。 而JTA事务因为其分布式和多数据源的特性,不可能由任何一个数据源实现事务。 因此,JTA中的事务是由“事务管理器”实现的。 它会在多个数据源之间统筹事务,具体使用的技术就是所谓的“两阶段提交”。 JTA提供了跨Session的事务管理能力.这是与JDBCTransaction最大的差异.JDBC事务由Connection管理,即事务管理是在JDBCConnection中实现.事务周期限于Connection的生命周期之内.因此,对于基于JDBCTransaction的Hibernate事务管理机制,事务管理在Session所依托的JDBCConnection中实现,事务周期限于Session的生命周期. JTA事务管理由JTA容器实现.它对当前加入事务的众多Connection进行调度,实现事务性要求.JTA的事务周期可跨多个JDBCConnection生命周期.因此,对于基于JTA事务的Hibernate,JTA事务横跨多个Session. 37.Hibernate支持两种锁机制,悲观锁(PessimisticLocking)和乐观锁(OptimisticLocking)。 悲观锁是指对数据被外界修改持保守态度.假定任何时刻存取数据时,都可能有一个客户也正在存取同一数据.于是对数据采取了数据库层次的锁定状态,依靠数据库提供的锁机制来实现. 乐观锁认为数据很少发生同时存取问题,因而不做数据库层次上的锁定,采用应用程序上的逻辑实现版本控制的方法. 38.DAO是DataAccessObject数据访问接口,既然是对数据的访问,顾名思义就是与数据库打交道。 为了建立一个健壮的JavaEE应用,应该将所有对数据源的访问操作抽象封装在一个公共API中。 用程序设计的语言来说,就是建立一个接口,接口中定义了此应用程序中将会用到的所有事务方法。 在这个应用程序中,当需要和数据源进行交互的时候则使用这个接口,并且编写一个单独的类来实现这个接口,在逻辑上对应这个特定的数据存储,这就是DAO模式。 39.Spring的核心要点是: 支持不绑定到特定JavaEE服务的可重用业务和数据访问对象。 Spring的核心机制是依赖注入(DependencyInversion),也称为控制反转。 applicationContext.xml的文件,这就是Spring的核心配置文件 40.所谓依赖注入就是指运行过程中,如果需要调用另一个对象协助时,无需在代码中创建被调用者,而是依赖于外部的注入。 Spring的依赖注入对调用者和被调用者几乎没有任何要求,完全支持POJO之间依赖关系的管理。 依赖注入通常有两种: 设置注入与构造注入。 41.Spring有两个核心接口: BeanFactory(Bean工厂,由org.springframework.beans.factory.BeanFactory接口定义)和ApplicationContext(应用上下文,由org.springframework.context.ApplicationContext接口定义),其中ApplicationContext是BeanFactory的子接口。 它们代表了Spring容器。 BeanFactory 它采用了工厂设计模式,负责创建和分发Bean。 与其他工厂模式的实现不同,它们只分发一种类型的对象。 它是一个通用的工厂,可以创建和分发各种类型的Bean。 为了获得Spring框架的强大功能,需要使用Spring更加高级的容器-----ApplicationContext(应用上下文)。 两者都是载入Bean定义信息,装配Bean,根据需要分发Bean。 但是ApplicationContext提供了更多功能: ①应用上下文提供了文本信息解析工具,包括对国际化的支持。 ②应用上下文提供了载入文本资源的通用方法,如载入图片。 ③应用上下文可以向注册为监听器的Bean发送事件。 由于它提供的附加功能,几乎所有的应用系统都选择ApplicationContext,而不是BeanFactory。 两者的另一个重要区别是单实例Bean如何被加载。 BeanFactory延迟载入所有的Bean,直到getBean()方法被调用时,Bean才被创建。 ApplicationContext则聪明一点,它会在上下文启动后预载入所有的单实例Bean。 通过预载入单实例Bean,确保当需要的时候它们已经准备好,应用程序无需等待它们被创建。 42.AOP中的aspect所指的可以是像日志这类的动作或服务,将这些动作(cross-cuttingconcerns)设计为通用,不介入特定业务类的一个职责清楚地Aspect类,这就是所谓的Aspect-OrientedProgramming,AOP。 在DynamicProxyDemo例子中,记录的动作原先被横切(Cross-cutting)到HelloSpeaker本身所负责的业务流程中。 类似于日志这类的动作,如安全检查、事务等服务,在一个应用程序中常被安排到各个类的处理流程之中。 这些动作在AOP的术语中称为cross-cuttingconcerns。 如图5.7所示,原来的业务流程是很单纯的。 43.Spring提供了5种通知(Advice)类型: InterceptionAround、Before、AfterReturning、Throw和Introduction。 它们分别在以下情况被调用: ●InterceptionAroundAdvice: 在目标对象的方法执行前后被调用。 ●BeforeAdvice: 在目标对象的方法执行前被调用。 ●AfterReturningAdvice: 在目标对象的方法执行后被调用。 ●ThrowAdvice: 在目标对象的方法抛出异常时被调用。 ●IntroductionAdvice: 一种特殊类型的拦截通知,只有在目标对象的方法调用完毕后执行。 44.Spring的事务管理不需要与任何特定的事务API耦合。 Spring同时支持编程式事务策略和声明式事务策略,大部分时候都采用声明式事务策略。 声明式事务管理的优势非常明显: 代码中无需关注事务逻辑,让Spring声明式事务管理负责事务逻辑,声明式事务管理无需与具体的事务逻辑耦合,可方便在不同事务逻辑间切换。 45.声明式事务管理的配置方式,通常有以下4种: ①使用TransactionProxyFactoryBean为目标Bean生成事务代理的配置。 此方式是最传统、配置文件最臃肿、最难以阅读的方式。 ②采用Bean继承的事务代理配置方式,比较简洁,但依然是增量式配置。 ③采用BeanNameAutoProxyCreator,根据BeanName自动生成事务代理的方式。 这是直接利用Spring的AOP框架配置事务代理的方式,需要对Spring的AOP框架有所理解。 但这种方式避免了增量式配置,效果非常不错。 ④采用DefaultAdvisorAutoProxyCreator,直接利用Spring的AOP框架配置事务代理的方式,效果非常不错,只是这种配置方式的可读性不如第3种方式。 45.从Spring和Hibernate的整合中可以看出,由Spring的配置文件来管理Hibernate的配置,由Bean来实现数据库的连接,而它们的整合还提供了HibernateSupportDao类来实现DAO。 从Struts2与Spring的整合中可以看出,Struts2也把Action类的生成交给了Spring,利用Spring的依赖注入,完成业务逻辑对象的生成。 这样就完成了三者之间的整合。 46.POJO(PlainOldJavaObject,简单的Java对象),通常也称为VO(ValueObject,值对象)。 使用POJO名称是为了避免和EJB混淆起来,其中有一些属性及getter、setter方法。 当然,如果有一个简单的运算属性也是可以的,但不允许有业务方法。 47.Ajax是异步JavaScript和XML(Asynchronousjavascriptandxml)的英文缩写.这个名词是JesseJamesGarrett首先提出,由Google公司大力推广.Google公司发布的Gmail、GoogleSuggest等应用了Ajax技术。 Ajax的核心理念是使用XMLHttpRequest对象发送异步请求。 最初为XMLHttpRequest对象提供浏览器支持的是微软公司。 1998年其Web版Outlook以ActiveX控件的方式为XMLHttpRequest提供了支持。 Ajax是几种独特技术融合在一起而形成的一个功能强大的“新”技术。 48.Ajax应用程序必须
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- J2EE 复习题
![提示](https://static.bingdoc.com/images/bang_tan.gif)