Java语言程序设计-Servlet程序设计解析课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Java语言程序设计-Servlet程序设计解析课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 语言程序设计 Servlet 程序设计 解析 课件
- 资源描述:
-
1、1第十一章第十一章 Servlet程序设计程序设计JAVA语言程序设计2目录目录l11.1 Java网络程序设计的基本概念网络程序设计的基本概念l11.2 Servlet基础基础l11.3 Servlet的生命周期的生命周期l11.4 与客户端交互与客户端交互l11.5 客户端跟踪客户端跟踪l11.6 协作与通讯协作与通讯l11.7 程序举例程序举例l11.8 本章小结本章小结311.1 Java网络程序设计的基本概念网络程序设计的基本概念l网络将世界联系在一起,使世界变得更加网络将世界联系在一起,使世界变得更加丰富多彩。同时网络互连是一个内容丰富丰富多彩。同时网络互连是一个内容丰富而复杂的主
2、题,所以这方面的程序设计涉而复杂的主题,所以这方面的程序设计涉及面很广且不易掌握及面很广且不易掌握l与其他语言相比,与其他语言相比,Java语言在网络应用程语言在网络应用程序方面具有一定的优势。序方面具有一定的优势。Java提供了很多提供了很多内置的网络功能,使得基于内置的网络功能,使得基于Internet和和Web的应用开发变得更加容易的应用开发变得更加容易411.1.1 协议协议l所有使用或实现某种所有使用或实现某种Internet服务的程序都必须遵从一个或服务的程序都必须遵从一个或多个网络协议,这种协议很多,而多个网络协议,这种协议很多,而IP、TCP、UDP是最为根是最为根本的三种协议
3、,是所有其它协议的基础本的三种协议,是所有其它协议的基础 IP(Internet Protocol,Internet协议)l是最底层的协议l定义了数据按照数据报(Datagram,一种自带寻址信息的、独立地从数据源走到终点的数据包)传输的格式和规则 TCP(Transport Control Protocol,传输控制协议)l建立在IP之上,定义了网络上程序到程序的数据传输格式和规则,提供了IP数据包的传输确认、丢失数据包的重新请求、将收到的数据包按照它们的发送次序重新装配的机制l是面向连接的协议,在开始数据传输之前,必须先建立明确的连接 UDP(User Datagram Protocol,
4、用户数据报协议)l与TCP相似,比TCP具有更好的传输效率。l不可靠的,不保证数据的传输,也不提供重新排列次序或重新请求功能,是一种无连接协议Java网络程序设计的基本概念5lHTTP协议(协议(HyperText Transfer Protocol)是Internet众多协议中的一种,表示超文本传输协议,它构成了WWW的基础 具有简单快速、灵活、无状态、无连接等特点 基于请求(Request)/响应(Response)模式。其工作过程如下l首先客户端与服务器建立连接l然后客户端发送一个请求给服务器l服务器接到请求后,给予相应的响应信息;最后关闭连接,完成一次操作11.1.1 协议协议(续续)
5、HTTP协议协议Java网络程序设计的基本概念6l客户端发送给服务器的请求客户端发送给服务器的请求 有很多类型,被称为方法,其中最常用的是GET、POST GET方法l用来从服务器读取信息,比如从服务器读取文件、表格、数据库查询结果等 POST方法l用来向服务器传送信息,比如把信用卡号、表格、存储于数据库的数据等传送到服务器 HEAD方法l用来读取服务器响应头(Response Head);得到诸如文件大小,文件最后修改时间,服务器类型等信息 PUT方法l将文件直接传到服务器 DELETE方法l将文件直接从服务器删除 TRACE方法l用来协助程序调试 OPTIONS方法l用来查询服务器所支持的
6、方法11.1.1 协议协议(续续)HTTP协议中客户端发送给服务器的请求协议中客户端发送给服务器的请求Java网络程序设计的基本概念711.1.2 关于关于URIlURI(Uniform Resource Identifier,统一资源标统一资源标志符)志符)HTTP协议用URI标识定位网络上的数据 如果知道了公布在网络上的某个HTML文件的URI,不管文件位于什么地方,都可以通过HTTP访问该文档 通常所说的URL是URI的一种Java网络程序设计的基本概念8lURL类类 Java语言提供了URL类让我们能在源代码层使用URL 有六个构造函数,其中最简单的是URL(String url)。每
7、个URL对象都封装了资源的标识符和协议处理程序,可以调用URL的方法来提取URL的组件 把URL对象作为AppletContext接口的showDocument方法的参数,就可以使执行applet的浏览器显示URL所指定的资源11.1.2 关于关于URI(续续)URL类类Java网络程序设计的基本概念9lapplet浏览指定URL举例:ShowDocument.javaimport .*;import java.util.*;import java.awt.*;import java.awt.event.*;import java.applet.AppletContext;import jav
8、ax.swing.*;import javax.swing.event.*;public class ShowDocument extends JApplet public void init()JButton goButton=new JButton(Link to );Container myContainer=getContentPane();myContainer.add(new JLabel(Link to SOHU),BorderLayout.NORTH);myContainer.add(goButton,BorderLayout.SOUTH);goButton.addAction
9、Listener(new ButtonListener();11.1.2 关于关于URI(续续)例例11_1Java网络程序设计的基本概念10 class ButtonListener implements ActionListener public void actionPerformed(ActionEvent e)try URL newDocument=new URL(http:/);AppletContext browser=getAppletContext();browser.showDocument(newDocument);catch(Exception URLException
10、)11.1.2 关于关于URI(续续)例例11_1Java网络程序设计的基本概念1111.1.3 基于套接字的有连接通信基于套接字的有连接通信l基于套接字基于套接字(socket)的有连接通信的有连接通信 使用TCP协议 一个socket必须在发送数据之前与目的地的socket取得连接 一旦连接建立了,sockets就可以使用一个流接口完成打开-读-写-关闭,所有的发送的信息都会在另一端以同样的顺序被接收 面向连接的操作比无连接的操作效率低,但是数据的安全性高Java网络程序设计的基本概念12l用用Java建立简单的服务器程序需要五个步骤建立简单的服务器程序需要五个步骤 Step1:创建Ser
11、verSocket对象ServerSocket myServer =new ServerSocket(int port,int backlog);lPort 指定一个可用的端口号,用来定位服务器上的服务器应用程序lbacklog指定能够连接到服务器的最多客户数。连接客户达到由backlog指定的最大客户数量时,服务器将拒绝客户连接 Step 2:通过ServerSocket的accept方法监听客户连接,服务器无限期的监听客户连接Socket connection=myServer.accept();l有一个客户连接时,将产生并返回一个socket11.1.3 基于套接字的有连接通信基于套接字
12、的有连接通信(续续)服务器端服务器端Java网络程序设计的基本概念13 Step 3:通过Socket的方法getInputStream和getOutputStream获取InputStream和OutputStream对象;通常将其他流类型和它们联系起来,如:ObjectInputStream input=new ObjectInputStream(connection.getInputStream();ObjectOutputStream output=new ObjectOutputStream(connection.getOutputStream();Step 4:客户和服务器通过Ou
13、tputStream和InputStream对象进行通信 Step 5:通信传输完毕,服务器通过调用流和套接字的close方法关闭连接11.1.3 基于套接字的有连接通信基于套接字的有连接通信(续续)服务器端服务器端Java网络程序设计的基本概念14l在客户端建立简单连接的思路类似,可分为四步在客户端建立简单连接的思路类似,可分为四步 Step 1:建立一个Socket,实现与服务器的连接Socket connection=new Socket(InetAddress address,int port);laddress:服务器IP地址。port:端口号l连接成功,将返回一个Socket,否则
14、产生异常 Step 2:通过getInputStream和getOutputStream分别获取Socket的InputStream和OutputStream的引用。同样,也可以将其他流类型与InputStream和OutputStream联系起来 Step 3:客户与服务器通过InputStream和OutputStream进行通信 Step 4:传输完毕后,通过调用流和套接字的close方法关闭连接11.1.3 基于套接字的有连接通信基于套接字的有连接通信(续续)客户端客户端Java网络程序设计的基本概念1511.4 数据报通信数据报通信l数据报通信数据报通信(Datagram Commu
15、nication)使用用户数据报协议(User Datagram Protocol,UDP)l与TCP不同的一种协议l不能保证数据会被成功地送达,也不保证数据抵达的次序与送出的次序相同,所以也被称为“不可靠的通信协议”,虽然可靠性不高,但是它的速度很快,所以有些场合也有很大的用处 服务器通过DatagramSocket接收或发送信息,这些信息以DatagramPackets 的形式存在DatagramSocket mySocket=new DatagramSocket(int port);lport表示端口,上述语句将服务器绑定到一个可以从客户端接收packet的端口上,如果绑定失败,将产生S
16、ocketException异常Java网络程序设计的基本概念16l客户端应用程序的工作流程客户端应用程序的工作流程 Step1:通过创建一个DatagramSocket对象来建立数据报通讯的Socket。有如下两种构造方法public DatagramSocket()l构造一个数据报socket,并使其与本地主机任一可用的端口连接。若打不开socket则抛出SocketException异常。public DatagramSocket(int port)l 构造一个数据报socket,并使其与本地主机指定的端口连接。若打不开socket或socket无法与指定的端口连接则抛出SocketEx
17、ception异常11.1.4 数据报通信数据报通信(续续)客户端客户端Java网络程序设计的基本概念17 Step 2:用DatagramPacket类来创建一个数据报包,用来实现无连接的包传送服务lDatagramPacket对象封装了数据报包的数据(bufferedarray,包长度(length),目标地址(address),目标端口(port);length必须小于等于bufferedarry.length DatagramPacket(byte bufferedarray,int length,InetAddress address,int port)lDatagramPacket
18、类提供了四个方法来获取信息 public byte getData()返回一个字节数组,包含收到或要发送的数据报中的数据 public int getLength()返回发送或接收到的数据的长度 public InetAddress getAddress()返回一个发送或接收此数据报包文的机器的IP地址 public int getPort()返回发送或接收数据报的远程主机的端口号11.1.4 数据报通信数据报通信(续续)客户端客户端Java网络程序设计的基本概念18 Step 3:调用DatagramSocket对象的send(DatagramPacket p)方法发送数据报文包 Step
19、4:调用DatagramSocket对象的receive(DatagramPacket p)方法接收从服务器返回的结果数据报文包l该DatagramPacket对象用到另一种构造方法,只需指明存放接收的数据报的缓冲区和长度 DatagramPacket(byte bufferedarray,int length)lreceive方法会一直阻塞,直到收到一个数据报文包,此时DatagramPacket的缓冲区中包含的就是接收到的数据,也包含发送者的IP地址,发送者机器上的端口号等信息 Step 5:处理接收缓冲区内的数据,获取服务结果 Step 6:通讯完成后,使用DatagramSocket对
20、象的close()方法来关闭数据报通讯Socket11.1.4 数据报通信数据报通信(续续)客户端客户端Java网络程序设计的基本概念19l服务器端应用程序的工作流程服务器端应用程序的工作流程 与客户端应用程序的通讯过程使非常相似 l建立数据报通讯DatagramSocketl构建数据报文包DatagramPacketl接收数据报和发送数据报,处理接收缓冲区内的数据l通讯完毕后,关闭数据报通讯Socket 不同的是,服务器应用程序要面向网络中的所有计算机,所以服务器应用程序收到一个包文后要分析它,得到数据报的源地址信息,这样才能创建正确的返回结果报文给客户机11.1.4 数据报通信数据报通信(
21、续续)服务器端服务器端Java网络程序设计的基本概念2011.5 ServletlServlet 是用java技术来实现CGI(Common Gateway Interface,通用网关接口)功能的编程 介于浏览器(或其他HTTP客户端)与服务器之间,起到桥梁的作用。具体作用为:l读取客户端发送的数据l获取客户请(request)中所包含的信息l产生响应结果,并将结果包含到一个文件中,比如HTML文件中l设置HTTP响应参数,比如告诉浏览器,文件类型为HTMLl将文件返回给客户端 Servlet的应用并不限于处理HTTP请求的网页或者应用程序服务中,还可以置入到邮件或FTP服务程序中Java网
22、络程序设计的基本概念21l与传统的与传统的CGI相比,相比,Servlet具有很多优点具有很多优点 高效率l通过Servlet,Java虚拟机用轻量级的Java线程处理每个请求。同时有N个请求的情况下,CGI程序需要被调入到服务器内存N次;对于Servlet将开启N个线程,但仅仅调入一个Servlet实例到内存中 应用方便lServlet在解析和译码HTML数据,读取设置HTML标题,操作Cookie等很多方面,应用更加方便。继承自java的特点,其可靠性与复用性好 功能强大lServlet可以直接与Web服务程序对话;多个Servlet可以共享数据;Servlet与数据库的连接也比较简单等1
23、1.1.5 Servlet(续续)优点优点Java网络程序设计的基本概念22 便携性好lServlet用Java语言编写,遵循标准的API。因此Servlet编写的程序可以无任何修改的在Apache,Microsoft Internet Information Server(IIS),IBM WebSphere,或者StarNine WebStar 上运行。同样具有一次编译,到处运行移植性好的特点 安全l基于Java语言的安全特性,Servlet的安全性也比较可靠 成本低l有很多免费或相对比较便宜的Web服务器,适合做个人的或者小容量的网站。而且很多商业级的Web服务器相对也比较便宜。而且使一
24、个服务器支持Servlet所需的额外花费也很少11.1.5 Servlet(续续)优点优点Java网络程序设计的基本概念2311.2 Servlet基础基础l本节内容包括本节内容包括 Servlet容器、web服务器、应用服务器 Web应用程序 Servlet API Servlet的基本结构 Servlet编译和安装2411.2.1 Servlet容器、容器、Web服务器和应用服务器服务器和应用服务器lServlet容器容器 也称为Servlet引擎 是一个编译好的可执行程序,它是web服务器与servlet间的的媒介 负责将请求翻译成Servlet能够理解的形式传递给servlet,同时传
25、给servlet一个对象使之可以送回响应 负责管理servlet的生命周期Servlet 基础25lweb服务器服务器 能够处理Http请求的服务器 可以提供静态页面、图像等 有的web服务器也支持动态页面的生成,支持JSP、Servlet等,具有JVMl应用服务器应用服务器 可以处理基于多种协议的请求,当然也包括Http协议 可以支持servlets和JSP,以及所有其他J2EE服务,包括JNDI、EJBs、JMS等 11.2.1 Servlet容器、容器、Web服务器和应用服务器服务器和应用服务器(续续)Servlet 基础26lservlet容器可以与容器可以与web服务器协作提供对服务
展开阅读全文