南京工业大学WebService的应用与开发试题(A)卷班级学号姓名
一、判断题(正确的打勾,错误的打叉,每题2分)
1.SOAP(Simple Object Access Protocol)协议是一个基于Xml的协议。它描述了数据类型的消
息格式以及一整套串行化规则,包括结构化类型和数组。(o)
2.客户端与Xml Web服务进行异步通信,向服务端发出服务请求的方法与接收web服务返回
的结构在同一线程中(e)
3.基于消息的体系的分布式应用中,可以使用异步消息处理也可以使用同步消息处理(o)
4.Web服务中使用SOAP表示数据的优点是SOAP提供了一种所有平台都支持的中间表示方
式,客户端只要将SOAP类型转换为自身平台可以理解的类型即可(o)
5.分布式应用程序节点越多,单点失败的可能性越大,整个系统发生故障的可能性越大(o)
6.Apache CXF为java WebService的一个框架,可以用它提供的命令行工具wsdl2java生成客
户端的代理类(o)
7.Xml DTD提供了一种避免元素名冲突的方法(e)
8.所有Xml文件只有一个根元素且不分大小写(e)
9.每个Xml文档分为两个部分:序言和文档元素。(o)
10.
11.XML Web服务的交互可以使用Internet协议中所有的协议( e )
12.对于Web服务的请求可以穿越防火墙( o )
13.ajax可以跨域访问Web服务( o )
14.
15.
二、选择题(单、多项选择,每题2分)
1.Web Service需要以下哪些技术、协议的支持(ABCD )
A.HTTP
B.SOAP
C.XML
D. T CP/IP
2.下列选项中,哪个是XML合法的元素名(A )
A.TOM
B.18
C.[abc]
D.#name
3.下面关于Schema的描述,错误的是(C )
A.xml schema 的语法完全遵循xml的语法规范
B.xml schema 内容模式是开放的,可以随意扩充
C.xml schema不支持综合命名空间
D.xml schema 支持属性组
4.下述关于DOM描述,错误的是(C )
A.在DOM中,一般将XML的逻辑结构描述成树
B.DOM提供的对象和方法可以是任何编程语言
C.DOM不需要将XML整个文件读入内存
D.SAX是基于事件的,适合处理大型XML文件
5.下述关于JAXP的描述,错误的是( B )
A.JAXP是(java API for xml parsing)java处理xml类库
B.JAXP重新定义SAX和DOM的类库
C.JAXP定义了三个包:https://www.doczj.com/doc/3218659496.html,,org.xml.sax;javax.xml.parsers
D.JAXP基于w3c的规范创建,JAXP支持SAX、DOM和XSLT
6.Web Service应用程序具备哪些特征(ABCD)
A.封装性
B.松散耦合
C.使用标准协议
D.高度可集成
7.Web Service应用的优势体现在下列哪些场景(ABCD )
A.跨防火墙应用
B.应该程序集成
C.B2B集成
D.数据重用
8.Web Service系统结构基于哪三种逻辑角色(ABC )
A.服务提供者
B.服务注册中心
C.服务请求者
D.消息
9.关于SOAP消息结构的描述,错误的是(B )
A.Envelope元素,必选把此xml标识为一条SOAP消息
B.Header元素,必选,包含头信息
C.Body元素,必选包含所有调用和响应的信息
D.Fault元素,可选提供有关处理此消息所发生错误的信息
10.下列哪些是SOAP支持应用模式?(ABCD )
A.请求/响应模式
B.多消息异步响应模式
C.单向模式
D.事件通知模式
11.SOAP消息可包含如下元素:Envelope,Header,Body,Fault,attachment。其中必须出现的是( A )
A.Envelope,Body
B.Envelope,Header,Body
C.Envelope,Header,Body,attachment
D.Envelope,Header,Body,attachment,Fault
12.下面是WSDL文档结构的关键要素是:( ABC )
A.
B.
C.
D.
13.要注册xml web服务以供他人使用,需要注册的关键项是( A )
A.业务、服务以及webmethod
B.企业联系人和服务
C.xml web服务的url地址
D.以上说法都不对
14.关于MD5摘要算法的描述哪个是错误的( C )
A.MD5碰撞发生几率极小
B.MD5一般用于验证消息在传送过程是否篡改或密码是否正确
C.MD5码是可逆的
D.加密后的MD5为16个字节内容
15.请将下列过程使用Web Service的顺序排序( BADC )
A.生成代理类
B.找到WSDL文件
C.调用WebMethod
D.调用接口
三、简答题(每题4分)
1. SOAP消息可包含哪些元素,哪些元素是必须出现的?
必需的Envelope 元素,可把此XML 文档标识为一条SOAP 消息
可选的Header 元素,包含头部信息
必需的Body 元素,包含所有的调用和响应信息
可选的Fault 元素,提供有关在处理此消息所发生错误的信息
2.简要描述Web Services的主要技术SOAP和WSDL的作用?
SOAP(Simple Object Access Protocol,简单对象访问协议),是一种基于XML的轻量级消息交换协议。利用SOAP可以在两个或多个对等实体之间进行信息交换,并可以使这些实体在分散的分布式应用程序环境中相互通信。与XML一样,SOAP也独立于语言、运行平台或设备。
WSDL(Web Services Description Language,Web Services描述语言)标准是一种XML格式,用于描述网络服务及其访问信息。它用于定义Web Services以及如何调用它们(描述Web 服务的属性,例如它做什么,位于哪里和怎样调用它等)。
3.简述DOM、SAX、JDOM三种XML解析技术的特点。
DOM:
优点:①.易于使用
②.丰富的ASI集合,可用于轻松的导航
③.整棵树加载到内存,允许对XML文档进行随机访问
缺点:①.整个XML文档必须一次解析完
②.将整棵树加载到内存中成本比较高
③.一般的DOM节点对于必须为所有节点创建对象的对象类型绑定不太理想
适用场合:适用于需要修改XML文档的应用程序或XSLT应用程序(不可用于只读XML 的应用程序)
SAX:
优点:①.无需将整个文档加载到内存,所以内存消耗少
②.推模型允许注册多个ContentHandler
缺点:①.没有内置的文档导航支持
②.不能够随机访问XML文档
③.不支持在原地修改XML
④.不支持名字空间作用域
适用场合:适用于只从XML文档读取数据的应用程序(不可用于操作或修改XML文档)
JDOM:
优点:①.基于树的处理XML的Java API,把树加载在内存中
②.没有向下兼容的限制,因此比DOM简单
③.速度快,缺陷少
④.具有SAX的Java规则
缺点:①.不能处理大于内存的文档
②.DOM表示XML文档逻辑模型,不能保证每个字节真正变换
③.针对实例文档不提供DTD与模式的任何实际模型
④.不支持与DOM中相应遍历包
适用场合:适用于既具有树的遍历,也有SAX的Java规则,在需要平衡时使用
4. XML模式中定义复合类型时,可使用sequence、group、choice、all元素,请简述它们的区别。
区别是:
sequence:指定组中的子元素按照一定顺序出现。
group:用通用名组合成组。
choice:只能使用组中的子元素之一。
all:组中的子元素在父元素内可以按照任意顺序出现。
5.简述客户端调用web service的过程。
1.通过jdk自带的wsimport命令生成客户端代码
2.调用接口
3.调用WebServiceMethod.
四、程序题(20分)
编写一个客户/服务程序,用以实现如下功能:客户机向服务器发送10个整数,服务器计算这10个数字的平均值,然后将平均值回送给客户端.
服务端
public class Server {
public void setup(int port) throws Exception{
ServerSocket ss = new ServerSocket(port);
Socket client = ss.accept();
BufferedReader br= new BufferedReader(
new InputStreamReader(client.getInputStream()));
BufferedWriter bw= new BufferedWriter(
new OutputStreamWriter(client.getOutputStream()));
String num="";
double sum=0;
for(int i=0;i<10;i++){
num= br.readLine();
sum +=Double.parseDouble(num);
}
bw.write(sum/10+"");
bw.flush();
br.close();
bw.close();
}
public static void main(String[] args) throws Exception {
Server ss= new Server();
ss.setup(8080);
}
}
客户端
public class Client {
/**
* @param args
* @throws IOException
* @throws UnknownHostException
*/
public static void main(String[] args) throws UnknownHostException, IOException {
Socket client = new Socket("localhost",8080);
BufferedReader br= new BufferedReader(
new InputStreamReader(client.getInputStream()));
BufferedWriter bw= new BufferedWriter(
new OutputStreamWriter(client.getOutputStream()));
double d1=10;
double d2=10;
double d3=10;
double d4=10;
double d5=10;
double d6=100;
double d7=100;
double d8=100;
double d9=100;
double d10=100;
bw.write(d1+"");bw.newLine();
bw.write(d2+"");bw.newLine();
bw.write(d3+"");bw.newLine();
bw.write(d4+"");bw.newLine();
bw.write(d5+"");bw.newLine();
bw.write(d6+"");bw.newLine();
bw.write(d7+"");bw.newLine();
bw.write(d8+"");bw.newLine();
bw.write(d9+"");bw.newLine();
bw.write(d10+"");bw.newLine();
bw.flush();
String avg = br.readLine();
System.out.println("平均数为"+avg);
bw.close();
br.close();
}
}