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