JSP基础课件ch.ppt_第1页
JSP基础课件ch.ppt_第2页
JSP基础课件ch.ppt_第3页
JSP基础课件ch.ppt_第4页
JSP基础课件ch.ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章 JSP与Servlet编程 教学目标 教学重点 教学过程 *1 教学目标 w了解Servlet的优点与用途 w了解Servlet与JSP的区别 w掌握Servlet的方法 w了解Servlet的生命周期 w了解和掌握Servlet的类和接口 Date2 教学重点 wServlet与JSP的区别 wServlet的方法 wServlet的类和接口 Date3 教学过程 wServlet概述 w处理客户端提交的数据 wJSP+Servlet编程实例 Date4 9.1 Servlet概述 w什么是Servlet wServlet的优点 wServlet的用途 wServlet与JSP的区别 wServlet的方法 wServlet的生命周期 wServlet的类和接口 w状态代码 Date5 什么是Servlet wServlet是与JSP样在服务器端运行的Java应用程序的 一种。Servlet与JSP或者CGI一样,当浏览器端有请求 则将其结果传递给浏览器。文际上执行JSP文件的时候 ,首先JSP Container会将其转译为Servlet(*.java) 文件,并自动编译解释执行。JSP中使用到的所有对象 都将被转换为Servlet或者非Servlet的Java对象,然后 被执行,所以执行JSP实际上与执行Servlet是一样的。 从JSP的角度去看的话,Servlet实际上是JSP被解释执 行的中间过程,即JSP实际上是为了让Servlet的开发显 得相对容易而采取的脚本语言形式。简单来说, Servlet就是运行在服务器端的应用程序,Servlet接收 来自客户端的请求,将处理结果返回给客户端。 Date6 Servlet的优点 w功能强大。在Servlet中,许多使用传统CGI程序很难完 成的任务都可以轻松地完成。Servlet还能够在各个程 序之间共享数据,使得数据库连接池之类的功能很容 易实现。 w执行效率高。在传统的CGI中,每个请求都要启动一个 新的进程,如果CGI程序本身的执行时间较短,启动进 程所需要的开销很可能反而超过实际执行时间。而在 Servlet中,每个请求由一个次要的Java线程处理。而 不需要反复启动。这也叫“一次加载多次使用”。在传 统CGI中,如果有N个并发的进程对同一CGI程序发出 请求,则该CGI程序的代码在内存中重复装载了N次; 而对于Servlet,处理请求的是N个线程,只需加载一次 Servlet类代码。从而可以提高处理速度。 Date7 w开发难度低。相对于传统的CGI,Servlet有很多例程,可以完成 许多功能,如网络缓存、Cookies、还有会话跟踪,自动读取Http 表头等功能。开发者在这些功能完备的例程的基础上,轻松地开 发功能复杂的Web应用程序。 w可移植性好。Servlet是使用Java编写的,所以很好地继承了Java 的跨平台性特点。由于ServletAPI的规范很完备,所以几乎所有 的主流Web服务器,如Apache、MicrosoftIIS或者WebStar等,都 直接或者通过插件支持Servlet。 w性能更强。Servlet比CGI有着更多的选择,比如缓冲以前的计算 结果,保持数据库连接的活动等等。 Date8 Servlet的用途 w一个简单的Servlet可以处理使用HTML FORM在HTTPS 上使用POST传递的数据,复杂的Servlet(可能还会使 用RMI技术)可以用于实现定单输入和处理系统、生产 及库存数据库以及一个可能的联机支付系统。 w一个Servlet能并发处理多个请求;他们可以使用在诸 如在线会议这样的同步请求支持系统。 wServlet可以转送请求给其他的服务器和Servlet,按照 任务类型或组织范围,可以允许被用来在几个服务器 中划分逻辑上的服务器。 wServlet编写者们可以定义彼此之间共同工作的激活代 理,每个代理者是一个Servlet,而且代理者能够在它 们之间传送数据。 Date9 Servlet与JSP的区别 wServlet是一种在服务器端运行的Java程序,从 某种意义上说,它就是服务器端的Applet。所 以Servlet可以像Applet一样作为一种插件( Plugin)嵌入到Web Server中去,提供诸如 HTTP、FTP等协议服务甚至用户自已定制的协 议服务。而JSP是继Servlet后Sun公司推出的新 技术,它是以Servlet为基础开发的。Servlet与 JSP相比有以下几点区别: n编程方式不同 nServlet必须在编译以后才能执行 n运行速度不同 Date10 Servlet的方法 wServlet一般从Javax包的HttpServlet类扩 展而来,在HttpServlet中加入了一些附 加的方法,这些方法可以被协助处理 HTTP基本请求的HttpServlet类中的方法 service自动地调用。这些方法有: doGet、doPost、doPut、doDelete 、 doHead 、doOptions 、doTrace 。 Date11 wdoGet用来处理HTTP的GET请求。这个GET操 作仅仅允许客户从HTTP server上取得GET资源 。重载此方法的用户自动允许支持方法HEAD 。这个GET操作被认为是安全的,没有任何的 负面影响,对用户来说是很可靠的。 doGet方 法格式为: protected void doGet(HttpServletResquest request,HttpServletResponse response) throws ServletException,IOException; Date12 wdoPost用来处理HTTP的POST请求。这个POST 操作包含了在必须通过此Servlet执行的请求中 的数据。由于它不能立即取得资源,所以对于 那些涉及到安全性的用户来说,通过POST请 求操作会有一些副作用。 doPost方法格式为: protected void doPost(HttpServletResquest request,HttpServletResponse response) throws ServletException,IOException; Date13 wdoPut用来处理HTTP的PUT请求。此PUT操作 模拟通过FTP发送一个文件。对于那些涉及到 安全性的用户来说,通过PUT请求操作也会有 一些副作用。doPut方法格式为: protected void doPut(HttpServletResquest request,HttpServletResponse response) throws ServletException,IOException; Date14 wdoDelete用来处理HTTP的DELETE请求。 此操作允许客户端请求一个从server移出 的URL。对于那些涉及到安全性的用户来 说,通过DELETE请求操作会有一些副作 用。doDelete方法格式为: protected void doDelete(HttpServletResquest request,HttpServletResponse response) throws ServletException,IOException; Date15 wdoHead用来处理HTTP的HEAD请求。缺省地, 它会在无条件的GET方法执行时运行,但是不 返回任何数据到客户端。只返回包含内容信息 的长度的header。由于用到GET操作,此方法 应该是很安全的(没有副作用)也是可重复使 用的。 doHead方法格式为: protected void doHead(HttpServletResquest request,HttpServletResponse response) throws ServletException,IOException; Date16 wdoOptions用来处理HTTP的OPTIONS请求。此 操作自动地决定支持什么HTTP方法。比如说 ,如果读者创建HttpServlet的子类并重载方法 doGet,然后方法doOptions会返回下面的 header:GET、HEAD、TRACE和OPTIONS。 doOptions方法格式为: protected void doOptions(HttpServletResquest request,HttpServletResponse response) throws ServletException,IOException; Date17 wdoTrace用来处理HTTP的TRACE请求。此方法 的缺省实现产生一个包含所有在trace请求中的 header的信息的应答(response)。在开发 Servlet时,多数情况下需要重载此方法。 doTrace方法格式为: protected void doTrace(HttpServletResquest request,HttpServletResponse response) throws ServletException,IOException; Date18 Servlet的生命周期 wServlet的生命周期定义了一个Servlet如何被加 载、初始化,以及它怎样接收请求、响应请求 、提供服务。Servlet的生命周期如图。 Date19 wServlet的初始化 ninit方法被调用于初始化JSP/Servlet,其格式为: public void init(ServletConfig config) throws ServletException super.init(); n在初始化过程中,Servlet应当准备好它要安排的一 些资源,以便这个Servlet能够接收请求,做到这些 可以不用考虑多线程,因为在Servlet初始化时只能 是单进程的。一旦初始化方法完成,Servlet就能接 收客户端的请求。 Date20 wServlet的执行 nService方法可以用于实现事务逻辑,是处理请求的地方。在 服务器装载初始化Servlet后,Servlet就能够处理客户端的请 求,可以用service方法来实现。每个客户端请求有它自己 service方法。这些方法接收客户端请求,并且发回相应的响 应。Servlet能同时运行多个service。这样,service方法可以 按一个thread-safe样式编写。如service方法更新Servlet对象 中的一个字段field,这个字段是可以同时存取的。假如某个服 务器不能同时并发运行service方法,也可以用 SingleThreadModel接口。这个接口保证不会有两个以上的线 程(threads)并发运行。在Servlet执行期间其最多的应用是 处理客户端的请求并产生一个网页。 Date21 wServlet的结束 n当服务器卸载一个Servlet,它将调用Servlet的 destroy方法。这个destroy方法是与初始化方法相 反,同时从内存中释放Servlet。Destroy的格式为: public void destroy() n用户调用destroy实际上不会卸载Servlet,只有 Servlet引擎才可以实现此功能。 Date22 Servlet的类和接口 wServlet的相关类和接口有很多,都放在包javax.Servlet和包 javax.Servlet.http中。下面就其中主要的几个类和接口进行介绍 。 nServletInputStream类是一个抽象类,它提供了从客户机请求读取二 进制数据的一个输入流,对于一些协议,例如HTTP、POST和PUT, 可以使用ServletInputStream对象读取和发送数据。 nServletOutputStream类是一个抽象类,它提供了一个输出流,用于 向客户端发送数据。 nServletConfig接口定义了一个Servlet配置对象,Servlet引擎可以用来 传递信息给Servlet以便初始化Servlet。 nHttpServletRequest接口扩展了javax.Servlet.ServletRequest接口。 用于提供更多的功能给HTTP Servlet。Servlet引擎实现该接口,创建 HTTPServletRequest对象,将来自客户浏览器的信息传递给 HttpServlet的service方法。 Date23 状态代码 w在Web服务器应答中,应答中可能包括 状态代码处理。应答信息中的状态代码 中,可以提取需要的状态信息,从而做 出相应的处理。Servlet可以利用这些状 态代码来实现许多功能。例如,可以把 用户重定向到另一个网站;可以告诉用 户必须提供密码才能访问文档等等。常 见的状态代码以及它们对应的状态信息 和含义可以参看书中相应章节。 Date24 9.2 处理客户端提交的数据 w客户端向服务器端提交数据的方法一般 有GET和POST两种。相应的,覆盖 doGet方法和doPost方法就能够处理其中 的信息 。 Date25 9.3 JSP+Servlet编程实例 wJSP和Ser

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论