• 1. 第三章 Servlet 编程
  • 2. 本章主要内容Servlet 基础 Servlet 编程基本技能 Servlet 编程高级技能 Servlet Filter 编程 Servlet Listener 编程
  • 3. Servlet 基础√ Servlet 编程基本技能 Servlet 编程高级技能 Servlet Filter 编程 Servlet Listener 编程
  • 4. Servlet 基础Servlet定义:一种独立于操作系统平台和网络传输协议的服务器端的Java应用程序,它用来扩展服务器的功能,可以生成动态的Web页面 注意:Servlet不是从命令行启动的,而是由包含Java虚拟机的Web服务器进行加载
  • 5. Servlet 基础Servlet 与 Applet 相比较 : 相似之处: (1)它们不是独立的应用程序,没有main()方法。 (2)它们不是由用户调用,而是由另外一个应用程序(容器)调用。 (3)它们都有一个生存周期,包含init()和destroy()方法。 不同之处: (1)Applet运行在客户端,具有丰富的图形界面。 (2)Servlet运行在服务器端,没有图形界面。
  • 6. Servlet 最大的用途是通过动态响应客户机请求来扩展服务器功能!!!!Servlet 基础
  • 7. Servlet 基础Servlet工作原理 : Servlet运行在Web服务器上的Web容器里。Web容器负责管理Servlet。它装入并初始化Servlet,管理Servlet的多个实例,并充当请求调度器,将客户端的请求传递到Servlet,并将Servlet的响应返回给客户端。Web容器在 Servlet 的使用期限结束时终结该 Servlet。服务器关闭时,Web容器会从内存中卸载和除去 Servlet
  • 8. Servlet 基础Servlet基本工作流程 (1)客户机将请求发送到服务器。 (2)服务器上的Web容器实例化(装入)Servlet (3)Web容器将请求信息发送到 Servlet。 (4)Servlet 创建一个响应,并将其返回到Web容器。 (5)Web容器将响应发回客户机。 (6)服务器关闭或Servlet空闲时间超过一定限度时,调用destory()方法退出。
  • 9. Servlet 基础注意:Servlet也可以配置为Web应用程序启动时自动装载。结论: 客户机与Servlet间没有直接的交互。无论客户机对Servlet的请求还是Servlet对客户端的响应,都是通过Web服务器来实现的,这就大大提高了Servlet组件的可移植性
  • 10. Servlet 基础多个请求的处理 :为每个请求创建一个新的线程来处理客户端的请求 必须注意线程的同步问题!!!
  • 11. Servlet 编程接口 Servlet 基础
  • 12. Servlet 基础 Servlet 编程基本技能√ Servlet 编程高级技能 Servlet Filter 编程 Servlet Listener 编程
  • 13. 编写响应HTTP请求的Servlet的步骤: (1)创建一个扩展了 javax.servlet.http.HttpServlet接口的Servlet类。 (2)重写doGet()或doPost()方法实现对HTTP请求信息的动态响应。 Servlet 编程基本技能
  • 14. 程序3-1:FirstServlet.java package com.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class FirstServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //TODO Method stub generated by Lomboz response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("" + "" + "" + " " + "First Servlet" + "" + "" + "" + "
    " + "

    " +"Hello World!" + "

    " + "
    " + "" + ""); } }
  • 15. 利用Eclipse快速修正错误
  • 16. (本页无文本内容)
  • 17. 程序3-2:Web.xml First com.servlet.FirstServlet First /first index.jsp 404 /error.jsp
  • 18. 处理客户端输入 Servlet 编程基本技能在Web程序设计中,以表单方式向服务器提交数据是最常见的方法。表单数据的提交方法有两种:Post方法和Get方法, 当使用Post方法时,数据由标准的输入设备读入。 当使用Get方法时,数据由CGI变量QUERY_STRING传递给表单数据处理程序,即附加在请求地址的后面,在浏览器的地址栏中可以看到。 用户只要简单的调用HttpServletRequest的getParameter()方法,给出变量名称即可取得该变量的值。需要注意的是,变量的名称是大小写敏感的。当请求的变量不存在时,将会返回一个空字符串
  • 19. 发送非HTML文档 Servlet 编程基本技能随着Internet应用的不断扩展,为了支持多媒体数据类型,HTTP协议中就使用了附加在文档之前的MIME数据类型信息来标识数据类型 Servlets 可以使用 MIME 类型来向浏览器传送非 HTML 文件,比如 Adobe PDF 和 Micorsoft Word。使用正确的 MIME 类型能够保证这些非 HTML 文件被正确的插件或外部程序处理显示。 解决方案:需要将 response 对象中header 的 content 类型设置成 相应的MIME标志 res.setContentType(“application/pdf”)
  • 20. Servlet 编程基本技能Servlet配置参数由ServletConfig对象表示。在Servlet被实例化后,ServletConfig对象对任何客户端在任何时候访问都有效,但一个Servlet的ServletConfig对象不能被其他Servlet访问。 在Servlet中要得到ServletConfig对象有两种方法: 在init()方法中获取(通过init的重载方法传递); 通过getServletConfig()方法直接获取。 用途:通过配置信息来初始化Servlet可以有效避免硬编码信息,提高Servlet的可移植性。
  • 21. Servlet 基础 Servlet 编程基本技能 Servlet 编程高级技能√ Servlet Filter 编程 Servlet Listener 编程
  • 22. Servlet 编程高级技能HTTP特征: HTTP协议是一种无状态的协议,客户端每次打开一个Web 页面,它就会与服务器建立一个新的连接,发送一个新的请求到服务器,服务器处理客户端的请求,返回响应到客户端,并关闭与客户端建立的连接。当客户端发起新的请求,那么它重新与服务器建立连接,因此服务器并不记录关于客户的任何信息。
  • 23. Servlet 编程高级技能常见会话跟踪技术有: Cookie、 URL重写 隐藏表单域
  • 24. Servlet 编程高级技能HttpSession 接口允许 Servlet查看和管理关于会话的信息,确保信息持续跨越多个用户连接等。 HttpSession高级接口实际上是建立在 Cookie 和 URL重写这两种会话跟踪技术之上的,只不过由Servlet自动实现了关于会话跟踪的一切,不再需要程序员了解具体细节。
  • 25. Servlet 编程高级技能使用 HttpSession 接口进行程序开发的基本步骤是: (1)获取会话对象 (2)对会话对象进行读或写 (3)手工终止会话,或者什么也不做,让它自动终止。每个会话对象都有一定的生存周期,超过这个周期,容器将自动将会话对象中止。
  • 26. Servlet 编程高级技能上下文:服务器上的每个Web应用都会有一个背景环境对象。上下文对象提供了一个同一Web应用内的不同资源间共享信息的场所。Javax.Servlet.ServletContext接口提供正在运行的Servlet所处的Web应用程序的上下文对象的视图,可以通过getServletContext()方法得到该Servlet运行的上下文对象。
  • 27. Servlet 编程高级技能通过Servlet 上下文可以实现以下功能: (1)访问Web应用程序资源 (2)在Servlet上下文属性中保存Web应用程序信息 (3)获取初始化参数信息 (4)提供日志支持。
  • 28. 请求指派:在一个Servlet处理完毕后,将客户端的请求传递到另外一个Servlet来处理。 Requestdispatcher Servlet 编程高级技能
  • 29. Servlet 基础 Servlet 编程基本技能 Servlet 编程高级技能 Servlet Filter 编程√ Servlet Listener 编程
  • 30. Java Servlet 2.3 规范新特性:Servlet FilterServlet Filter 编程注意:Filter不是Servlet,它只是Servlet接收请求前的预处理器。 一个Filter 必须实现javax.Servlet.Filter 接口,即实现下面的三个方法: (1)doFilter(ServletRequest, ServletResponse, FilterChain)。用来实现过滤行为的方法。引入的 FilterChain 对象提供了后续Filter所要调用的信息。 (2)init(FilterConfig)。 (3)destroy()。
  • 31. Servlet Filter 编程Filter主要用在以下几个方面 : (1)访问特定资源(Web 页、JSP 页、Servlet)时的身份验证。 (2)访问资源的记录跟踪。 (3)访问资源的转换。
  • 32. Filter映射设置
  • 33. 程序3-25: Web.xml(片段) ......... TimeTrackFilter com.servlet.TimeTrackFilter TimeTrackFilter /Main ........
  • 34. Servlet 基础 Servlet 编程基本技能 Servlet 编程高级技能 Servlet Filter 编程 Servlet Listener 编程√
  • 35. 事件:指Web应用下上文的创建销毁、会话对象的创建销毁以及会话属性信息的变化等 通过事件监听,Listener对象可以在事情发生前、发生后进行一些必要的处理。
  • 36. Listener实现了Servlet的事件驱动,使得Servlet不仅可以被动的处理客户端发出的请求,而且可以主动对Web容器的变化进行响应,大大提高了Servlet的能力。
  • 37. Listener接口Event类ServletContextListenerServletContextEventServletContextAttributeListenerServletContextAttributeEventHttpSessionListenerHttpSessionEventHttpSessionActivationListenerHttpSessionAttributeListenerHttpSessionBindingEventHttpSessionBindingListenerServletRequestListenerServletRequestEventServletRequestAttributeListenerServletRequestAttributeEventServlet规范中支持的Listener接口和Event类
  • 38. 所有关于Listener的配置信息都存储在Web应用的部署描述文件Web.xml中,Web容器通过此文件中的信息来决定当某个特定事件发生时,将自动创建对应的Listener对象的实例并调用相应的接口方法进行处理。
  • 39. 程序3-27:Web.xml(部分) ……… CounterPath count.txt ……………… ServletContextListener com.servlet.CounterListener ………………