java语言程序设计_郑莉_第11章

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第十一章Servlet程序设计郑莉JAVA语言程序设计2目录11.1Java网络程序设计的基本概念11.2Servlet基础11.3Servlet的生命周期11.4与客户端交互11.5客户端跟踪11.6协作与通讯11.7程序举例11.8本章小结311.1Java网络程序设计的基本概念网络将世界联系在一起,使世界变得更加丰富多彩。同时网络互连是一个内容丰富而复杂的主题,所以这方面的程序设计涉及面很广且不易掌握与其他语言相比,Java语言在网络应用程序方面具有一定的优势。Java提供了很多内置的网络功能,使得基于Internet和Web的应用开发变得更加容易411.1.1协议所有使用或实现某种Internet服务的程序都必须遵从一个或多个网络协议,这种协议很多,而IP、TCP、UDP是最为根本的三种协议,是所有其它协议的基础–IP(InternetProtocol,Internet协议)是最底层的协议定义了数据按照数据报(Datagram,一种自带寻址信息的、独立地从数据源走到终点的数据包)传输的格式和规则–TCP(TransportControlProtocol,传输控制协议)建立在IP之上,定义了网络上程序到程序的数据传输格式和规则,提供了IP数据包的传输确认、丢失数据包的重新请求、将收到的数据包按照它们的发送次序重新装配的机制是面向连接的协议,在开始数据传输之前,必须先建立明确的连接–UDP(UserDatagramProtocol,用户数据报协议)与TCP相似,比TCP具有更好的传输效率。不可靠的,不保证数据的传输,也不提供重新排列次序或重新请求功能,是一种无连接协议Java网络程序设计的基本概念5HTTP协议(HyperTextTransferProtocol)–是Internet众多协议中的一种,表示超文本传输协议,它构成了的基础–具有简单快速、灵活、无状态、无连接等特点–基于请求(Request)/响应(Response)模式。其工作过程如下首先客户端与服务器建立连接然后客户端发送一个请求给服务器服务器接到请求后,给予相应的响应信息;最后关闭连接,完成一次操作11.1.1协议(续)——HTTP协议Java网络程序设计的基本概念6客户端发送给服务器的请求–有很多类型,被称为方法,其中最常用的是GET、POST–GET方法用来从服务器读取信息,比如从服务器读取文件、表格、数据库查询结果等–POST方法用来向服务器传送信息,比如把信用卡号、表格、存储于数据库的数据等传送到服务器–HEAD方法用来读取服务器响应头(ResponseHead);得到诸如文件大小,文件最后修改时间,服务器类型等信息–PUT方法将文件直接传到服务器–DELETE方法将文件直接从服务器删除–TRACE方法用来协助程序调试–OPTIONS方法用来查询服务器所支持的方法11.1.1协议(续)——HTTP协议中客户端发送给服务器的请求Java网络程序设计的基本概念711.1.2关于URIURI(UniformResourceIdentifier,统一资源标志符)–HTTP协议用URI标识定位网络上的数据–如果知道了公布在网络上的某个HTML文件的URI,不管文件位于什么地方,都可以通过HTTP访问该文档–通常所说的URL是URI的一种Java网络程序设计的基本概念8URL类–Java语言提供了URL类让我们能在源代码层使用URL–有六个构造函数,其中最简单的是URL(Stringurl)。每个URL对象都封装了资源的标识符和协议处理程序,可以调用URL的方法来提取URL的组件–把URL对象作为AppletContext接口的showDocument方法的参数,就可以使执行applet的浏览器显示URL所指定的资源11.1.2关于URI(续)——URL类Java网络程序设计的基本概念9applet浏览指定URL举例:ShowDocument.javaimportjava.net.*;importjava.util.*;importjava.awt.*;importjava.awt.event.*;importjava.applet.AppletContext;importjavax.swing.*;importjavax.swing.event.*;publicclassShowDocumentextendsJApplet{publicvoidinit(){JButtongoButton=newJButton(Linkto);ContainermyContainer=getContentPane();myContainer.add(newJLabel(LinktoSOHU),BorderLayout.NORTH);myContainer.add(goButton,BorderLayout.SOUTH);goButton.addActionListener(newButtonListener());}11.1.2关于URI(续)——例11_1Java网络程序设计的基本概念10classButtonListenerimplementsActionListener{publicvoidactionPerformed(ActionEvente){try{URLnewDocument=newURL();AppletContextbrowser=getAppletContext();browser.showDocument(newDocument);}catch(ExceptionURLException){}}}}11.1.2关于URI(续)——例11_1Java网络程序设计的基本概念1111.1.3基于套接字的有连接通信基于套接字(socket)的有连接通信–使用TCP协议–一个socket必须在发送数据之前与目的地的socket取得连接–一旦连接建立了,sockets就可以使用一个流接口完成打开-读-写-关闭,所有的发送的信息都会在另一端以同样的顺序被接收–面向连接的操作比无连接的操作效率低,但是数据的安全性高Java网络程序设计的基本概念12用Java建立简单的服务器程序需要五个步骤–Step1:创建ServerSocket对象ServerSocketmyServer=newServerSocket(intport,intbacklog);Port指定一个可用的端口号,用来定位服务器上的服务器应用程序backlog指定能够连接到服务器的最多客户数。连接客户达到由backlog指定的最大客户数量时,服务器将拒绝客户连接–Step2:通过ServerSocket的accept方法监听客户连接,服务器无限期的监听客户连接Socketconnection=myServer.accept();有一个客户连接时,将产生并返回一个socket11.1.3基于套接字的有连接通信(续)——服务器端Java网络程序设计的基本概念13–Step3:通过Socket的方法getInputStream和getOutputStream获取InputStream和OutputStream对象;通常将其他流类型和它们联系起来,如:ObjectInputStreaminput=newObjectInputStream(connection.getInputStream());ObjectOutputStreamoutput=newObjectOutputStream(connection.getOutputStream());–Step4:客户和服务器通过OutputStream和InputStream对象进行通信–Step5:通信传输完毕,服务器通过调用流和套接字的close方法关闭连接11.1.3基于套接字的有连接通信(续)——服务器端Java网络程序设计的基本概念14在客户端建立简单连接的思路类似,可分为四步–Step1:建立一个Socket,实现与服务器的连接Socketconnection=newSocket(InetAddressaddress,intport);address:服务器IP地址。port:端口号连接成功,将返回一个Socket,否则产生异常–Step2:通过getInputStream和getOutputStream分别获取Socket的InputStream和OutputStream的引用。同样,也可以将其他流类型与InputStream和OutputStream联系起来–Step3:客户与服务器通过InputStream和OutputStream进行通信–Step4:传输完毕后,通过调用流和套接字的close方法关闭连接11.1.3基于套接字的有连接通信(续)——客户端Java网络程序设计的基本概念1511.4数据报通信数据报通信(DatagramCommunication)–使用用户数据报协议(UserDatagramProtocol,UDP)与TCP不同的一种协议不能保证数据会被成功地送达,也不保证数据抵达的次序与送出的次序相同,所以也被称为“不可靠的通信协议”,虽然可靠性不高,但是它的速度很快,所以有些场合也有很大的用处–服务器通过DatagramSocket接收或发送信息,这些信息以DatagramPackets的形式存在DatagramSocketmySocket=newDatagramSocket(intport);port表示端口,上述语句将服务器绑定到一个可以从客户端接收packet的端口上,如果绑定失败,将产生SocketException异常Java网络程序设计的基本概念16客户端应用程序的工作流程–Step1:通过创建一个DatagramSocket对象来建立数据报通讯的Socket。有如下两种构造方法publicDatagramSocket()构造一个数据报socket,并使其与本地主机任一可用的端口连接。若打不开socket则抛出SocketException异常。publicDatagramSocket(intport)构造一个数据报socket,并使其与本地主机指定的端口连接。若打不开socket或socket无法与指定的端口连接则抛出SocketException异常11.1.4数据报通信(续)——客户端Java网络程序设计的基本概念17–Step2:用DatagramPacket类来创建一个数据报包,用来实现无连接的包传送服务DatagramPacket对象封装了数据报包的数据(bufferedarray[],包长度(length),目标地址(address),目标端口(port);length必须小于等于bufferedarry.lengthDatagramPacket(bytebufferedarray[],intlength,InetAddressaddress,intport)DatagramPacket类提供了四个方法来获取信息–publicbyte[]getData()返回一个字节数组,包含收到或要发送的数据报中的数据–publicintgetLength()返回发送或接收到的数据的长度–publicInetAddressgetAddress()返回一个发送或接收此数据报包文的机器的IP地址–publicintgetPort()返回发送或接收数据报的远程主机的端口号11.1.4数据报通信(续)——客户端Java网络程序设计的基本概念18–Step3:调用DatagramSocket对象的send(DatagramPacketp)方法发送数据报文包–Step4:调用DatagramSocket对象的receive(DatagramPacketp)方法接收从服务器返回的结果数据报文包该DatagramPacket对象用到另一种构造方法,只

1 / 92
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功