servlet介绍

上传人:第*** 文档编号:61714799 上传时间:2018-12-10 格式:PPT 页数:122 大小:1.45MB
返回 下载 相关 举报
servlet介绍_第1页
第1页 / 共122页
servlet介绍_第2页
第2页 / 共122页
servlet介绍_第3页
第3页 / 共122页
servlet介绍_第4页
第4页 / 共122页
servlet介绍_第5页
第5页 / 共122页
点击查看更多>>
资源描述

《servlet介绍》由会员分享,可在线阅读,更多相关《servlet介绍(122页珍藏版)》请在金锄头文库上搜索。

1、第8章 Servlet,一种提供动态内容 面向用户内容的方法,概要,8.1 servlet 概览 8.2 Servlet 接口 8.3 Servlet 环境 8.4 过滤器 8.5 会话 8.6 事件监听 8.7 把请求映射到servlets,8.1 servlet概览,Servlet是使用Java Servlet 应用程序设计接口(API)及相关类和方法的 Java 程序。Servlet 通过创建一个框架来扩展服务器的能力,以提供在 Web 服务器上进行请求和响应服务。 什么是Servlet? 什么是 Servlet 容器? 与其他技术的比较 如何工作?,什么是Servlet?,Java S

2、ervlets是基于Java技术的Web组件,用来扩展以请求/响应为模型的服务器的能力,提供动态内容。 Servlet是使用Java Servlet 应用程序设计接口(API)及相关类和方法的 Java 程序。 Servlet 由容器或引擎来管理,通过请求/响应模型与Web客户进行交互,请求,客户端,响应,Servlet 运行于服务器上,什么是 Servlet容器,servlet由servlet容器管理,servlet容器也叫 servlet引擎,是servlet的运行环境 servlet容器是web服务器或应用服务器的一部分,管理和维护servlet的整个生命周期 必须支持http协议,负责

3、处理客户请求、把请求传送给适当的servlet并把结果返回给客户。 虽然容器的实现可能各不相同,但容器与servlet之间的接口是由servlet API定义好的。,Servlet容器的职能,用来发送请求和响应的网络服务 为Servlet注册一个或多个URL; 管理servlet的生命周期 解码基于MIME的请求 构造基于MIME的响应 支持Http协议(也可以支持其他协议,如weblogic服务器支持t3协议),Servlet的特性和优势,可移植性(Portability) 强大的功能 安全(提供不同层次的安全保障) 简洁。Servlet代码面向对象,在封装方面具有先天的优势。 集成。Ser

4、vlet和服务器紧密集成,它们可以密切合作完成特定的任务。,与其他技术的比较,从功能上来说,Servlet位于公用网关接口程序(Common Gateway Interface,CGI)和Netscape服务器API(NSAPI)或Apache模块等专有的服务器扩展之间。Servlet有下列的好处,超越了其他服务器的扩展机制。 通常都比CGI脚本快许多,因为Servlet使用了一个不同的处理模型。 Servlet使用标准的API,被更多的Web服务器所支持。 Servlet拥有Java程序语言的所有优点,包括易开发性和平台独立性。 Servlet可以访问Java平台下的大量的API,如何工作,

5、8.2 Servlet编程,编程接口 Servlet 的生命周期 部署描述符中servlet相关部分 Servlet的例子,编程接口,servlet接口,定义在javax.servlet.Servlet 当在编写某个servlet的时必须直接或间接的实现这个接口。一般趋向于间接实现:通过从javax.servlet.GenericServlet或javax.servlet.http.HttpServlet派生。 在实现servlet接口时必须实现它的五个方法,servlet接口,public void init(ServletConfig config) throws ServletExcep

6、tion 一旦对servlet实例化后,容器就调用此方法。容器把一个ServletConfig对象传统给此方法,这样servlet的实例就可以把与容器相关的配置数据保存起来供以后使用。如果此方法没有正常结束就会抛出一个ServletException。一旦抛出该异常,servlet就不再执行,而随后对它的调用会导致容器对它重新载入并再次运行此方法。接口规定对任何servlet实例,此方法只能被调用一次,在任何请求传递给servlet之前,此方法可以在不抛出异常的情况下运行完毕。,servlet接口,public void service(ServletRequest req,ServletRe

7、sponse res) throws ServletException,IOException 只有成功初始化后此方法才能被调用处理用户请求。前一个参数提供访问初始请求数据的方法和字段,后一个提供servlet构造响应的方法。,servlet接口,public void destroy() 容器可以在任何时候终止servlet服务。容器调用此方法前必须给service()线程足够时间来结束执行,因此接口规定当service()正在执行时destroy()不被执行,servlet接口,public ServletConfig getServletConfig() 在servlet初始化时,容器传

8、递进来一个ServletConfig对象并保存在servlet实例中,该对象允许访问两项内容:初始化参数和ServletContext对象,前者通常由容器在文件中指定,允许在运行时向sevrlet传递有关调度信息,后者为servlet提供有关容器的信息。此方法可以让servlet在任何时候获得该对象及配置信息。,servlet接口,public String getServletInfo() 此方法返回一个String对象,该对象包含servlet的信息,例如开发者、创建日期、描述信息等。该方法也可用于容器。,GenericServlet类,实现Servlet、ServletConfig、Se

9、rializable 提供了servlet接口的基本实现部分,其service()方法被申明为abstract,因此需要被派生。 init(ServletConfig conf)方法把servletConfig对象存储在一个private transient(私有临时)实例变量里, getServletConfig()方法返回指向本对象的指针,如果重载此方法,将不能使用getServletConfig来获得ServletConfig对象,如果确实想重载,记住要包含对super.config的调用。 log(String msg)方法将servlet的名称和msg参数写到容器的日志中,HttpS

10、ervlet类,扩展了GenericServlet类并对servlet接口提供了与HTTP更相关的实现 protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException,IOException 该方法作为HTTP请求的分发器,任何时候都不能被重载。 当请求到来时,service()方法根据请求的类型(GET, POST, HEAD, OPTIONS,DELETE,PUT,TRACE),并把请求分发给相应的处理方法(doGet(), doPost(), doHead(),

11、 doOptions(), doDelete(), doPut(),doTrace()) 每个do方法具有和第一个service()相同的形式。为了响应特定类型的HTTP请求,必须重载相应的do方法。如果servlet收到一个HTTP请求而你没有重载相应的do方法,它就返回一个说明此方法对本资源不可用的标准HTTP错误。,请求处理方法,Serlvet接口只定义了一个服务方法就是service,而HttpServlet类实现了该方法并且要求调用对应的doXXX()方法。 通常情况下,在开发基于HTTP的servlet时,只需要关心doGet和doPost方法,其它的方法需要开发者非常的熟悉HTT

12、P编程。 通常情况下,实现的servlet都是从HttpServlet扩展而来。doPut和doDelete方法允许开发者支持HTTP/1.1的对应特性;doHead是一个已经实现的方法,它将执行doGet但是仅仅向客户端返回doGet应该向客户端返回的头部的内容;doOptions方法自动的返回servlet所直接支持的HTTP方法信息;doTrace方法返回TRACE请求中的所有头部信息。,请求处理方法,对于仅支持HTTP/1.0的容器而言,只有doGet, doHead 和 doPost方法能被使用,因为HTTP/1.0协议没有定义PUT, DELETE, OPTIONS,或者TRACE

13、请求。 servlet规范要求,servlet容器至少要实现HTTP/1.0协议规范,推荐实现HTTP/1.1规范,在此基础上可以实现其它的基于请求回应模式(based request response model)的协议(例如HTTPS)。,编程接口javax.servlet 包,ServletConfig 接口,在初始化的过程中由 Servlet 容器使用,ServletContext 接口,定义 Servlet 用于获取来自 其容器的信息的方法,ServletRequest 接口,向服务器请求信息,ServletResponse 接口,响应客户端请求,编程接口 javax.servlet

14、 包,ServletInputStream 类,用于从客户端读取 二进制数据,ServletOutputStream 类,用于将二进制数据 发送到客户端,编程接口 javax.servlet.http 包,HttpServletRequest 接口,提供 HTTP 请求信息,HttpServletResponse 接口,提供 HTTP 响应,一个简单的实例,package cn.edu.njust; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld ext

15、ends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException response.setContentType(“text/html“); PrintWriter out = response.getWriter(); out.println(“); out.println(“); out.println(“); out.println(“Hello World!“); out.println(“);

16、 out.println(“); out.println(“Hello World!“); out.println(“); out.println(“); ,Servlet 的生命周期,实例化,Servlet 容器创建 Servlet 的实例,初始化,该容器调用 init() 方法,服 务,如果请求 Servlet,则容器调用 service() 方法,销毁实例之前调用 destroy() 方法,销 毁,不可用,销毁实例并标记为垃圾收集,Servlet 生命周期,生命周期由javax.servlet.Servlet接口的init,service和destroy方法表达。,Action 1:加载和实例化,容器负责加载和实例化一个servlet。实例化和加载可以发生在引擎启动的时候,也可以推迟到容器需要该servlet为客户请求服务的时候(加载的时机)。 容

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号