资源预览内容
第1页 / 共45页
第2页 / 共45页
第3页 / 共45页
第4页 / 共45页
第5页 / 共45页
第6页 / 共45页
第7页 / 共45页
第8页 / 共45页
第9页 / 共45页
第10页 / 共45页
亲,该文档总共45页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
索迪教育 IT教育成就人生 基于Java的Web编程技术 章Servlet 索迪教育 IT教育成就人生 上章回顾 q 了解代理事件模型 q 在JavaBean中访问数据库 索迪教育 IT教育成就人生 我们的目标 q 了解Servlet体系结构 q 掌握请求和响应 索迪教育 IT教育成就人生 简介 1 q Java编程中一个最激动人心的最新趋势是服 务器端Java应用程序的兴起 Java这种面向 对象的通用编程语言最初旨在用于小型嵌入 设备 而后被认为是一种用于以Applet形式开 发客户端Web内容的语言 如今Java已是一 种非常适合服务器端开发的语言 商家迅速 认识到Java在服务器上的潜力 索迪教育 IT教育成就人生 简介 2 q Applet是以Java语言开发的程序 它运行在客 户端机器的浏览器上 这些Applet不连接到服 务器 在很多情况下需要访问服务器上的数 据 而这无法通过Applet实现 为了访问数据 和执行服务器端的请求处理 必须使用另一 个称为Servlet的应用程序 Servlet是以Java 编程语言开发的服务器端程序 它运行在 Web服务器中 由于Servlet在服务器内运行 所以这些程序可用于扩展Web服务器的功 能 索迪教育 IT教育成就人生 简介 3 客户端Servlet 数据库 HTTP 服务器 Servlet体系结构 索迪教育 IT教育成就人生 简介 4 q 使用Servlet的优点是 Servlet是持久性的 Servlet只须由Web服务器加载一次即可 维护请求之间的服务 相比之下 每次向Web服务器发出请 求时 Web服务器都必须加载和执行CGI脚本 Servlet运行速度快 由于只须加载一次 所以提供更佳的性 能 由于是用Java编写 所以Servlet可跨平台 Servlet可扩展 Java的所有优点都可以在Servlet中体现 Servlet很安全 访问Servlet的唯一途径是通过服务器 Servlet可以与各种客户端一起使用 索迪教育 IT教育成就人生 6 1 Servlet体系结构 1 q Servlet是服务器端程序 运行在Web服务器 上对客户端的请求做出响应 Web服务器向 Servlet发送请求 Servlet的输出结果返回至 Web服务器 然后Web服务器将结果返回至 Web浏览器 最后Web浏览器在屏幕上显示 结果 该过程称为 请求 响应 模型 Web浏览器ServletWeb服务器 HTTP请求 HTTP响应 索迪教育 IT教育成就人生 6 1 Servlet体系结构 2 q Servlet使用以下两个包中的类和接口 javax servlet javax servlet http q 包名以javax开头而不是java 表示Servlet API是一个 标准扩展 q javax servlet包包含了可以支持通用 跨协议的 Servlet的类 q javax servlet http包中的类增加了特定于HTTP的功能 每个Servlet都必须实现javax servlet Servlet接口 大部分Servlet通过扩展以下其中一个特殊类来实现这 一接口 javax servlet GenericServlet或 javax servlet http HttpServlet 索迪教育 IT教育成就人生 6 1 Servlet体系结构 3 q 跨协议Servlet应该继承GenericServlet HTTP Servlet应继承HttpServlet 而 HttpServlet本身是GenericServlet的子类 但 添加了特定于HTTP的功能 Servlet接口只声 明而不实现用于管理Servlet及其与客户端通 信的方法 索迪教育 IT教育成就人生 6 1 Servlet体系结构 4 Servlet GenericServlet HttpServlet 自定义Servlet 索迪教育 IT教育成就人生 6 1 1 常用接口和类 javax servlet包 q 其中最常用的接口如下 ServletRequest 此接口用于将请求信息传送给Servlet 在收到请求时 Servlet 引擎会将关键的请求信息封装在实现ServletRequest接口的对象 中 传递至Servlet的service 方法 ServletResponse 此接口提供服务器对客户端请求的响应的对象表示 Servlet引 擎会将实现ServletResponse接口的对象传递给Servlet的 service 方法 接着Servlet就可以使用此对象对客户端请求做 出响应 RequestDispatcher 此接口定义一个用于接收客户端的请求并将其发送至任何资源 的对象 此接口还可用于封装Servlet RequestDispatcher对象 用作资源的封装器 通过路径或名称指定 资源可以是服务器 上的Servlet HTML文件或JSP文件 索迪教育 IT教育成就人生 6 1 1 常用接口和类 javax servlet包 q 其中最常用的接口如下 Servlet 这是每个Servlet都必须实现的接口 它定义必须由Servlet实现 的方法 ServletConfig 此接口定义Servlet配置对象 此对象由Servlet引擎用于将任何 信息传递给Servlet 以便可初始化Servlet ServletConfig 接 口的其他详情将在本章后面讨论 ServletContext 此接口定义了一组方法 Servlet使用这些方法与Servlet引擎进 行通信 SingleThreadModel 此接口确保每次Servlet只能处理一个请求 索迪教育 IT教育成就人生 6 1 1 常用接口和类 javax servlet包 q 其中最常用的类如下 q GenericServlet 这是大部分非HTTPServlet扩展的类 此类定义通 知 跨协议的Servlet q ServletInputStream 这是提供输入流用于读取来自客户端请求的二进制 数据的类 此类包括方法readLine 以此有效实 现每次读取一行数据 q ServletOutputStream 此类的运行方式与ServletInputStream相同 但此 类提供输出流用于将二进制数据发送给客户端 索迪教育 IT教育成就人生 6 1 1 常用接口和类 javax servlet包 q javax servlet包还具有某些异常 它们是 q ServletException 此异常是常规异常 由Servlet在执行过程中遇到困 难时抛出 q UnavailableException 此异常定义的是由Servlet抛出以表示Servlet永久或 临时不可用的异常 索迪教育 IT教育成就人生 6 1 1 常用接口和类 javax servlet http包 qjavax 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包 q javax servlet http包中常用的类包括 Cookie Cookie类可以创建Cookie Cookie存储了少量由Servlet发送至 客户端的信息 客户端可在稍后要访问以前访问过的网页时使 用已存储的信息 HttpServlet HttpServlet类是最常用于扩展Servlet的类 这是因为很多 Servlet应用程序都按HTTP协议运行 此类支持HTTP功能以及 Servlet类的方法 它是个抽象类 它接收客户端的请求 并向 客户端发送响应 HttpSessionBindingEvent 在对象绑定至会话上或解除会话绑定时 此类会将对象传递给 实现HttpSessionBindingListener接口的会话 索迪教育 IT教育成就人生 6 1 2 Servlet生命周期 1 q Servlet是普通Java类 在需要时被创建 在不用时被 破坏 Servlet的创建和破坏均由Servlet容器自动处理 这是因为Servlet是在Servlet容器内运行 Servlet容 器可以在单个Java虚拟机中执行所有Servlet Servlet 容器必须遵循下列生命周期 创建和初始化Servlet 加载 处理客户端的服务调用 破坏Servlet并对其进行垃圾收集 q 这三个步骤对所有Servlet都通用 Servlet容器创建 Servlet实例时使用的是init 方法 而在破坏实例时使 用的是destroy 方法 索迪教育 IT教育成就人生 6 1 2 Servlet生命周期 2 服务器加载Servlet 服务器创建Servlet类的实例 调用Servlet实例的init 方法 收到请求 调用service 方法 service 方法处理请求并将输出结果返回客户端 Servlet等待下一个请求或由服务器卸载 Servlet在服务器调用destroy 方法后被卸载 索迪教育 IT教育成就人生 6 1 2 Servlet生命周期 3 q初始化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 2 Servlet生命周期 4 q 处理客户端的请求 Servlet接受客户端的调用时 它将收到两个对象 ServletRequest 用于封装客户端至服务器的通信 ServletResponse 用于封装Servlet返回至客户端的通信 HttpServlet接受客户端的调用时 与普通Servlet相似 它们 是 HttpServletRequest HttpServletResponse HttpServlet能够并发地为多个客户端服务 在Servlet初始化 之后 在调用init 方法时 Servlet容器收到的任何请求都将 被转发至Se
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号