《JSP程序设计》教学课件(3)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 由于Servlet的种种优点,Java Servlet有着十分广泛的应用。它不 单单能简单地处理客户端的请求,借助Java的强大的功能,使用 Servlet还可以实现大量的服务器端的管理维护功能,以及各种特 殊的任务,具体有以下几方面: • (1)创建并返回一个包含基于客户端请求的动态内容的HTML页 面。 • (2)创建可嵌入到现有HTML页面中的HTML代码片断。 • (3)与其他服务器资源(包括数据库或基于Java的应用程序)进 行通信。 • (4)对特殊的处理采用MIME类型过滤数据。 • (5)当在允许以单连接方式传送数据的情况下,在浏览器上打 开服务器至Applet的新连接,并将该连接保持在打开状态。在客 户机和服务器简单、高效地执行会话的情况下,Applet也可以启 动客户浏览器和服务器之间的连接。可以通过定制协议或标准进 行通信。
7.1.4常用的Servlet API
• 1.public interface Servlet • 2.public abstract class GenericServlet implements Servlet,ServletConfig,java.io.Serializable • 3.public abstract class HttpServlet extends GenericServlet implements java.io.Serializable • 4.public interface ServletConfig • 5.public class ServletException extends Exception • 6.public class UnavailableException extends ServletException • 7.public interface HttpServletRequest extends ServletRequest • 8.public interface HttpServletResponse extends ServletResponse • 9.public interface HttpSession • 10.public interface ServletContext • 11.public interface RequestDispatcher
7.1.1Servlet简介
• Servlet是与平台无关的服务器端小程序, 从本质上讲,Servlet是一个Java类,除 图形界面以外,Java语言能实现的功能, Servlet基本上都能实现。 • Servlet主要用于处理客户端传来的HTTP 请求,并将处理结果以HTTP形式返回客 户端,从而生成动态网页。Servlet和客 户端协作是通过请求—响应模式来进行 处理,如下图所示。
7.2开发部署Servlet
• 虽然前面已经做了很多关于Servlet的知识讲解,但是要成功 运行Servlet还需要对其进行正确的配置。首先要编写Servlet 类文件,然后将类文件编译成字节码文件,并将字节码文件 复制到指定位置,此外还要在Web部署描述符文件web.xml 中添加相应的配置信息。完成这些工作后,即可通过客户端 直接请求Servlet,或者在JSP页调用Servlet。
第7章Servlet编程技术
• Servlet技术是目前流行的开发模式MVC 的基础,而JSP技术就是基于Java Servlet的。因此,要对JSP有更深入的了 解,就需要掌握Servlet。
7.1Servlet概述
• Servlet已经出现了很长时间,目前已经 是一种非常成熟的技术。JSP与Servlet结 合使用非常有效。
7.1.2Servlet与JSP的关系
• JSP和Servlet的关系十分密切。由于JSP是作为一种简化Servlet开发的替 代方法出现的,所有JSP页面在执行时都被转换为Servlet并被编译成字节 码文件,随后在Servlet容器中运行,因此人们往往误认为JSP是一种比 Servlet优秀并可以完全替代Servlet的技术。首先,从技术角度上看,JSP 和Servlet的功能很相似。另外,理论上JSP和Servlet也是可以相互替换的。 但是,随着学习的深入和在具体项目中应用经验的增加,会发现不能这 样简单地比较这两种技术,它们都有各自的优势和适应性。 JSP与Servlet之间的主要差异在于,JSP提供了一套简单的标签,和HTML 融合得比较好,即使不了解Servlet的用户也可以通过JSP创建动态网页。 因此,很多对Java语言不太熟悉的用户会觉得JSP开发比较方便。JSP页 面修改后可以立即看到效果,不需要手动编译,JSP引擎会自动完成这项 工作;而Servlet需要编译、重新启动Servlet引擎。 在Web应用开发中,通常可以将Servlet用作控制器,用于处理请求,一 旦Servlet完成了请求处理,即可将处理结果转交给JSP并呈现给用户。由 于JSP的跨平台特性,JSP技术在Web应用开发领域中愈来愈受人们的青 睐,而JSP、JavaBean和Servlet三者的有机结合则提供了一种理想的 Web应用解决方案。
7.2.2配置Servlet
• 对于每个Web应用,都可以创建一个部署描述符文件 web.xml,该文件应存放在WEB-INF目录中。在web.xml中, 顶层元素是<web-app>,所有子元素都必须包含在<webapp>和</web-app>之间。部署Servlet需要在web.xml文件 中添加两个元素:<servlet>元素和<servletmapping>元 素。其中,<servlet>元素是用来定义Servlet的,而<servlet mapping>元素则是为Servlet定义映射路径的。 • 配置web.xml的过程如下: • (1)在WEB-INF文件夹中新建web.xml文件。 • (2)在web.xml文件中添加如下配置代码:
• 下面给出Servlet整个 生命周期过程的UML 时序图。
7.1.4常用的Servlet API
• Java Servlet API是用于处理客户端与服务器之间请求和响应 的一组Java编程接口,使用Servlet API编写Servlet时,不必 关心Servlet怎样被装载,Servlet运行的服务器环境是什么, 或者用来传输数据的协议是什么等,只需使Servlet可以融合 在不同的Web服务器中。 • Java Servlet API由两个软件包组成:一个是对应于HTTP的 javax.servlet.http软件包,另一个则是不对应HTTP的 javax.servlet通用软件包。使用Servlet进行基于HTTP协议的 Web应用开发时,主要使用javax.servlet.http包中的类。 • Servlet中的API有很多,这里只介绍一些常用的接口和类, 以便对Servlet框架有一个比较全面的了解。
• 下面开发并部署一个非常简单的Servlet实例,运行该Servlet 实例后,浏览器中将显示“Hello,Servlet World!”字符串。
7.2.1创建Servlet
• Servlet实际上就是一个从HttpServlet继承的类,创建Servlet就是编写 Java源文件并定义一个类。要创建一个Servlet需要完成以下四个方面的 工作: • (1)声明一个类,该类继承自HttpServlet类。 • (2)重载HttpServlet类的部分方法,如service()、doGet()或 doPost()方法。 • (3)通过HttpServletRequest对象检索表单参数或URL参数。 HttpServletRequest对象以名称/值形式存储表单参数或URL参数,可以通 过该对象的getParameter()、getParameterNames()以及 getParameterValues()方法来检索这些参数。 • (4)通过HttpServletResponse对象生成HTTP响应结果。 HttpServletResponse对象有一个getWriter()方法,调用该方法可以返 回一个PrintWriter对象。利用PrintWriter对象的print(t是Java技术对CGI(通用网关接口)编程的回应,但与传统的CGI和许多 其他类似CGI的技术相比,Java Servlet具有更高的效率,更容易使用,功能更强 大,并具有更好的可移植性,更节省投资。
• •
• •
• •
Servlet的主要优点有以下几点: (1)可移植性。Servlet是利用Java语言开发的,因此延续Java在跨平台上的表 现,不论Server的操作系统是Windows、Linux、FreeBSD或AIX等,都能够很好 地执行。当程序员在开发Applet 时,“可移植性(portability)”是比较难以解决 的问题。例如,开发Applet时,为了配合客户端的平台(即浏览器版本的不同, plug-in的JDK版本也不尽相同),达到满足真正“跨平台”的目的时,需要花费 大量时间来修改程序。但即使如此,往往也只能满足大部分用户,而其他少数 用户若要执行Applet,仍须先安装合适的JRE (Java runtime environment)。但 是如果使用Servlet就比较简单了,主要原因在于Servlet 是在Server 端执行的。 (2)强大的功能。Servlet能够完全发挥Java API 的威力,包括网络和URL 存取、 多线程(multithread)、影像处理、RMI(remote method invocation)、分布式 服务器组件(enterprise Java bean)、对象序列化(object serialization) 等。 (3)高性能。Servlet 在加载执行之后,其对象实体(instance)通常会一直停留 在Server的内存中,若有请求(request)发生时,服务器再调用Servlet 来服务, 若收到相同服务的请求时,Servlet会利用不同的线程来处理,不像CGI程序必须 产生许多进程(process)来处理数据。因此在性能的表现上,Servlet大大超越CGI 程序。 而且Servlet在执行时,不是一直停留在内存中,服务器会自动将停留时间过长、 一直没有执行的Servlet从内存中移除,这个过程用户也可以自行编写程序来控 制。其停留时间的长短通常和选用的服务器有关。 (4)安全性高。Servlet也有类型检查(type checking)的特性,并且由于Java的 垃圾收集(garbage collection)与没有指针的设计,使得Servlet 避免了内存管理 的问题。由于在Java的异常处理(exception handling)机制下,Servlet能够安全 地处理各种错误,不会因为发生逻辑错误而导致整体服务器系统的毁灭。
7.3.1Servlet调用方式
•
•
7.1.3Servlet的生命周期
• Servlet的生命周期定义了一个Servlet如何被加 载、初始化,以及它怎样接收请求、响应请求、 提供服务。Servlet部署在容器里,它的生命周 期由容器管理。 • Servlet的生命周期可以概括为以下几个阶段: • 1.加载Servlet • 2.初始化 • 3.处理客户请求 • 4.卸载Servlet
7.2.3Servlet的运行
• 在配置环境变量后,需要重新启动Tomcat服务器,然后在浏 览器中输入“http://localhost:8080/useServ/FirstServlet”。
7.3Servlet调用
• 创建并部署一个Servlet后,就可以在HTML页面、JSP页面或 另一个Servlet中调用它了。