1、构建构建Web应用技术应用技术服务器端技术服务器端技术服务器端逻辑体系结构服务器端逻辑体系结构B/S交互动作:交互动作:浏览器的每一个动作都产浏览器的每一个动作都产生一个对服务器的请求,服务器处理这生一个对服务器的请求,服务器处理这个请求计算结果,生成一个新的页面发个请求计算结果,生成一个新的页面发送到客户端送到客户端。优点:优点:客户端初次启动快、对客户端资源客户端初次启动快、对客户端资源要求低。要求低。支持的技术:支持的技术:服务器端技术,如服务器端技术,如JSP Java Servlet、ASP等。等。服务器端技术发展服务器端技术发展静态 -动态 SSI(Server Side Incl
2、udes) 1993年,CGI 1.0 发布。1994年,发明PHP1996年 ,ASP技术引入 1997年,Servlet技术问世 1998年,JSP技术诞生 服务器端技术概况服务器端技术概况目前在服务器端生成动态页面的技术有:目前在服务器端生成动态页面的技术有:公共网关接口公共网关接口服务器端脚本技术服务器端脚本技术服务器端插件技术服务器端插件技术(API)Servlet技术技术JSP技术技术中间件技术中间件技术最早的最早的服务器端服务器端网页生成网页生成技术技术- SSI SSI通常称为服务器端嵌入,是一种基于服通常称为服务器端嵌入,是一种基于服务器的网页制作技术;务器的网页制作技术;
3、在以在以.shtml为扩展名的为扩展名的SSI文件中,包含标文件中,包含标准的准的HTML编码和编码和SSI指令;指令;标准的标准的HTML编码会被直接送到浏览器上,编码会被直接送到浏览器上,而内嵌的而内嵌的SSI命令则先被网络服务器解释执行,命令则先被网络服务器解释执行,输出信息也将作为标准的输出信息也将作为标准的HTML而被送至浏览而被送至浏览器。器。最早的最早的服务器端服务器端网页生成网页生成技术技术- SSI SSI example 新闻 新闻更新日期: *功能非常有限 CGI概述概述 CGI (Common Gateway Interface) :通用网关接口是通用网关接口是第一种真
4、正使服务器能根据第一种真正使服务器能根据运行时的具体情况,动态生成运行时的具体情况,动态生成HTML页面的技页面的技术术 。通过通过CGI接口,接口,Web服务器能够执行服务器能够执行CGI应用程序,应用程序,接收用户的输入,接收用户的输入,并将应并将应用程序的输出,如文字、图形、声音等传用程序的输出,如文字、图形、声音等传递给一个递给一个Web浏览器。浏览器。 CGI程序语言程序语言:C、Shell、Perl和和Visual Basic 等。等。CGI概述概述 CGI程序在程序在UNIX系统中放在系统中放在cgi-bin子目录子目录下下,在在Windows系统中放在系统中放在cgi-win子
5、目录下。子目录下。CGI程序两种调用方式:程序两种调用方式: (1)URL调用:调用: http:/gjy.sic.o.ml.org/cgi-win/cgi.exe (2)HTML里的里的Form调用,处理表单。调用,处理表单。CGI工作流程:获取工作流程:获取HTTP请求信息;执行请求信息;执行CGI程序;生成程序;生成HTML文件返回浏览器。文件返回浏览器。CGI 工作原理工作原理 Unix平台下,平台下,Web服务器与服务器与CGI程序通过输入流程序通过输入流scanf获得获得用户输入、输出流用户输入、输出流printf生成输出结果;生成输出结果;Windows平台下通过文件系统来实现平
6、台下通过文件系统来实现Web服务器与服务器与CGI程序程序的信息交流。浏览器的当前文件使用的信息交流。浏览器的当前文件使用get,post等方法调用等方法调用CGI程序,并将要传送的信息送到服务器端程序,并将要传送的信息送到服务器端 。CGI通过标准输入通过标准输入(STDIN)获取用户输入信息,通过标准输出()获取用户输入信息,通过标准输出(STDOUT)向用户传递结果。向用户传递结果。 WebServerCGIProgramhttp:/server/form-proc.exeHTMLCGI 工作原理工作原理(Windows平台平台)CGI程序执行程序执行CGI是运行在服务器上的程序。它可以
7、用任是运行在服务器上的程序。它可以用任何语言编写何语言编写 - 只要能够在你的服务器上运行。只要能够在你的服务器上运行。CGI 脚本可能是一个编译好的程序或者批命脚本可能是一个编译好的程序或者批命令文件或者其他可执行的程序。令文件或者其他可执行的程序。服务器端对每个服务器端对每个CGI请求产生一个新的进程。请求产生一个新的进程。CGI程序执行程序执行编程语言编程语言 :C/C+Perl是Practical Extraction and Report Language的缩写TCL即Tool Command Language,它是高级的跨平台的 Script语言VB缺点:缺点:每次对CGI的请求产
8、生新进程,会限制服务器处理多请求的能力。 服务器端脚本技术服务器端脚本技术页面中嵌入脚本,页面被请求时脚本由服务器页面中嵌入脚本,页面被请求时脚本由服务器解释执行,产生动态内容解释执行,产生动态内容 。可采用的技术:可采用的技术: IBM Net.data MicroSoft: ASP Allaire: ColdFusion PHP 缺点缺点:局限于特定web服务器产品和OS CGI与与PHP、ASP1994年,Rasmus Lerdorf发明了专用于Web服务端编程的PHP(Personal Home Page Tools)语言;PHP语言将HTML代码和PHP指令合成为完整的服务端动态PH
9、P页面文件、具有PHP文件处理功能的WEB服务器生成HTML文档;1996年,Microsoft借鉴PHP的思想,在其Web服务器IIS 3.0中引入了ASP技术。ASP使用的脚本语言是我们熟悉的VBScript和javascript。 CGI与与PHP、ASP?php$db = mysql_connect(“localhost”, “root”);mysql_select_db(“mydb”,$db);$result = mysql_query(“SELECT * FROM employees”,$db);printf(“First Name: %sn”, mysql_result($res
10、ult,0,“first”);printf(“Last Name: %sn”, mysql_result($result,0,“last”);?服务端插件技术服务端插件技术插件插件即英文的即英文的Plug-In,它也是程序,它是用,它也是程序,它是用遵循一定规范的遵循一定规范的API编写出来的。编写出来的。Web浏览器浏览器和服务器都能够直接调用插件代码。插件和服务器都能够直接调用插件代码。插件(Plug-In)软件安装之后,就成为他们的一)软件安装之后,就成为他们的一部分,处理特定类型的请求。最著名的部分,处理特定类型的请求。最著名的API是是Netscape公司的公司的NSAPI和和Mic
11、rosoft公司的公司的ISAPI.缺点:缺点:由于由于NSAPI或或ISAPI是动态链接的方式,是动态链接的方式,因此在执行时若出现问题,会导致因此在执行时若出现问题,会导致Web服务服务器瘫痪器瘫痪 ;对平台的依赖性太高;只能使用对平台的依赖性太高;只能使用C语语言开发。言开发。服务端服务端APIAPI(Application Program Interface):):应用程序接口应用程序接口API解决多线程问题,而解决多线程问题,而CGI无法实现多线无法实现多线程程API使用动态链接库使用动态链接库 只能用只能用C语言编写语言编写两种两种API:Netscape公司的公司的NSAPI 和
12、和 Microsoft的的ISAPI服务端服务端API Netscape和和MicroSoft 公司分别提供了基于本身公司分别提供了基于本身的的Web服务器的服务器的API调用调用: Netscape NSAPI、MicroSoft ISAPI基本思路基本思路是由是由HTTP守护进程守护进程加载可独立执行的加载可独立执行的CGI程序改为加载动态链接库,取消了启动与释放程序改为加载动态链接库,取消了启动与释放进程的开销进程的开销 。APIProgramhttp:/server/apiprocHTMLWebServer服务端服务端APIISAPI示例网页示例网页输入注册信息输入注册信息:姓名姓名:
13、地址地址:信箱信箱:服务端服务端API优点:优点:1)执行速度快;)执行速度快; 2)多线程处理多用户访问。)多线程处理多用户访问。缺点:缺点:1)NSAPI 及及 ISAPI 对网站平台的依赖型太对网站平台的依赖型太高;高; 2)NSAPI 及及 ISAPI 只提供只提供 C 程序语言的界程序语言的界面;面;3)影响)影响Web服务器的稳定性。服务器的稳定性。Java Servlet 技术技术Servlet 是什么?是什么? Servlet是一种用是一种用Java写的写的Web组件,组件, 是是Java的扩展类,它的目的是产生动态内容;的扩展类,它的目的是产生动态内容;Servlet组件使用
14、组件使用Java Servlet API 提供的类提供的类和方法;和方法;Servlet组件在组件在Web容器中执行,容器中执行, Web容器提容器提供运行时的服务;供运行时的服务;启动启动 Web 服务器或客户机第一次请求服务时,服务器或客户机第一次请求服务时,可以自动装入可以自动装入 Servlet。装入后,。装入后, Servlet 和和采用轻量级线程响应多个客户机发出的请求采用轻量级线程响应多个客户机发出的请求 ;Servlet技术技术Java Servlet是一种在服务器端运行的小型是一种在服务器端运行的小型Java程程序。它可以作为一种插件嵌入到序。它可以作为一种插件嵌入到Web服
15、务器中,提服务器中,提供诸如供诸如HTTP,FTP等协议服务或用户订制的协议等协议服务或用户订制的协议服务。服务。Servlet可以从可以从HTML表单中获取数据,进行表单中获取数据,进行网站数据库的更新。网站数据库的更新。http:/server/servlet/helloWeb Serverhello.classServletEngineServlet技术技术ServletServlet就是就是Java ServletJava Servlet ,是一个,是一个JavaJava类,是一类,是一个基于个基于JavaJava技术的运行在服务器端的程序;技术的运行在服务器端的程序;Servlets
16、Servlets是是JAVA 2.0JAVA 2.0中新增的一个全新功能中新增的一个全新功能, 是一是一种采用种采用JAVAJAVA技术来实现技术来实现CGICGI功能的一种技术;功能的一种技术;ServletServlet运行于由运行于由ServletServlet引擎所管理的引擎所管理的JavaJava虚拟机虚拟机中,被来自中,被来自WebWeb客户机的请求所唤醒并用来处理请客户机的请求所唤醒并用来处理请求;求; 主要主要依赖依赖两个软件包(两个软件包(APIAPI):):Javax.servletJavax.servlet包和包和Javax.servlet.httpJavax.servl
17、et.http包;包;ServletServlet的开发工具:的开发工具:J2SDKJ2SDK开发工具箱、开发工具箱、JbuilderJbuilder 等集成开发工具。等集成开发工具。Servlet技术技术-特性特性持久性和性能持久性和性能:JAVA Servlet来说,在来说,在JAVA 虚拟机上,虚拟机上,每一个请求由一个每一个请求由一个小小JAVA线程线程(thread)响响应,而不是一个应,而不是一个大大操作系统进程。操作系统进程。 基于基于Java,具有,具有Java的的 优势优势 。JAVA Servlet API定义了定义了JAVA Servlet 和和Web服务器软件之间的接口
18、。服务器软件之间的接口。JSP (Java Server Pages)JSP网页就是在网页就是在HTML网页中包含了能够生网页中包含了能够生成动态内容的可执行应用程序代码成动态内容的可执行应用程序代码(JSP标标记记); JSP用于创建可支持跨平台及跨用于创建可支持跨平台及跨Web服务服务器的动态网页器的动态网页 ;可以调用用可以调用用Java类访问外部应用和数据资类访问外部应用和数据资源;源;JSP将应用程序逻辑和页面显示分离将应用程序逻辑和页面显示分离 。JSP 例例WelcomeToday is Day: Year: JSP 例例 Good Morning Good AfternoonJ
19、SP与与Java ServletJSP技术的特点技术的特点内容表达与数据生成分离内容表达与数据生成分离更好的更好的M/V/C易用性易用性移植与跨平台移植与跨平台基于基于Java支持协作开发支持协作开发JSP与其它动态网页技术比较与其它动态网页技术比较 与传统的与传统的CGI方式相比方式相比 JSP和和ASP相比相比JSP和纯和纯Servlet相比相比JSP和和JavaScript相比相比几种服务器端技术的比较几种服务器端技术的比较本节结束Servlet&JSP 开发技术开发技术Java Servlet 开发技开发技术术采用采用Servlet 的原因的原因 性能比性能比CGI高效高效 Servl
20、et可轻松地处理多个并发请求可轻松地处理多个并发请求 Servlet 是什么?是什么? Servlet是一种用Java写的Web组件, 是Java的扩展类,它的目的是产生动态内容;Servlet组件使用Java Servlet API 提供的类和方法;Servlet组件在Web容器中执行, Web容器提供运行时的服务;启动 Web 服务器或客户机第一次请求服务时,可以自动装入 Servlet。装入后, Servlet 和采用轻量级线程响应多个客户机发出的请求 ; Java Servlet运行运行Java Servlet是一种在服务器端运行的Java程序。它可以提供诸如HTTP,FTP等协议服务
21、或用户订制的协议服务。Servlet可以从HTML表单中获取数据,并可进行数据处理和更新。Servlet 的功能的功能 ?创建并返回一个包含基于客户请求性质的动态且创建并返回一个包含基于客户请求性质的动态且内容完整的内容完整的 HTML页面页面 ;创建可嵌入到现有创建可嵌入到现有 HTML 页面中的一部分页面中的一部分 HTML 页面页面 ;与其它服务器资源(包括数据库和基于与其它服务器资源(包括数据库和基于 Java 的的应用程序)进行通信;应用程序)进行通信; 处理与多个客户机处理连接,接收多个客户机的处理与多个客户机处理连接,接收多个客户机的输入,并将结果广播到多个客户机上(网络游戏输入
22、,并将结果广播到多个客户机上(网络游戏服务)服务) ;作为数据过滤器(作为数据过滤器(Filter ),在调用),在调用Servlet之前之前或之后调用或之后调用;作为服务器的标准公用服务例行程序,被其它作为服务器的标准公用服务例行程序,被其它Servlet调用。调用。Servlet 的功能的功能 ?Servlet经常用于处理如下任务:经常用于处理如下任务:检查和处理用户输入检查和处理用户输入处理重要的业务逻辑处理重要的业务逻辑数据库查询、更新数据库查询、更新处理复杂的处理复杂的Web事务事务处理处理Web页面的转发操作页面的转发操作Java Servlet生命周期生命周期Servlet生命期
23、周期生命期周期-初始化初始化装入时刻:装入时刻:启动服务器时自动装入启动服务器时自动装入; 首次向首次向 Servlet 发出请求时发出请求时 ;重新装入重新装入 Servlet 时。时。装入装入 Servlet 后:后:创建一个创建一个 Servlet 实例实例(而不是多个而不是多个);调用调用 Servlet 的的 init() 方法;方法;Servlet 初始化参数被传递给初始化参数被传递给 Servlet 配置对象;配置对象;特定特定Servlet 如需要初始化特有的资源,需要重载如需要初始化特有的资源,需要重载init()方法,并在方法最后呼叫方法,并在方法最后呼叫super. in
24、it() 。Servlet生命期周期生命期周期-请求处理请求处理服务器将每个客户请求包装成服务器将每个客户请求包装成Servlet接接受的受的“请求请求”对象和对象和 “响应响应”对象;对象;调用调用 Servlet 的的 service() 方法用于传递方法用于传递“请求请求”和和“响应响应”对象;对象;service() 方法从方法从“请求请求”对象获得请求对象获得请求信息、处理该请求并用信息、处理该请求并用“响应响应”对象的方对象的方法以将响应传回客户机;法以将响应传回客户机;HttpServlet 类有自己的类有自己的service() 方法,方法,该方法可以调用其它子方法来处理请求,
25、该方法可以调用其它子方法来处理请求,通常是通常是doGet()、doPost() 或其它的方法。或其它的方法。Servlet生命期周期生命期周期-终止终止当服务器卸载当服务器卸载 Servlet(实例)时,调用(实例)时,调用 该该Servlet 的的 destroy() 方法终止当前方法终止当前Servlet实实例的运行,释放资源。例的运行,释放资源。特定特定Servlet 如需要特有的资源关闭,需要如需要特有的资源关闭,需要重载重载destroy() 方法,并在方法最后呼叫方法,并在方法最后呼叫super.destrory()。Servlet生命期周期生命期周期基于基于Servlet的的W
26、eb交互交互Java Servlet API Java Servlet 开发工具(开发工具(J2SDK)提供了多个软件)提供了多个软件包,在编写包,在编写 Servlet 时需要用到这些软件包;时需要用到这些软件包;J2SDK包括两个用于所有包括两个用于所有 Servlet 的基本软件包:的基本软件包: javax.servlet ( 7个接口个接口5个类)个类) javax.servlet.http ( HTTP Servlet 5个接口个接口4个类个类) Java Servlet API包含在上述两个包中;包含在上述两个包中;The Servlet API is a set of Java
27、 classes which define a standard interface between a Web client and a Web server.Java Servlet API ?实现实现Java Servlet 接口的两个基类接口的两个基类: javax.servlet.GenericServlet (属于javax.servlet包包) javax.servlet.http.HttpServlet (属于属于javax.servlet.http包包)HttpServlet类扩展了GenericServlet类,添加了处理HTTP请求的方法。Severlet类的继承类的继承
28、 HTTP Servlet的请求的请求/响应流程响应流程 浏览器发出浏览器发出HTTP请求对象请求对象Request对象;对象;Web容器将请求数据封装:容器将请求数据封装: 请求对象请求对象Request- HttpServletRequest 响应对象响应对象Response-HttpServletResponse 调用调用HTTP Servlet中的中的service方法:方法: service(HTTP ServletRequest reg, HTTP ServletResponse res)HTTP Servlet中的中的service方法根据请求,调用子方法根据请求,调用子方法方法
29、doGet、doPost、doPut、doDelete等子方等子方法生成响应结果。法生成响应结果。表单中调用表单中调用 HTTP Servlet HTML 表单是由表单是由 和和 标记标记定义,表单中包含输入字段(如文本输入字段、定义,表单中包含输入字段(如文本输入字段、复选框、单选按钮和选择列表)和用于提交数复选框、单选按钮和选择列表)和用于提交数据的按钮。据的按钮。提交信息时,可指定服务器应执行哪一个提交信息时,可指定服务器应执行哪一个Servlet 。 HttpServlet 类包含类包含 init()、destroy()、service() 等方法。其中等方法。其中 init() 和和
30、 destroy() 方方法是继承法是继承Servlet的的 。Java Servlet API - init() 方法方法 在在 Servlet 的生命期中,仅执行一次的生命期中,仅执行一次 init() 方法。它是在服务器装入方法。它是在服务器装入 Servlet 时执行的时执行的 。缺省的缺省的 init() 方法设置了方法设置了 Servlet 的初始化的初始化参数,并用参数,并用 ServletConfig 对象的参数来表对象的参数来表示初始化配置示初始化配置。重载重载init() 方法可增加功能,如一次方法可增加功能,如一次GIF 图图像装入像装入 、初始化数据库连接。但应调用、初
31、始化数据库连接。但应调用 super.init() 以确保缺省的以确保缺省的 init() 方法完成设方法完成设置置 Servlet 的初始化参数。的初始化参数。Java Servlet API - service() 方法方法设计设计HTTPServelet的处理逻辑,一般的处理逻辑,一般只需覆盖只需覆盖service() 方法的方法的 子方法子方法doget()、dopost方法即可。方法即可。HttpServlet的其它子方法还有:的其它子方法还有: doPut()、 doDelete() 、doTrace()HttpServlet类扩展了类扩展了GenericServlet类,继承了所
32、有标准类,继承了所有标准Servlet的功能。的功能。Java Servlet API - destroy() 方法方法当服务器卸载当服务器卸载 Servlet 时,需在所有时,需在所有 service() 方法调用完成后,或在指定的时间方法调用完成后,或在指定的时间间隔过后调用间隔过后调用 destroy() 方法。方法。一个一个Servlet 在运行在运行service() 方法时可能会方法时可能会产生其它的线程,因此请确认在调用产生其它的线程,因此请确认在调用 destroy() 方法时,这些线程已终止或完成。方法时,这些线程已终止或完成。重载重载destroy() 方法可附加其它功能,
33、如管理方法可附加其它功能,如管理服务器端资源服务器端资源 。ServletRequest类定义的方法类定义的方法Servlet 的请求对象的请求对象ServletRequest封装请求参数,封装请求参数,响应对象响应对象ServletRepones封装输出结果封装输出结果。请求对象请求对象ServletRequest中可用的方法有:中可用的方法有:getCharacterEncoding: 获得请求的编码格式信息获得请求的编码格式信息isSecure: 确定请求是否通过安全通道发出确定请求是否通过安全通道发出getParamentName: 获得请求中所有参数名列表获得请求中所有参数名列表ge
34、tRemoteAddr: 获得客户端获得客户端IPgetParament: 检索与命名参数关联的第一个参数的值检索与命名参数关联的第一个参数的值(多多选选/同名同名)getParamentValues:检索与命名参数类型关联的多个参检索与命名参数类型关联的多个参数的值数的值ServletRepones类定义的方法类定义的方法响应对象响应对象ServletRepones中可用的方法有:中可用的方法有:getOutStream: 获得获得ServletOutStream对象用于二进制输出对象用于二进制输出getWrite:获得获得PrintWrite对象用于字符数据输出对象用于字符数据输出setB
35、uffferSize:为响应建立内存缓冲为响应建立内存缓冲flushBuffer: 更新当前缓冲区内容更新当前缓冲区内容 Servlet API - GetServletConfig()方法()方法返回一个返回一个 ServletConfig 对象,调用该对象对象,调用该对象中的方法可用来返回当前中的方法可用来返回当前Servlet的初始化参的初始化参数和数和 ServletContext接口。接口。ServletContext 接口提供有关接口提供有关servlet 的环的环境信息。境信息。ServletConfig 对象和对象和ServletContext 接口接口的初始参数来源于的初始参
36、数来源于web.xml文件。文件。 获取获取Servlet初始参数和运行环境初始参数和运行环境ServletConfig 对象的方法:getInitParamenter(String):返回指返回指定参数名的初始值;定参数名的初始值;getInitParamenterName():返回初返回初始参数名的集合;始参数名的集合;getServletContext():返回返回Servlet的的运行环境对象运行环境对象ServletContext,Servlet用用ServletContext对象与容器对象与容器通信通信;Java Servlet 与与web.xmlServlet Definitio
37、n in web.xml registerpatron Java Servlet 与与web.xml(续)(续) com.borland.samples.welcome.registerPatron registerpatron /registerpatronServletContext 接口每种每种 Servlet都运行在一定的环境中都运行在一定的环境中,ServletContext提供有关提供有关servlet 的环境信息;的环境信息;Web容器中的一个容器中的一个Web应用对应一个应用对应一个ServletContext, Servlet可使用可使用ServletConfig 对象的对象
38、的 getServletContext方法方法获得它所运行时的获得它所运行时的ServletContext对象。对象。Java Servlet API - GetServletInfo()方法()方法GetServletInfo()方法提供有关()方法提供有关servlet 的信息,如作者、版本、版权的信息,如作者、版本、版权 。创建创建HTTP Servlet创建一个创建一个 HTTP Servlet,通常涉及下列四个,通常涉及下列四个步骤步骤 扩展扩展 HttpServlet 抽象类抽象类 重载适当的方法。如覆盖(或称为重写重载适当的方法。如覆盖(或称为重写)doGet() 或或doPos
39、t()方法方法 如果有如果有 HTTP 请求信息的话,获取该信息。请求信息的话,获取该信息。从从 HttpServletRequest 对象中检索对象中检索 HTML 表格所提交的数据或表格所提交的数据或 URL 上的查询字符串上的查询字符串生成生成 HTTP 响应响应 创建创建HTTP Servlet响应响应HttpServletResponse是是“响应响应”对象;对象; “响应响应”对象包含对象包含 getWriter() 方法,该方方法,该方法返回一个法返回一个 PrintWriter类型的对象;类型的对象;使用使用 PrintWriter对象的对象的 print() 和和 print
40、ln() 方法编写方法编写 Servlet 响应内容;响应内容;out对象是缺省说明对象是缺省说明的的PrintWriter类型对象,类型对象,可直接使用;可直接使用;HTTP Servlet例例(一一)RegisterPatron Servlet 代码RegisterPatron.javapackage com.ibm.ils.library.servlets;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http
41、.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class RegisterPatron extends HttpServlet public void (HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException processRequest(req, resp); HTTP Servlet例例(一一)publ
42、ic void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException processRequest(req, resp);private void processRequest(HttpServletRequest req,HttpServletResponse resp) throws IOException, IOException HTTP Servlet例例(一一) PrintWriter out=resp.getWriter(); int id=Libr
43、aryIdGenerator.generatorID(First,Last); out.println(); out.println(添加资助人添加资助人 ); out.println(); out.println(); out.println(patron with id +id+ has been added.); out.println(); out.println();HTTP Servlet样例(二)样例(二)import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;
44、public class ServletSample extends HttpServlet / 第一步:第一步: 扩展扩展 HttpServlet 抽象类。抽象类。public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException / 第二步:重写第二步:重写doGet()方法方法 HTTP Servlet样例(二)样例(二) String myName = ; / 第三步:获取第三步:获取HTTP 请求信息请求信息java.util
45、.Enumeration keys = request.getParameterNames();while (keys.hasMoreElements();key = (String) keys.nextElement();if (key.equalsIgnoreCase(myName)myName = request.getParameter(key); if (myName = )myName = Hello;一个一个 HTTP Servlet样例(二)样例(二)/ 第四步:生成第四步:生成 HTTP 响应响应。response.setStatus(HttpServlet.SC_OK);
46、response.setContentType(“text/html”);response.setHeader(Pragma, No-cache);response.setDateHeader(Expires, 0);response.setHeader(Cache-Control, no-cache); PrintWriter out= response.getWriter(); out.println(); out.println(Just a basic servlet);out.println();一个一个 HTTP Servlet样例(二)样例(二)out.println(Just
47、a basic servlet);out.println ( + myName + , this is a very basic servlet that writes an HTML page.);out.println (running those samples on your Web应用服务器, +open the page:);out.println(); out.flush(); HTTP Servlet样例样例上述ServletSample类扩展 HttpServlet 抽象类、重写doGet()方法。在重写的doGet()方法中,获取HTTP 请求中的一个任选的参数(myNam
48、e),该参数可作为调用的 URL 上的查询参数传递到 Servlet。使用示例如下:http:/your.server.name/servlet/ServletSahttp:/your.server.name/servlet/ServletSample?mynamemple?myname=Michael=Michael 处理处理HTTP Request的步骤的步骤处理输入数据(请求字符串或处理输入数据(请求字符串或form表单)表单)处理处理HTTPRequest头部给出的属性值头部给出的属性值处理处理/调用商务逻辑调用商务逻辑设置设置HTTPResponse响应响应状态状态和文档内容格式和文
49、档内容格式设置设置HTTPResponse响应的其它头部信息响应的其它头部信息向向HTTP Response响应对象中输出响应内容响应对象中输出响应内容(HTTP 规范参见规范参见www.w3.org RFC2616)调用调用 Servlet由由 URL 调用(浏览器、调用(浏览器、HTML)在在 标记中调用标记中调用在在 JSP 文件中调用文件中调用URL 调用调用 Servlet应用服务器管理器可注册应用服务器管理器可注册Servlet,同,同时指定时指定Servlet 名称名称:http:/your.server.name/servlet/hi可以指定可以指定 Servlet 和类使用同
50、一名称。和类使用同一名称。使用使用 Servlet 别名:应用服务器别名:应用服务器 管理管理器来配置器来配置 Servlet 别名别名 。在在 标记中调用标记中调用 ServletAMFM (表单完成(表单完成GET方法的方法的URL参数编码)参数编码)在在 JSP中调用中调用 Servlet(= JSP1.0)Servlet 高级特性高级特性- Response RedirectionRedirect the servlet response to:-Another servlet-An error page (HTML or JSP) URL must be available to t