--这是一个神奇的文档,据说看到的人都会得到好运。
--BY VAY
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
J2EE考点整理
一.(20分)
1 什么是JavaEE组件?
答:(1)【教材】Java EE组件是一个独立的功能软件单元,它与其他相关的类别和文件被组装到一个Java EE应用中,并且和其他组件进行通信。JavaEE组件使用java语言编写,JavaEE组件和标准Java类的不同之处在于Java EE组件需要组装到 JavaEE应用中,需要被验证是否合乎格式并遵循JavaEE规范,并且会部署到生产环境,通过JavaEE服务器来运行和管理。
(2)【来自Java Web开发实战经典】每一种Java EE组建实际上都代表着一种程序的开发,例如Application程序就是使用主方法(main())运行的一种组件。在JavaEE中提供了四种容器,每一种容器都运行着各自的组件,Web容器中运行着JSP和Servlet组件,EJB容器中运行着EJB组件。
2列出JavaEE服务器中所有的容器,并给出所有容器的定义?
答: JavaEE共提供了四种容器:Applet Container、Application Client Container、Web Container和EJB Container。
Ø 应用客户端容器:管理应用客户端组件的执行。应用客户端和他们的容器运行于客户端上。
Ø 小应用程序容器:管理小应用程序的执行。由共同运行在客户端的Web浏览器和Java插件组成。
Ø Web容器:为JavaEE应用管理JSP页面和servlet组件的执行。Web组件和它们的容器运行于Java EE服务器上。
Ø 企业JavaBeans(EJB)容器:为Java EE应用管理企业Bean的执行。企业Bean和它们的容器运行于Java EE服务器上。
3描述所有的JavaEE组件?
答:(1)应用客户端与小应用程序是运行在客户端的组件。(2)Java Servlet、JavaServer Faces、JavaServer Pages(JSP)技术组件是运行在服务器上的Web组件。(3)企业JavaBean(EJB)组件是运行在服务器上的业务组件。
4什么是JavaEE模块?
答:JavaEE模块(Java EE module)由一个或多个针对相同容器类型Java EE组件以及一个属于该类型的组件部署描述符组成。例如,企业Bean模块部署描述符声明了针对企业Bean的事务属性和安全性授权方式。
5 列出所有JavaEE模块并给出它们的描述?(10分)
答:四种Java EE模块如下:
Ø EJB模块包含针对企业Bean的类文件和一个EJB部署描述符。EJB模块被打包成以.jar为拓展名的JAR文件。
Ø Web模块包含Servlet类文件、JSP文件、支撑类文件、GIF和HTML文件以及一个Web应用部署描述符。Web文件被打包成以.war为拓展名的JAR文件。
Ø 应用客户端模块包含类文件和一个应用客户端部署描述符。应用客户端模块被打包成以.jar为拓展名的JAR文件。
Ø 资源适配器模块包含所有Java接口、类别、本地库和其他文档,以及资源适配器部署描述符。它们共同实现了针对某个特定EIS的Connector体系结构。资源适配器模块被打包成以.rar为拓展名的JRA文件。
6 请画出JavaEE应用的EAR文件结构(Structure of Enterprise Archivefile)?
答:Ear文件是一种具有以.ear作为拓展名的标准Java档案(Java Archive,JAR)文件,EAR文件包含Java EE模块和部署描述符。
二.(20分)
1 什么是Servlet和JSP?
答:(1)Servlet是一种动态处理请求并构建响应的Java编程语言类,通过一种请求-响应编程模型来扩展应用宿主服务器的功能。
(2)JSP是一种基于文本的文档,它包含两种类型的文本:一种是静态数据,它们可以用任何基于文本的格式(例如HTML、SVG、WML和XML)来表达;一种是JSP元素,它们用于构建动态内容。
2详细说明Web客户端与Web应用程序之间相互作用的步骤?
答:(1)客户端发送一个HTTP请求到服务器。(2)实现了JavaServlet和JSP页面技术的Web服务器将请求转换为HTTPServletRequest对象。(3)该对象被传递给Web组件,Web组件和JavaBean组件或数据库进行交互来生成动态内容。(4)Web组件然后生成一个HTTPServletResponse,或者将请求转交给另外的Web组件,最后Web组件会生成一个HTTPServletResponse对象。(6)Web服务器将该对象转换为一个HTTP相应并将它返回给客户端。
3 什么是Web组件?
答:JavaEEWeb组件或者是Java Servlet,或者是使用JSP技术和JavaServlet Faces技术创建的页面。Web组件可以是JavaServlet、JSP页面或者是Web服务端点。
4描述Web应用的生命周期?
答:创建、部署和执行Web应用的过程总结如下:(1)开发Web组件代码(2)开发Web应用部署描述符(3)编译Web应用组件和组件所引用的助手类(4)可选地将应用打包到某个可部署单元(5)将应用部署到某个Web容器(6)访问引用Web应用的URL
5给出文档根和上下文根(document root and context root)的定义?
并叙述它们的区别?
答:web模块的顶级目录是应用程序的文档根目录,文档根目录是保存JSP页面,客户端类和档案以及静态Web资源的地方。上下文根标识了JAVA EE服务器中的某个Web应用。用户在部署Web模块时需指定上下文根。上下文根必须以正斜杠(/)开始,并以某个字符串作为结束。
区别:文档根是用来标识文档资源,可以方便用户管理文件。而上下文根是标识某个web应用,它可以告诉服务器去找那个应用。一个是管理硬盘中的文档,一个管理网络中应用,是两个不同的概念。
6画出Web模块结构图?
答:
三.(20分)
1什么是过滤器?
答:过滤器(filter)是一种可以对请求或相应的报头和主体内容进行转换的对象。过滤器与Web组件不同,因为过滤器通常本身并不负责创建响应。相反,过滤器提供可以“附加”到任何Web资源的功能。过滤器可以完成以下主要任务:
(1)查询请求并进行相应的操作。
(2)阻塞请求-相应对,使其不能进一步被传递。
(3)修改其请求报头和数据。用户可以通过提供一个自定义的请求版本来完成任务。
(4)修改响应报头和数据。用户可以通过提供一个自定义的响应版本来完成该任务。
(5)和外部资源进行交互。
2 为了处理http服务, 在Java源码中需要扩展哪个servlet类?
答:HttpServlet类
3在Java源码中怎样定义过滤器?
答:这个我就不在这里敲了,篇幅较大,可以在网上找找,实现什么接口(Filter),覆写了什么方法(init()、destroy()、doFilter())等。老师要的应该就是这些了。
4详细描述Servlet的生命周期?
答:Servlet的生命周期是有Servlet所部属的容器来控制的。当某个请求被映射到Servlet,容器将执行以下步骤:
<1>.如果Servlet的某个实例不存在,则有:
a)加载Servlet类。
b)创建Servlet类的一个实例。
c)通过调用init方法来初始化Servlet实例。
<2>.调用service方法,传递请求和响应对象。
<3>.如果容器需要删除Servlet,则它将通过调用Servlet的destroy方法来终结Servlet。
5 在Java源码中怎样驱动过滤器链(Filter chain)?
答:同上。
四. (20分)
1 什么是统一表达式语言?
答:统一表达式语言(统一EL):代表JSP2.0提供的表达式语言和针对JavaServer Faces技术版本1.0所创建的表达式语言两者之间的联合。可以让页面编写者使用简单的表达式来执行动态读取/写入、调用任意的静态和公共方法以及动态执行算术运算等任务。
2 列举出JavaBean组件的属性?
答:(1)简单属性(Simple):一个简单属性表示一个伴随有一对get/set方法的变量。属性名与和该属性相关的get/set方法名对应。例如:如果有setX和getX方法,则暗指有一个名为"X"的属性。如果有一个方法名为isX,则通常暗指"X"是一个布尔属性(即X的值为true或false)
(2)索引属性(Indexed):一个Indexed属性表示一个数组值。使用与该属性对应的set/get方法可取得数组中的数值。该属性也可一次设置或取得整个数组的值
(3) 捆绑属性(Bound):一个Bound属性是指当该种属性的值发生变化时,要通知其它的对象。每次属性值改变时,这种属性就点火一个PropertyChange事件(在Java程序中,事件也是一个对象)。事件中封装了属性名、属性的原值、属性变化后的新值。这种事件是传递到其它的Bean,至于接收事件的Bean应做什么动作由其自己定义。
(4)约束属性(Constrained):一个JavaBean的constrained属性,是指当这个属性的值要发生变化时,与这个属性已建立了某种连接的其它Java对象可否决属性值的改变。constrained属性的监听者通过抛出PropertyVetoException来阻止该属性值的改变。
3 给出立即求值和延迟求值表达式的定义和语法?
答:立即求值(immediate evaluation)意味着JSP引擎在第一次呈现页面后便立即对表达式求值并返回结果。延迟求值(deferred evaluation)意味着使用表达式语言的技术可以在页面生命周期内稍微晚点的适当时候采用它自己的方法来对表达式求值。立即求值的表达式使用${}语法;延迟求值的表达式则使用#{}语法。
4 描述JavaBean的设计习惯?
答:JavaBean组件设计约定负责管理类的属性以及管理提供对这些属性访问的公共方法。JavaBean组件可以是:
ü 读/写、只读、或者只写
ü 简单(Simple)特性,意味着它包含一个值,或者索引(indexed)特性,意味着它表示一个值数组。
特性并不一定必须由某个实例变量来实现,必须使用遵循以下规范的公共方法来访问特性:
ü 对于每一种可读的特性,bean必须具有以下形式的方法。
PropertyClass getProperty(){ … }
ü 对于每一种可写的特性,bean必须具有以下形式的方法。
setProperty(PropertyClass pc){ … }
除了特性方法,JavaBean组件必须定义一个没有参数的构造函数。