复习1

更新时间:2024-01-14 15:53:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

SN2_MT2_复习大纲

1.时间安排表:

星期二 全天:JDBC、JavaBean 下午:RMI

星期三 上午:复习课, 下午:Servlet和JSP 星期四 上午:EJB、SDLC, 下午:复习课 2.复习要点:

1)课后小结、程序构架、稍等一下… 2)以概念、程序阅读为主。

一、JDBC

注意:

1、区分Statement、PreparedStatement和CallableStatement三个对象之间的差别 1)Statement对象允许你执行简单查询。

executeQuery()方法执行简单的选择查询,并返回ResultSet对象。

executeUpdate()方法执行SQL INSERT, UPDATE, 或DELETE语句,返回int值。 2)PreparedStatement对象允许你执行参数化查询。 3)使用CallableStatement类调用存储过程

【稍等一下?】(参见JDBC的P1.8)

小学行政主管需要访问数据库显示2000年6月之后进入学校的教师名字。试为以下工作编写相关的JDBC代码:

1. 装载JDBC-ODBC桥接器,建立连接 2. 相应的查询语句

(提示:表名为Teachers,字段名为TeacherName。)

参考答案:

Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); String url = “jdbc:odbc:MyDataSource”;

Connection con = DriverManager.getConnection(url, “sa”, “”); Statement stat = con.createStatement();

stat.executeQuery(“select TeacherName from Teachers”);

【例1】对于从Employee表中选择记录的以下代码片段,识别其遗漏的代码行。

Connection con = null;

Class.forName(\

con = DriverManager.getConnection(\ResultSet rs = stat.executeQuery(\select * from Employee\

1) PreparedStatement stat = con.createStatement(); 2) Statement stat = createStatement();

3) PreparedStatement stat = createPreparedStatement(); 4) Statement stat = con.createStatement();

【例2】在jdbc中,那个类可以执行一个存储过程?(3) 1) PreparedStatement 2) Statement

3) CallableStatement 4) Connection

____________________________________________________________________________________________________________________ ?NIIT Page 1 of 7

二、JavaBean

注意:

1、bean类文件必须符合以下规范: 1) 不能有任何main函数

2) 构造函数必须始终是ZERO参数的构造函数 同时必须包含accessor(get)和mutator(set)方法

2、JavaBean开发的三个阶段(构造阶段、内建阶段与执行阶段)。 创建/构造JavaBean的步骤如下: 1)创建.class文件

2)创建一个显式文件(Manifest file,扩展名.mft)

3)创建.jar文件。(创建JavaBean主要用来跨几个应用,JavaBean作为.jar文件被打包和分发。)

3、JavaBean包含三个基本元素:属性、方法与事件。

1)属性为bean的特征类似于类的数据成员,由于属性变动你可改变bean的外观与行为。 2)用get与set方法把bean属性暴露给外部应用。

3)方法为包含在JavaBean的公共成员函数。方法用来操纵和暴露Bean的功能。 4)Bean使用事件来对其属性值变动或对其它Beans状态的变动进行通信。

【稍等一下?】(参见JavaBeans的P2.8) 回答下列问题:

1.Juggler bean是____ 类型bean的一个实例。 2.BDK的哪个窗口改变bean的背景颜色? 3.用BDK的哪个窗口构造bean应用程序? 参考答案: Control

Properties窗口 BeanBox窗口

【例1】BDK 的以下窗口中哪一个允许你设置“Our Button” bean 的选项? 1) ToolBox window 2) BeanBox window 3) Properties window 4) Method Tracer window

【例2】BDK使用的以下文件中哪一个标识构成JavaBean 的类文件? 1) JAR 文件 2) Manifest 文件 3) Properties 文件 4) Bundle 文件

【例3】JavaBean作为_________文件分发。 1) .java 2) .class 3) .mft 4) .jar

____________________________________________________________________________________________________________________ ?NIIT Page 2 of 7

【例4】开发者编写带属性的bean类,以表示动画的协调。为允许目标应用访问和改变此属性,开发者必须编写什么方法? 1) getTags() 方法. 2) setTags()方法

3) accessor 和mutator 方法.

4) getAsText() 方法和 setAsText()方法.

【例5】关于 JavaBean的以下陈述中哪个为真?(4) 1) 你可在目标平台上修改JavaBean 的源代码。 2) 你可在目标平台上重编译bean 的 jar文件。

3) 执行嵌入在Forte for Java 的bean 的jar 文件所得到的输出与IBM Visual Age IDE的输出是一样的。

4) 你可在目标应用中修改JavaBean 的视感。

4、如何使用事件委派模型来创建bean事件?(例3.D.1)

【例6】用以下方法中哪一个把目标应用作为bean 激活的定制事件的监听者(listener)注册? 1) void addPropertyChangeListener() 2) void addXXXListener() 3) void firePropertyChange() 4) removeXXXListener()

5、识别不同的属性类型(下标的、约束和及抑制的)

1)约束属性在值变动时通知其它bean(用PropertyChangeSupport类实现约束属性)。 2)抑制属性类似于约束属性,但其它beans可以停止改变beans的抑制属性。 (用VetoableChangeSupport类抑制属性)

【例7】考察以下关于bound和 constrained 属性的陈述。 陈述A: Bound 属性是可通知其值变动的bean 的属性。

陈述B: Constrained属性是可被另一个bean改变的未约束属性。 以下陈述中哪个为真?(A:t,B:f)

【例8】以下方法中哪一个把被约束属性的值中的变化通知给所有的listener beans ? 1) void addPropertyChangeListener() 2) PropertyChangeSupport() 3) void firePropertyChange()

4) removePropertyChangeListener()

6、用属性编辑器设置bean属性

【例9】为表示描绘动画的文件列表,开发者正在编写一个带索引属性的bean 类。开发者允许用户用文本编辑器来读入和改变其属性。应做什么呢? 1) 应重设getAsText()方法。

2) 应重设getAsText() 和setAsText()方法。 3) 应编写accessor 和 mutator方法。 4) 应重设setTags() 和 getTags()方法。

7、用反省访问bean属性(例4.D.2:使用Introspector类与BeanInfo接口)

____________________________________________________________________________________________________________________ ?NIIT Page 3 of 7

三、RMI(重点之一)

注意:

1、使用RMI开发分布式应用程序 1)何谓分布式应用

表示逻辑、业务逻辑及数据库驻留在多台计算机上的应用称为分布式应用。 2)远程方法调用(RMI)

RMI是一种规格说明,能使一台Java虚拟机(JVM)调用位于另一台Java虚拟机(JVM)上的对象的方法。RMI是在三层构架的中间层上实现的。

(由于RMI是基于JVM,所以RMI 服务器可跨不同平台地连接到客户。) 3)分布RMI应用中的构件(参见RMI的P1.3) RMI服务器、RMI客户

RMI服务器包含要远程调用的方法。服务器创建几个远程对象,并在RMI注册表中产生这些对象的引用。

RMI注册是一种在RMI服务器上运行的服务,帮助其它宿主机上对象远程地访问它已注册的对象。将远程对象注册到RMI注册表的代码为:

Naming.rebind(“rmi://ipAddress:1234/AccountServer”)

【稍等一下…】

Heinemann出版社经过多年的发展,已在全球建立起多家分支机构。该公司负责信息管理系统的主管决定筹建网站以推动本公司出版物的在线销售。除此之外,公司还需要建立适当的表示逻辑、业务逻辑和数据库,从而能共享全球信息资源。识别并具体指出能整合该公司所需的应用体系结构。 参考答案:

Heinemann出版社需要使用分布式体系结构来整合它的所有需求。

使用分布式体系结构,使表示逻辑、业务逻辑和数据库服务器可分别部署在三台不同的主机上,从而使得应用软件的开发、部署和维护都更容易。这种体系结构还可以减轻数据库服务器负载,提高访问数据库的效率。

【稍等一下…】

解释RMI注册表的功能。 参考答案:

RMI注册表是运行在RMI服务器上的服务。服务器创建的每个远程对象都以唯一的对象名登录在注册表上。客户通过查找对象名来得到RMI注册表的一个或多个远程对象的引用。

【例1】哪种应用类型在分离的层次上处理表示逻辑、业务逻辑、及数据库的可交互性? 1) 分布式应用。

2) 以服务器为中心的应用 3) 单块应用

4) 客户/服务器应用

2、RMI构架由三层组成:Stub/Skeleton层、远程引用层及传输层(参见RMI的P1.4图) 【稍等一下…】

Stub和Skeleton在RMI体系构架中角色是什么? 参考答案:

Stub是代表远程对象的客户端代理。它通过运行在客户端上程序,象其他本地对象一样被引用,并提供远程对象的方法。

Skeleton是与stub通信的服务器端代理,通过读取方法调用的参数、调用实现远程服务实现对象、接受返回值并将它返回给Stub。

____________________________________________________________________________________________________________________ ?NIIT Page 4 of 7

【例2】在哪一层上监听客户所作的远程方法调用,并重定向服务器上的远程RMI服务的调用? 1) Stub/Skeleton 层。

2) 远程引用层(Remote Reference Layer,RRL) 3) 传输层(Transport Layer,TL) 4) Application层

【例3】考察以下陈述:

陈述 A: RMI中, 存根( stub)是表示远程对象的客户端的代理。.

陈述B: RMI系统结构中,传输层负责建立新的连接和管理现有的连接。

关于这些陈述,以下中哪个为TRUE ?(A:t,B:t)

【例4】考察以下二个陈述:

陈述A: Stub 是表示远程对象的客户端代理。

陈述 B: 解包(Unmarshalling )是一种过程,即把由客户端RRL传递过来的被组包的参数

通过服务器端的RRL 转换为骨架(skeleton )可理解的格式的过程。

关于这些陈述,以下中哪个为真?(A:t,B:t)

3、开发RMI应用的步骤(参见RMI的P1.5)

1)定义远程接口(远程接口类)―― 远程接口声明了可让客户远程调用的方法。 远程接口必须声明为public。

远程接口扩展了java.rmi.Remote接口。

其方法须在其throws子句中声明java.rmi.RemoteException,以捕获网络连接与服务器问题。

2)在服务器中定义和实现远程方法(服务器类,参见RMI的P1.8)

3)定义与实现客户(客户类)

得到关于远程对象实现的引用(使用Naming类的lookup()方法)。 调用远程方法。

4)用rmic编译器生成Stub与Skeleton类。

Java的RMI方法使用Stub与Skeleton进行客户/服务器通信。

5)创建安全策略

启动“Policy Tool”实用程序 给予所需的许可

保存策略文件(C:\\Documents and Settings\\HNhn\\.java.policy)

6)启动RMI远程注册表

启动默认端口为1099的注册表:start rmiregistry 启动不同端口处RMI注册表:start rmiregistry 1234 如果注册表在非默认端口处运行:

必须在Naming类的rebind()与lookup()方法中规定URL串中指出端口号。

7)启动服务器

8)启动客户

____________________________________________________________________________________________________________________ ?NIIT Page 5 of 7

【例5】考察以下server类:-- server类的代码: import java.rmi.*;

import java.rmi.server.UnicastRemoteObject; import java.sql.*; import java.util.*;

public class ConvertionServerImpl extends UnicastRemoteObject implements ConvertionServer {

public ConvertionServerImpl() throws RemoteException {

super(); }

public int convert(int amount) throws RemoteException {

return amount*40; }

public static void main(String args[]) {

System.setSecurityManager(new RMISecurityManager()); try {

ConvertionServerImpl instance = new ConvertionServerImpl(); Naming.rebind(\System.out.println(\}

catch(Exception e) {

System.err.println(e); } } }

以下中哪个是远程接口的正确代码? 1) import java.rmi.*;

import java.util.*;

public interface ConvertionServer extends Remote {

int convert(int amount) throws RemoteException; }

2) import java.util.*;

public interface ConvertionServer extends Remote {

int convert(String amount) throws RemoteException; }

3) import java.rmi.*;

import java.util.*;

public interface ConvertionServer extends Remote {

convert(String amount) throws RemoteException; }

4) import java.rmi.*;

import java.util.*;

public interface ConvertionServer extends Remote {

int convert(String amount) throws RemoteException; }

____________________________________________________________________________________________________________________ ?NIIT Page 6 of 7

【例6】考察以下代码片段:

import java.rmi.*;

public interface HelloServer extends Remote {

String DisplayHello(); }

此文件能否成功地编译?

1) 此文件将不编译,由于方法DisplayHello()不引发RemoteException。 2) 在编译时,将出现异常“ClassNotFoundException”。

3) 此文件将不编译,由于方法只有声明,没有在类中定义。 4) 此文件将成功地编译。

【例7】考察以下陈述:

陈述 A: RMI中,远程接口扩展了java.rmi.Remote 接口。 陈述 B: RMI 服务器可跨不同平台地连接到客户。

关于这些陈述,以下哪个为真?(A:t,B:t)

【例8】使用哪条命令来生成 Stub和Skeleton类? 1) javac 2) java 3) rmic 4) rmi

【例9】用以下命令启动RMI注册表:

rmiregistry 1234

当应用启动时,没有执行任何RMI应用。可能的原因是什么? 1) 此命令应启动rmiregistry 1234 2) 此命令应处理远程异常

3) 应检查 rebind() 和 lookup()方法。

4) 其端口1234可能被某个其他的服务器使用。

【例9】RMI注册表正运行在非缺省端口的某个端口上。为执行RMI 应用应做什么事? 1) 改变端口将不会对应用产生任何影响。 2) 对于新的端口应给出rmiregistry命令。 3) 应改变rebind() 和 lookup()方法。

4) RMI 注册表不可使用任何非缺省的端口。

____________________________________________________________________________________________________________________ ?NIIT Page 7 of 7

本文来源:https://www.bwwdw.com/article/tvmo.html

Top