您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 全套Servlet培训教程
索迪教育IT教育成就人生基于Java的Web编程技术第六章Servlet索迪教育IT教育成就人生上章回顾了解代理事件模型在JavaBean中访问数据库索迪教育IT教育成就人生我们的目标了解Servlet体系结构掌握请求和响应索迪教育IT教育成就人生简介-1Java编程中一个最激动人心的最新趋势是服务器端Java应用程序的兴起。Java这种面向对象的通用编程语言最初旨在用于小型嵌入设备,而后被认为是一种用于以Applet形式开发客户端Web内容的语言,如今Java已是一种非常适合服务器端开发的语言,商家迅速认识到Java在服务器上的潜力。索迪教育IT教育成就人生简介-2Applet是以Java语言开发的程序,它运行在客户端机器的浏览器上,这些Applet不连接到服务器。在很多情况下需要访问服务器上的数据,而这无法通过Applet实现。为了访问数据和执行服务器端的请求处理,必须使用另一个称为Servlet的应用程序。Servlet是以Java编程语言开发的服务器端程序,它运行在Web服务器中,由于Servlet在服务器内运行,所以这些程序可用于扩展Web服务器的功能。索迪教育IT教育成就人生简介-3客户端Servlet数据库HTTP服务器Servlet体系结构索迪教育IT教育成就人生简介-4使用Servlet的优点是:Servlet是持久性的。Servlet只须由Web服务器加载一次即可维护请求之间的服务。相比之下,每次向Web服务器发出请求时,Web服务器都必须加载和执行CGI脚本。Servlet运行速度快。由于只须加载一次,所以提供更佳的性能。由于是用Java编写,所以Servlet可跨平台。Servlet可扩展。Java的所有优点都可以在Servlet中体现。Servlet很安全。访问Servlet的唯一途径是通过服务器。Servlet可以与各种客户端一起使用。索迪教育IT教育成就人生6.1Servlet体系结构-1Servlet是服务器端程序,运行在Web服务器上对客户端的请求做出响应。Web服务器向Servlet发送请求,Servlet的输出结果返回至Web服务器,然后Web服务器将结果返回至Web浏览器,最后Web浏览器在屏幕上显示结果。该过程称为“请求-响应”模型。Web浏览器ServletWeb服务器HTTP请求HTTP响应索迪教育IT教育成就人生6.1Servlet体系结构-2Servlet使用以下两个包中的类和接口:javax.servletjavax.servlet.http包名以javax开头而不是java,表示ServletAPI是一个标准扩展。javax.servlet包包含了可以支持通用、跨协议的Servlet的类。javax.servlet.http包中的类增加了特定于HTTP的功能。每个Servlet都必须实现javax.servlet.Servlet接口。大部分Servlet通过扩展以下其中一个特殊类来实现这一接口:javax.servlet.GenericServlet或javax.servlet.http.HttpServlet。索迪教育IT教育成就人生6.1Servlet体系结构-3跨协议Servlet应该继承GenericServlet。HTTPServlet应继承HttpServlet,而HttpServlet本身是GenericServlet的子类,但添加了特定于HTTP的功能。Servlet接口只声明而不实现用于管理Servlet及其与客户端通信的方法。索迪教育IT教育成就人生6.1Servlet体系结构-4ServletGenericServletHttpServlet自定义Servlet索迪教育IT教育成就人生6.1.1常用接口和类-javax.servlet包其中最常用的接口如下:ServletRequest此接口用于将请求信息传送给Servlet。在收到请求时,Servlet引擎会将关键的请求信息封装在实现ServletRequest接口的对象中,传递至Servlet的service()方法。ServletResponse此接口提供服务器对客户端请求的响应的对象表示。Servlet引擎会将实现ServletResponse接口的对象传递给Servlet的service()方法。接着Servlet就可以使用此对象对客户端请求做出响应。RequestDispatcher此接口定义一个用于接收客户端的请求并将其发送至任何资源的对象。此接口还可用于封装Servlet。RequestDispatcher对象用作资源的封装器,通过路径或名称指定。资源可以是服务器上的Servlet、HTML文件或JSP文件。索迪教育IT教育成就人生6.1.1常用接口和类-javax.servlet包其中最常用的接口如下:Servlet这是每个Servlet都必须实现的接口,它定义必须由Servlet实现的方法。ServletConfig此接口定义Servlet配置对象。此对象由Servlet引擎用于将任何信息传递给Servlet,以便可初始化Servlet。ServletConfig接口的其他详情将在本章后面讨论。ServletContext此接口定义了一组方法,Servlet使用这些方法与Servlet引擎进行通信。SingleThreadModel此接口确保每次Servlet只能处理一个请求。索迪教育IT教育成就人生6.1.1常用接口和类-javax.servlet包其中最常用的类如下:GenericServlet这是大部分非HTTPServlet扩展的类。此类定义通知、跨协议的Servlet。ServletInputStream这是提供输入流用于读取来自客户端请求的二进制数据的类。此类包括方法readLine(),以此有效实现每次读取一行数据。ServletOutputStream此类的运行方式与ServletInputStream相同,但此类提供输出流用于将二进制数据发送给客户端。索迪教育IT教育成就人生6.1.1常用接口和类-javax.servlet包javax.servlet包还具有某些异常,它们是:ServletException此异常是常规异常,由Servlet在执行过程中遇到困难时抛出。UnavailableException此异常定义的是由Servlet抛出以表示Servlet永久或临时不可用的异常。索迪教育IT教育成就人生6.1.1常用接口和类-javax.servlet.http包javax.servlet.http包中可用的接口包括:HttpServletRequest此接口扩展ServletRequest接口并支持ServletResult接口的所有方法。HttpServletRequest定义用于描述HTTP请求的方法。实现HttpServletRequest接口的对象被传递给Servlet的service方法或任何do()方法。HttpServletResponse此接口扩展ServletResponse并支持ServletResponse接口的所有方法。HttpServletResponse接口提供服务器对客户端请求的响应的对象表示。Servlet可以使用实现Servlet引擎传递的HttpServletResponse接口的对象。此对象将被传递至Servlet的service()方法。HttpSession此接口提供一种方法,用于在对Web站点的请求或访问超过一个页面时标识用户。HttpSessionBindingListener在对象绑定至会话上或解除会话绑定时,此接口将通知对象。索迪教育IT教育成就人生6.1.1常用接口和类-javax.servlet.http包javax.servlet.http包中常用的类包括:CookieCookie类可以创建Cookie,Cookie存储了少量由Servlet发送至客户端的信息。客户端可在稍后要访问以前访问过的网页时使用已存储的信息。HttpServletHttpServlet类是最常用于扩展Servlet的类,这是因为很多Servlet应用程序都按HTTP协议运行。此类支持HTTP功能以及Servlet类的方法,它是个抽象类。它接收客户端的请求,并向客户端发送响应。HttpSessionBindingEvent在对象绑定至会话上或解除会话绑定时,此类会将对象传递给实现HttpSessionBindingListener接口的会话。索迪教育IT教育成就人生6.1.2Servlet生命周期-1Servlet是普通Java类,在需要时被创建,在不用时被破坏。Servlet的创建和破坏均由Servlet容器自动处理,这是因为Servlet是在Servlet容器内运行。Servlet容器可以在单个Java虚拟机中执行所有Servlet。Servlet容器必须遵循下列生命周期:创建和初始化Servlet(加载)处理客户端的服务调用破坏Servlet并对其进行垃圾收集这三个步骤对所有Servlet都通用。Servlet容器创建Servlet实例时使用的是init()方法,而在破坏实例时使用的是destroy()方法。索迪教育IT教育成就人生6.1.2Servlet生命周期-2服务器加载Servlet服务器创建Servlet类的实例调用Servlet实例的init()方法收到请求调用service()方法service()方法处理请求并将输出结果返回客户端Servlet等待下一个请求或由服务器卸载Servlet在服务器调用destroy()方法后被卸载索迪教育IT教育成就人生6.1.2Servlet生命周期-3初始化Servlet任何时候将Servlet加载至服务器,服务器都会调用Servlet的init()方法。即使大部分Servlet在多线程服务器上运行,Servlet在初始化过程中也不会碰到并发问题。init()方法在Servlet处理第一个请求之前调用,此方法用于执行Servlet初始化–创建或加载Servlet在处理请求时使用的对象。服务器调用Servlet的init()方法,向新Servlet提供任何有关其本身及其环境的信息。覆盖init()方法是为了在Servlet中添加初始化的内容,覆盖init()方法时必须遵循下列规则:如果发生初始化错误,致使Servlet不能处理客户端请求,则抛出UnavailableException请勿调用System.exit()方法ServletConfig对象向Servlet提供其初始化参数信息,这些参数与其他任何请求都不关联。ServletConfig对象还有对ServletContext对象的引用,Servlet可以使用此对象调查其环境。索迪教育IT教育成就人生6.1.2Servlet生命周期-4处理客户端的请求Servlet接受客户端的调用时,它将收到两个对象:ServletRequest,用于封装客户端至服务器的通信。ServletResponse,用于封装Servlet返回至客户端的通信。HttpServlet接受客户端的调用时,与普通Servlet相似,它们是:HttpServletRequestHttpServletResponseHttpServlet能够并发地为多个客户端服务。在Servlet初始化之后,在调用init()方法时,Servlet容器收到的任何请求都将被转发至Servlet的service()方法。根据正在接收的HTTP请求类型,HttpServlet类的service()方法可在细分为doGet()、doPost()、doDelete()、doOptions()、doPut()和doTrace()方法。其中,doGet()和doPost()是两个常用于处理服务器的请求
本文标题:全套Servlet培训教程
链接地址:https://www.777doc.com/doc-966958 .html