JavaEE复习知识点及答案.docx
- 文档编号:12101312
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:20
- 大小:174.61KB
JavaEE复习知识点及答案.docx
《JavaEE复习知识点及答案.docx》由会员分享,可在线阅读,更多相关《JavaEE复习知识点及答案.docx(20页珍藏版)》请在冰点文库上搜索。
JavaEE复习知识点及答案
JavaEE主要知识点
---配合教材《JavaEE实用教程-基于WebLogic和Eclipse(第二版)》
及SSH入门
第一部分基础服务
1.JavaEE6的架构图、JavaEE的组件类型
将应用分成四层,分别为客户端层、Web层、EJB层(业务逻辑层)和数据库层;
组件:
组件可以定义为一种自治的、提供外部公共接口的、动态可用的业务处理过程,组件可以用来构建其它组件或者应用程序。
可分为:
客户端组件:
应用程序客户端组件(applicationclients)、Applet组件
Web组件:
JSP、Servlet组件
业务逻辑组件:
EJB组件
2.JNDI命名服务与目录服务的区别及应用实例
命名服务:
将名字和对象关联,根据名字访问对象
目录服务:
把名字与对象关联的同时,也把对象与属性关联起来,不仅可以根据名字访问对象,而且可以根据属性查找对象
目录服务=命名服务+包含属性的对象
应用实例:
P15
3.JDBC的工作原理
JDBC是Java应用程序连接各种不同数据库的标准API,开发人员可以通过该API连接到各种类型的数据库管理系统,并对数据库中的数据进行操作。
用户只需编写不同的SQL语句,而不必关心数据库的实现以及不同数据库之间的差异。
通过JDBC访问数据库需要有相应数据库的JDBC驱动程序,程序员根据JDBC提供的标准接口书写SQL语句,JDBC驱动程序负责将其转化为特定的数据库操作。
JDBC提供两组接口,一组接口面向Java应用开发人员,另一组面向驱动程序编写人员。
通过JDBCAPI可以完成:
建立与数据库管理系统的连接;
想服务器提交执行的SQL语句;
处理返回的结果集。
附:
JSP访问数据库的步骤
以Mysql为例
1注册驱动
Class.forName("com.mysql.jdbc.Driver");
2连接数据库
Connectioncon=DriverManager.getConnection("jdbc:
mysql:
//localhost:
3306/test","root","123456");
3创建一个状态对象
Statementstmt=con.createStatement();
4通过状态对象执行SQL查询并获得一个数据集对象。
ResultSetrs=stmt.executeQuery("select*fromtest");
5数据处理
6关闭数据集rs.close();
7关闭状态对象stmt.close();
8关闭连接con.close();
4.RMI工作原理:
存根/骨架,marshaling/demarshaling
远程方法调用是一种基于Java的分布式编程模型,为Java程序提供远程访问服务接口。
它允许运行在一个Java虚拟机上的对象调用运行在另一台JVM上对象的方法,就像调用本地方法一样。
RMI(RemoteMethodInvoke)是一种被EJB使用的更底层的协议,正如其名字所表示的那样,RMI协议调用远程对象的方法,使用序列化方式在客户端和服务器端的对象之间传递数据。
RMI对象由远程接口及其实现类组成,其中客户机上实现远程接口的对象成为Stub(存根),服务器上实现远程接口的对象成为Skeleton(骨架)。
当客户机调用RMI方法是,相当于调用Stub,RMIStub通过编组(Marshaling)把方法调用中的参数转换成可以在网络中传输的数据格式,经远程引用层和传输层向下,以网络分组的形式传递给服务器,然后再次经传输层,向上穿过远程调用层和骨架。
RMI骨架负责拆解网络格式的数据,恢复方法调用中的参数到达服务器程序。
骨架利用方法调用,访问RMI实现累,RMI实现累进行相应的处理,并将返回值返回骨架,骨架对返回值进行编组,通过网络传输到客户机上。
存根再对收到的返回值进行分解,最后把分解后的返回值送给客户机应用。
5.JMS与方法调用的区别
Java消息服务是一个消息标准,它允许JavaEE应用程序组件生成、发送、接收和读取消息。
它能够进行分布式的、松耦合的、可靠的和异步的信息交流。
消息服务与方法调用一样,都是从发送放把消息发送到接收方,接收方对消息进行处理。
但与方法调用不同的是,消息的发送者不需要等待接受者的响应,而方法调用必须等待接受者的响应。
好处:
异步传递消息;可靠地传递消息。
松耦合。
第二部分JavaWeb开发
1.JavaWeb开发技术的几个发展阶段
1)Servlet技术阶段
页面中所有信息都需要通过输出语句生成,页面生成困难。
2)JSP技术阶段
在网页中嵌入Java代码完成网站。
缺点是I/O、处理、控制杂糅,不利于维护
3)
模型1:
JSP+JavaBean:
JSP:
主要负责输入/输出、请求接收与处理以及页面跳转控制;
JavaBean:
主要负责业务逻辑处理。
4)
模型2:
JSP+Servlet+JavaBean:
JSP:
主要负责输入/输出;
Servlet:
主要负责请求接收与处理以及页面跳转控制;
JavaBean:
主要负责业务逻辑处理。
5)
框架阶段(Web层、业务层和持久层):
轻量级框架(JavaWeb):
以Spring为核心,SSH(Struts+Spring+Hibernate)、SSI;
重量级框架(JavaEE):
以EJB技术为核心,JSF+EJB+JPA。
分布、可伸缩、安全等。
6)
可视化阶段:
如JSF等。
2.Servlet运行原理。
单实例。
服务多个客户(多个请求对象与响应对象等)
用户请求———》服务器接收请求———》创建请求/响应对象———》Servlet是否存在?
——》存在——》调用Servlet对象的service方法——》响应客户
——》不存在——》加载Servlet类——》创建Servlet对象——》调用init初始化——》调用Servlet对象的service方法——》响应客户
多个客户,为每个客户创建不同的请求/响应对象,而执行的方法是相同的,加载Servlet类,创建Servlet对象,调用init初始化都只运行一次。
3.Servlet与JSP这两者的区别与联系
JSP与Servlet比较:
两者都是基于Java的技术,所以都继承了Java的所有特性(跨平台、多线程、面向对象),都可以使用Java强大的API。
两者在JavaEE体系结构中的工作层次相同,都负责与客户端的连接。
运行时,JSP代码先被JSP容器转换为Java代码再编译为类,加载运行。
Servlets是一些运行于Web服务器端的Java小程序,是纯Java语言;而JSP是脚本,实际上是在HTML/XML页面上插入Java脚本或JSP标签的文本文档,使编写网页更简单容易。
Servlet主要用于从客户端接收请求信息,并能对客户端进行响应,而JSP主要负责将服务器端信息传送到客户端。
使用Servlet的真正意义在于:
可以将界面设计和业务逻辑设计分离。
4.JSP指令(3个)
指令元素主要用于为转换阶段提供整个JSP页面的相关信息,指令不会产生任何的输出到当前的输出流中。
指令元素的语法形式如下:
<%@directive{attr="value"}*%>
在起始符号<%@之后和结束符号%>之前,可以加空格,也可以不加,但是要注意的是,在起始符号中的<和%之间、%和@之间,以及结束符号中的%和>之间不能有任何的空格。
指令元素有三种指令:
page、include和taglib。
page指令作用于整个JSP页面,定义了许多与页面相关的属性,这些属性将被用于和JSP容器通信。
page指令的语法如下:
<%@pageattr1="value1"attr2="value2"…%>
include指令该用于在JSP页面中静态包含一个文件,该文件可以是JSP页面、HTML网页、文本文件、或一段Java代码。
使用了include指令的JSP页面在转换时,JSP容器会在其中插入所包含文件的文本或代码。
include指令的语法如下:
<%@includefile="relativeURLspec"%>
file属性的值被解释为相对于当前JSP文件的URL。
tablib指令允许页面使用定制的标签。
tablib指令的语法如下:
<%@taglib(uri="tagLibraryURI"|tagdir="tagDir")prefix="tagPrefix"%>
属性uri惟一地标识和前缀(prefix)相关的标签库描述符,可以是绝对或者相对的URI。
这个URI被用于定位标签库描述符的位置。
属性tagdir指示前缀(prefix)将被用于标识安装在/WEB-INF/tags/目录或其子目录下的标签文件。
一个隐含的标签库描述符被使用。
属性prefix定义一个prefix:
tagname形式的字符串前缀,用于区分多个自定义标签。
以jsp:
,jspx:
,java:
,javax:
,servlet:
,sun:
和sunw:
开始的前缀被保留。
前缀的命名必须遵循XML名称空间的命名约定。
在JSP2.0规范中,空前缀是非法的。
5.JSP动作(6个)
JSP2.0规范定义了一些标准的动作。
标准动作是一些标签,它们影响JSP运行时的行为和对客户端请求的响应,这些动作由JSP容器来实现。
从效果上来说,一个标准动作是嵌入到JSP页面中的一个标签。
在页面被转换为Servlet期间,当JSP容器遇到这个标签,就用预先定义的对应于该标签的Java代码来代替它。
动作元素的语法是基于XML的。
JSP2.0规范中定义了20个标准的动作元素。
param> paramname=“n1”value=“v1”> 向include、forward和plugin动作页面提供参数。 在被包含的页面中使用request.getParameter(“nm”)获取参数值。 include> includepage=“路径”[flush=“true”]> 或 includepage=“…”[flush=“true”]> param..> include> 在指定位置插入一个静态或动态文件。 与include指令不同是当被包含文件更新后,当再次执行此jsp文件时引擎会自动编译被包含文件。 @include指令是编译前包含,源代码包含 注意事项: 在这个包含文件中不要使用、、 jsp: include标记是运行时包含,运行结果包含 forward> 促使JSP引擎结束对当前页面的处理,将当前请求转至指定的页面,可是动态或静态页面。 但地址栏URL不变。 forward> forwardpage=“路径”> 或 forwardpage=“…”> param..> forward> 这个动作允许在运行时将当前的请求转发给一个静态的资源、JSP页面或者Servlet,请求被转向到的资源必须位于同JSP发送请求相同的上下文环境中。 这个动作会终止当前页面的执行,如果页面输出使用了缓冲,在转发请求之前,缓冲区将被清除;如果在转发请求之前,缓冲区已经刷新,将抛出IllegalStateException异常。 如果页面输出没有使用缓冲,而某些输出已经发送,那么试图调用 forward>动作,将导致抛出IllegalStateException异常。 useBean>、 setProperty>和 getProperty> useBean: 用来加载指定的Bean,并创建实例。 getProperty: 用来获取Bean中的参数值。 setProperty: 为Bean中的参数赋值。 6.JSP内置对象 out: 输出流,主要完成对客户端的输出 request: 请求对象,获取用户的请求信息 session: 会话对象,用于保存用户的会话信息。 response: 响应对象,获取服务器响应用户的信息 application·: 全局对象,代表整个应用。 page: 当前被执行的JSP文件的类对象。 exception: JSP运行期所产生的异常对象,只能在错误页面使用。 7.Servlet的生命周期(实例创建、初始化、服务、销毁) Servlet加载: 服务器启动时或第一次访问Servlet时,web容器加载Servlet 初始化: 调用构造方法进行实例化,然后调用init方法进行初始化 服务: 客户端请求,服务器创建两个对象: HttpServletRequest(请求信息)和HttpServletResponse(响应信息),把这两个对象作为参数调用servlet的service方法(doGet、doPost)完成对客户端请求的处理响应,方法执行完这次请求就结束,等待新的请求,然后再重新创建上面两个对象调用service方法。 删除: 系统调用destroy方法释放资源 8.Servlet的三类方法 Init方法,用于初始化; Destroy方法,用于释放资源; Service方法,对用户的请求进行处理,并对用户进行响应。 9.Servlet过滤器的作用 Filter的基本功能是对Servlet容器调用Servlet的过程进行拦截(对用户的请求信息和响应信息进行过滤),从而在Servlet进行响应处理的前后实现一些特殊的功能。 10.Servlet监听器的种类(上下文、会话、请求。 实例创建、属性改变、绑定、激活) 11.EL的即时计算与延迟计算 即使计算表达式是JSP引擎立即执行的,延迟计算表达式能够在使用表达式语言之后在计算。 即时计算 页面在第一次被调用时,JSP引擎就计算表达式并立即返回结果。 所有使用${}符号的表达式都是及时执行的。 延时计算 只能在页面生命周期以后使用自己的机制计算表达式,主要用于JSF技术框架。 延迟计算表达式的格式为: #{expr} 可以在任何使用表达式技术定义的页面生命周期的其他阶段进行计算。 12.EL的值表达式与方法表达式 值表达式或者产生一个值或者赋一个值,方法表达式引用能够被调用或者能够返回一个值的方法。 值表达式引用数据,方法表达式调用方法。 值表达式 分为rvalue和lvalue ${} 适用范围 1)在静态文本中 2)在任何能够访问表达式的标准标签或者自定义标签的属性中。 3)只使用表达式结构 4)使用一个或多个独立的表达式或者和文本混合使用 5)只使用文本 方法表达式 用于调用任意的公有方法,该方法能够返回一个结果。 方法表达式主要用于JSF技术 方法表达式只能用于标签的属性中,并且只能以下面的方式来使用 单个表达式结构 tagvalue="#{bean.method}"/> 只使用文本 tagvalue="sometext"/> 13.EL中的隐式对象 JSP隐式对象 JSP隐式对象包括一个pageContext,提供对JSP页面的上下文环境中不同对象的访问。 servletContext: JSP页面的Servlet和任何包含在同一个应用中的Web组件的上下文环境。 session: 对应客户端的session对象。 request: 请求触发JSP页面的执行。 response: JSP页面返回的响应。 参数访问隐式对象 用于访问客户端通过表单或URL提交的参数。 param: 将请求参数名称映射到单个字符串参数值表达式$(param.name)相当于request.getParameter(name)。 paramValues: 将请求参数名称映射到一个数值数组它与param隐式对象非常类似,但它检索一个字符串数组而不是单个值。 表达式${paramvalues.name)相当于request.getParamterValues(name)。 作用域隐式对象 pageScope: 将页面范围的变量名称映射到其值。 例如,EL表达式可以使用${pageScope.objectName}访问一个JSP中页面范围的对象,还可以使用${pageScope.objectName.attributeName}访问对象的属性。 requestScope: 把request范围内的变量名映射到它的值上。 sessionScope: 把session范围内的变量名映射到它的值上。 applicationScope: 把application范围内的变量名映射到它的值上。 当访问变量时没有指定作用域,如: ${nName},JSP引擎将按照page、request、session、application顺序查找,找到返回值,否则返回null 请求头访问隐式对象 header: 将请求头名称映射到单个字符串头值表达式${header.name}相当于request.getHeader(name)。 headerValues: 将请求头名称映射到一个数值数组。 表达式${headerValues.name}相当于request.getHeaderValues(name)。 cookie: 将cookie名称映射到单个cookie对象。 向服务器发出的客户端请求可以获得一个或多个cookie。 表达式${cookie.name.value}返回带有特定名称的第一个cookie值。 初始化参数访问隐式对象 初始化参数访问隐式对象initParam把上下文初始化参数的名字映射到一个值上。 所以可以设定web站点的context,如果想获取这些参数值,可以通过initParam来取得。 14.对于JSP代码编写,EL与JSTL的最主要目的 减少代码的编写,使JSP成为真正意义上的标签语言。 15.MVC中M、V、C各部分的作用 MVC设计模式 MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。 使用MVC应用程序被分成三个核心部件: 模型、视图、控制器。 它们各自处理自己的任务。 View视图是用户看到并与之交互的界面。 对老式的Web应用程序来说,视图就是由HTML元素组成的界面。 在视图中其实没有真正的处理发生,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。 Model模型表示企业数据和业务规则。 被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。 Controller控制器接受用户的输入并调用模型和视图去完成用户的需求。 控制器本身不输出任何东西和做任何处理,它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。 第四部分JSF框架 1.JSF作为MVC结构,M、V、C分别对应JSF组成部分 M: 模型 V: JSF页面 C: FacesServlet(前端控制器) 2.JSF请求生命周期的6个阶段 重建视图阶段(restoreview) 应用求值阶段(applyrequestvalues) 处理验证阶段(processvalidations) 更新模型值阶段(updatemodelvalues) 调用应用阶段(invokeapplication) 呈现响应阶段(renderresponse) 3.JSF转换器的作用 协助模型与视图之间的数据转换。 完成HTTP字符串<———>Java对象 4.JSF验证器的作用 对用户输入的数据进行验证,验证失败时可以提示错误消息。 5.JSF事件监听器的作用 JSF用事件触发的方式来建立视图与控制器指尖的交互,当产生时间时系统会调用相应的处理代码。 6.JSF框架中JSF组件类、JSF组件标签、受管bean之间的关系 JSF组件类的方法的功能是通过标签绑定来实现的 辅助bean类定义一组UI组件属性,可能还有供组件执行功能的一组方法 辅助bean执行的常见功能: 验证组件数据,处理组建触发的是啊今,执行处理过程以决定应用接下来要转向哪一个页面 JSF通过将托管Bean(Manage-Bean,又称为GlueBeab或BackingBean)的属性、方法绑定到页面组件的属性或action属性,来达到逻辑层与表现层分离的目的 7.JSF组件的两个功能: 编码和解码 编码: 把JSFUI组间的当前值转换成对应标签的过程 解码: 把传递过来的请求参数转换成JSFUI组件的过程 8.JSF配置文件faces-config.xml的主要作用 使用固定格式来注册和配置对象,并定义导航规则。 第五部分EJB 1.企业级应用的最大特点,以及EJB与Spring作为业务层解决方案的最大区别 JavaBean是供本地客户端访问的,而企业级的JavaBean除了可以供本地客户端反问,还可以供远程客户端访问。 2.EJB本地访问与远程访问的本质区别 访问者和被访问者是否在同一虚拟机内。 3.EJB(不包括MDB)的运行原理(基于RMI) 4.会话bean分为有状态会话bean和无状态会话bean。 状态的含义。 客户的多次调用之间,会话bean是否保存客户端的状态,如果保存则为有状态,如果不保存则为无状态。 会话Bean 消息驱动Bean 直接访问会话Bean的业务方法 客户端通过消息与消息驱动Bean交互 会话Bean需要绑定到JNDI树上 不需要绑定到JNDI树,但是队列或者主题需要绑定在JNDI树上。 需要提供接口文件 必须配置消息的目的 分为有状态会话Bean和无状态会话Bean 无状态的 可以定义各种业务方法 通过onMessage方法接收并处理消息 需要实现业务接口 需要实现MessageListener接口 客户端采用同步的方法调用 客户端采用异步方式进行交互 5.会话bean与MDB的最大区别 6.状态会话bean和无状态会话bean各自生命周期及最大区别 7.MDB作为消息消费者,实现MessageListener接口 一个MDB通常要实现MessageListener接口,该接口定义了onMessage()方法。 Bean通过它来处理收到的JMS消息。 当容器检测到bean守候的目标地址有消息到达时,容器调用onMessage()方法,将消息作为参数传入MDB。 MDB在onMessage()中决定如何处理该消息。 publicclassPrintBeanimplementsMessageListener{ publicvoidonMessage(Messagemsg){ try{ TextMessagetmsg=(TextMessage)msg; Stringcontent=tmsg.getText(); System.out.println(content); } catch(Excepti
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JavaEE 复习 知识点 答案