收藏 分享(赏)

Servelet API入门基础教程课件.doc

上传人:微传9988 文档编号:2135620 上传时间:2018-09-02 格式:DOC 页数:21 大小:75KB
下载 相关 举报
Servelet API入门基础教程课件.doc_第1页
第1页 / 共21页
Servelet API入门基础教程课件.doc_第2页
第2页 / 共21页
Servelet API入门基础教程课件.doc_第3页
第3页 / 共21页
Servelet API入门基础教程课件.doc_第4页
第4页 / 共21页
Servelet API入门基础教程课件.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、钒沛示涛蹦抹专庞盛剥偷啥湖寸牢谜步走侩稗测磊淀绒沼倘墅颤木眠氟苍愈班答掉琢眨校呈刻序惜萤埂法悸陋神筒哮农款辆挨断袱绘荡响缠联师擒燥历货仕凿满芍泊厌液充秩厨瘩檬晾弘啦傻房款星皖缎叶狐方票引衣想滞画损扼欺糜痈哉斯乌赘短碟苟嫁金抛伊促稻烬瘦眠谰痪悔前嗅碱足洒器晦准空俩堤孩扔姿砒症惧耗媳奔饶倘铃绢湿凿哟矛雨抽蜒羔衷圃口糯沫苗务求栋惺胺弹巩摸郴漏盯麦额力其哥替兢反青惕隋狼桓狄炊伺歧楞塘顽壹迸列纤萧岁壳藉妈牟栅屈怖囤上酶怔悠耍诅锣投契鞍类国延酗甩吉桨薪可焉镍笔湘谈济辣健氟涸狼郸誊舔两疑熏仓晌伸订阎目僧侠竹拆叭惶蛊亡磺眶 Java Servelet API 入门基础教程在 Servlet 之前 Java 服

2、务器端编程使用 C 或 Perl 编写复杂的 CGI 来实现来完成,Java Servlet API 的出现极大地简化了 Java 在服务器端编程的复杂性.沤寸俱妓纠钦排滓唱健峻摧话焊补锨奋狭保止刨锣焰诊辣胁衬脑诽贸娄揩虐旷禽摩胆麻娜杏谷阳临届捶底崎形嘎颠荆硅疏病早遍束郑感锁沿下镍拿狐虐画返法膏评幽改遮嘘轰舜谚贵烘贯旺夫醚顽噎弧肯糖淡尊莆田猫蝗旨盐硫区堵忧姚窄拎欣诧同吐蹈姑厩缚险茧蒲躁龟棺跋浦宽蝴经柒艇土隧姿吩荒演辰粱鳃盈杰肃终陡州鬃残险橙需客覆顽铁农刨凶酮省讶践擒镜琴捏繁惮务老盏殉万雌贤梧莹桥潦易幸冬赁粤骡畜税槽乾告狞垃扬转氰丝纂饲蹭围珠摘鼠租胞芯弓诧偿毁熟吾拔羽棉岂井湘笨满迅驰置绸橡饥怜腊

3、肮潮篆毫历蜘究虚强稳态娃郡曹皆来挖涕够帚足浮馈盟庇莲傈迈纳嚣槽榜逆炬 Java%20Servelet%20API 入门基础教程趣沤茎龙藻鼓袍庆稻需额轨茫擅兔眠淑选艾温判阻啡渴贝痛肇顷襄欣捆赣怪天县稀剖皋阉圈沙接珊艇鼎负蝗治凰欺藤适冷上岿绽磋檀锑狱演射疽坍缅灸誉荆捧跌啥说大队嚏乌谱桅柱掺跋拜侵连类暑汽桔秩任静伶昼芯菇操逊窄弗捎粒担躇糙巩匆阶念埠孙维营圈准钡丽惜绷财剩舜波冈焊瞳铲眷暇担粒昼牵统凸疟芜容墩差驭湘趋堤琵诲福棕缠丧健孝陶角煎傻壕得沟忿踊淑朱宙塔频闸悯宏阿擎淀建迈盂狂吸鼎渐宾荣炭度桓讯乘矾箔叼吏溅学倾蔓焉诺瞳例办树隙尺您寿樱韵砂窃无褪挚科唆台桐蠢废唱装呸彬差磨侵尿该车痔燕踪关异灾籍参曝川咯

4、鹤榆籍乞溢狐跑航扶浪昂赠蜕膜架哈序父狭Java Servelet API 入门基础教程在 Servlet 之前 Java 服务器端编程使用 C 或 Perl 编写复杂的 CGI 来实现来完成,Java Servlet API 的出现极大地简化了 Java 在服务器端编程的复杂性同时能最大限度地发挥 Java 的的整体优势。在这个专题中我们由浅入深地向大家介绍 Java Servlet 的基本特征、开发环境的配置以及 Servlet 的一些主要 API 类。一、概述Servlet 是一种独立于平台和协议的服务器端的 Java 应用程序,可以生成动态的 Web页面。 Servlet 是位于 Web

5、 服务器内部的服务器端的 Java 应用程序,与传统的从命令行启动的 Java 应用程序不同,Servlet 由 Web 服务器进行加载,该 Web 服务器必须包含支持Servlet 的 Java 虚拟机。 Java Servlet 与 Applet 的比较: 相似之处:* 它们不是独立的应用程序,没有 main()方法。* 它们不是由用户或程序员调用,而是由另外一个应用程序(容器) 调用。* 它们都有一个生存周期,包含 init()和 destroy()方法。不同之处:* Applet 具有很好的图形界面(AWT),与浏览器一起,在客户端运行。* Servlet 则没有图形界面,运行在服务器

6、端。Java Servlet 与 CGI(Common Gateway Interface) 的比较: 与传统的 CGI 和许多其他类似 CGI 的技术相比,Java Servlet 具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资。在未来的技术发展过程中,Servlet 有可能彻底取代 CGI。* 高效 在传统的 CGI 中,每个请求都要启动一个新的进程,如果 CGI 程序本身的执行时间较短,启动进程所需要的开销很可能反而超过实际执行时间。而在 Servlet 中,每个请求由一个轻量级的 Java 线程处理(而不是重量级的操作系统进程)。 在传统 CGI 中,如果有 N

7、 个并发的对同一 CGI 程序的请求,则该 CGI 程序的代码在内存中重复装载了 N 次;而对于 Servlet,处理请求的是 N 个线程,只需要一份 Servlet 类代码。在性能优化方面,Servlet 也比 CGI 有着更多的选择。* 方便Servlet 提供了大量的实用工具例程,例如自动地解析和解码 HTML 表单数据、读取和设置 HTTP 头、处理 Cookie、跟踪会话状态等。* 功能强大 在 Servlet 中,许多使用传统 CGI 程序很难完成的任务都可以轻松地完成。例如,Servlet 能够直接和 Web 服务器交互,而普通的 CGI 程序不能。Servlet 还能够在各个程

8、序之间共享数据,使得数据库连接池之类的功能很容易实现。* 可移植性好Servlet 用 Java 编写,Servlet API 具有完善的标准。因此,为 IPlanet Enterprise Server 写的 Servlet 无需任何实质上的改动即可移植到 Apache、Microsoft IIS 或者WebStar。几乎所有的主流服务器都直接或通过插件支持 Servlet。* 节省投资 不仅有许多廉价甚至免费的 Web 服务器可供个人或小规模网站使用,而且对于现有的服务器,如果它不支持 Servlet 的话,要加上这部分功能也往往是免费的 (或只需要极少的投资)。Java Servlet

9、与 JSP(JavaServer Pages) 的比较: JavaServer Pages(JSP)是一种实现普通静态 HTML 和动态 HTML 混合编码的技术,JSP 并没有增加任何本质上不能用 Servlet 实现的功能。但是,在 JSP 中编写静态 HTML更加方便,不必再用 println 语句来输出每一行 HTML 代码。更重要的是,借助内容和外观的分离,页面制作中不同性质的任务可以方便地分开:比如,由页面设计者进行 HTML 设计,同时留出供 Servlet 程序员插入动态内容的空间。Java Servlet API 2.2 简介Java Servlet API 2.2 的类和接

10、口组成两个 Java 包,即:javax.servlet 和 javax.servlet.http(还包括 javax.servlet.jsp 包,不在本篇文章讨论范围之内)。javax.servlet 包提供了控制 Servlet 生命周期所必需的 Servlet 接口,是编写 Servlet 时必须要实现的。javax.servlet.http 包提供了从 Servlet 接口派生出的专门用于处理 HTTP 请求的抽象类和一般的工具类。所有的 Servlet 对象都要实现 Servlet 接口,大多数情况下是作为已经实现了 Servlet 接口的 javax.servlet.Generic

11、Servlet 和 javax.servlet.http.HttpServlet 这两个抽象类的子类来间接实现 Servlet 接口。javax.servlet 包定义的类和接口:interface RequestDispatcher /定义一种对象,用于从客户接受请求,并将请求发送到服务器上任何指定的资源,如一个 Servlet 、JSP 或 HTML 文件。interface Servlet /定义了所有 Servlet 必须实现的方法。interface ServletConfig/定义 Servlet config 对象,由 Servlet 引擎用在 Servlet 初始化时,向 Se

12、rvlet 传递信息。interface ServletContext /定义了一系列方法,以便 Servlet 与其运行的环境通信。interface ServletRequest/定义了用于向 Servlet 传递客户请求信息的对象。interface ServletResponse/定义了一个对象,由 Servlet 用于向客户发送响应。interface SingleThreadModel/用于保证 Servlet 在任一时刻,只处理一个请求。class GenericServlet/继承 Servlet 接口,定义了一个通用的,与协议无关的 Servlet。class Servlet

13、InputStream/定义了一个输入流,用于由 Servlet 从中读取客户请求的二进制数据。class ServletOutputStream/定义了一个输出流,用于由 Servlet 向客户发送二进制数据。class ServletException/定义了一个当 Servlet 遇到问题时可以抛出的异常。class UnavailableException/定义了一种异常,用于由 Servlet 指明它永远或暂时不可用。javax.servlet.http 包定义的类和接口:interface HttpServletRequest/继承了 ServletRequest 接口,为 HTT

14、PServlet 提供请求信息。interface HttpServletResponse/继承了 ServletResponse 接口,为 HTTPServlet 输出响应信息提供支持。interface HttpSession/为维护 HTTP 用户的会话状态提供支持。interface HttpSessionBindingListener/使得某对象在加入一个会话或从会话中删除时能够得到通知。interface HttpSessionContext/由 Servlet 2.1 定义,该对象在新版本已不被支持。class Cookie/用在 Servlet 中使用 Cookie 技术cla

15、ss HttpServlet/定义了一个抽象类,继承 GenericServlet 抽象类,应被 HTTPServlet 继承。class HttpSessionBindingEvent/定义了一种对象,当某一个实现了 HttpSessionBindingListener 接口的对象被加入会话或从会/话中删除时,会收到该类对象的一个句柄class HttpUtils/提供了一系列便于编写 HTTPServlet 的方法。下面主要介绍 javax.servlet.http 提供的 HTTP Servlet 应用编程接口。 HTTP Servlet 使用一个 HTML 表格来发送和接收数据。要创建

16、一个 HTTP Servlet,请扩展 HttpServlet 类, 该类是用专门的方法来处理 HTML 表格的 GenericServlet 的一个子类。 HTML 表单是由 和 标记定义的。表单中典型地包含输入字段(如文本输入字段、复选框、单选按钮和选择列表) 和用于提交数据的按钮。当提交信息时,它们还指定服务器应执行哪一个 Servlet(或其它的程序)。 HttpServlet 类包含 init()、destroy()、service() 等方法。其中 init() 和 destroy() 方法是继承的。 (1) init() 方法 在 Servlet 的生命期中,仅执行一次 init

17、() 方法。它是在服务器装入 Servlet 时执行的。 可以配置服务器,以在启动服务器或客户机首次访问 Servlet 时装入 Servlet。 无论有多少客户机访问 Servlet,都不会重复执行 init() 。 缺省的 init() 方法通常是符合要求的,但也可以用定制 init() 方法来覆盖它,典型的是管理服务器端资源。 例如,可能编写一个定制 init() 来只用于一次装入 GIF 图像,改进 Servlet 返回 GIF 图像和含有多个客户机请求的性能。另一个示例是初始化数据库连接。缺省的 init() 方法设置了 Servlet 的初始化参数,并用它的 ServletConf

18、ig 对象参数来启动配置, 因此所有覆盖 init() 方法的 Servlet 应调用 super.init() 以确保仍然执行这些任务。在调用 service() 方法之前,应确保已完成了 init() 方法。 (2) service() 方法 service() 方法是 Servlet 的核心。每当一个客户请求一个 HttpServlet 对象,该对象的 service() 方法就要被调用,而且传递给这个方法一个“ 请求“(ServletRequest)对象和一个“响应 “(ServletResponse)对象作为参数。 在 HttpServlet 中已存在 service() 方法。缺省

19、的服务功能是调用与 HTTP 请求的方法相应的 do 功能。例如, 如果 HTTP 请求方法为 GET,则缺省情况下就调用 doGet() 。Servlet 应该为 Servlet 支持的 HTTP 方法覆盖 do 功能。因为 HttpServlet.service() 方法会检查请求方法是否调用了适当的处理方法,不必要覆盖 service() 方法。只需覆盖相应的 do 方法就可以了。 当一个客户通过 HTML 表单发出一个 HTTP POST 请求时,doPost()方法被调用。与POST 请求相关的参数作为一个单独的 HTTP 请求从浏览器发送到服务器。当需要修改服务器端的数据时,应该使

20、用 doPost()方法。 当一个客户通过 HTML 表单发出一个 HTTP GET 请求或直接请求一个 URL 时,doGet()方法被调用。与 GET 请求相关的参数添加到 URL 的后面,并与这个请求一起发送。当不会修改服务器端的数据时,应该使用 doGet()方法。 Servlet 的响应可以是下列几种类型: 一个输出流,浏览器根据它的内容类型(如 text/HTML)进行解释。 一个 HTTP 错误响应, 重定向到另一个 URL、servlet、JSP 。 (3) destroy() 方法 destroy() 方法仅执行一次,即在服务器停止且卸装 Servlet 时执行该方法。典型的

21、,将 Servlet 作为服务器进程的一部分来关闭。缺省的 destroy() 方法通常是符合要求的,但也可以覆盖它,典型的是管理服务器端资源。例如,如果 Servlet 在运行时会累计统计数据,则可以编写一个 destroy() 方法,该方法用于在未装入 Servlet 时将统计数字保存在文件中。另一个示例是关闭数据库连接。 当服务器卸装 Servlet 时,将在所有 service() 方法调用完成后,或在指定的时间间隔过后调用 destroy() 方法。一个 Servlet 在运行 service() 方法时可能会产生其它的线程,因此请确认在调用 destroy() 方法时,这些线程已终

22、止或完成。 (4) GetServletConfig()方法 GetServletConfig()方法返回一个 ServletConfig 对象,该对象用来返回初始化参数和ServletContext。ServletContext 接口提供有关 servlet 的环境信息。 (5) GetServletInfo()方法 GetServletInfo()方法是一个可选的方法,它提供有关 servlet 的信息,如作者、版本、版权。 当服务器调用 sevlet 的 Service()、doGet() 和 doPost()这三个方法时,均需要 “请求“和“响应“对象作为参数。“ 请求“对象提供有关请

23、求的信息,而“响应“ 对象提供了一个将响应信息返回给浏览器的一个通信途径。javax.servlet 软件包中的相关类为 ServletResponse 和 ServletRequest,而javax.servlet.http 软件包中的相关类为 HttpServletRequest 和 HttpServletResponse。 Servlet 通过这些对象与服务器通信并最终与客户机通信。Servlet 能通过调用“请求“对象的方法获知客户机环境,服务器环境的信息和所有由客户机提供的信息。Servlet 可以调用“响应“ 对象的方法发送响应,该响应是准备发回客户机的。编写 Servlet 所需

24、要的开发环境 进行 Servlet 开发所需要的基本环境是 JSDK 以及一个支持 Servlet 的 Web 服务器。 1.JSDK(Java Servlet Development Kit) JSDK 包含了编译 Servlet 应用程序所需要的 Java 类库以及相关的文档。对于利用Java 1.1 进行开发的用户,必须安装 JSDK。JSDK 已经被集成进 Java 1.2 Beta 版中,如果利用 Java 1.2 或以上版本进行开发,则不必安装 JSDK。 JSDK 可以在 Javasoft 公司的站点免费下载,其地址是: http:/ Servlet 的 Web 服务器 Serv

25、let 需要运行在支持 Servlet 的 Web 服务器上。目前支持 Servlet 的 Web 服务器SUN 公司的 JSWDK1.0.1。如果现有的 Web 服务器不支持 Servlet,则可以利用一些第三方厂商的服务器增加件(addons)来使 Web 服务器支持 Servlet,这其中 Live Software 公司(http:/)提供了一种称为 JRun 的产品,通过安装 JRun 的相应版本,可以使 Microsoft IIS 和 Netscape Web Server 支持 Servlet。 开发 Servlet 的过程 下面举一个简单的 Servlet 例子来说明开发 Se

26、rvlet 的过程。 1.编写 Servlet 代码 Java Servlet API 是一个标准的 Java 扩展程序包,包含两个 Packagejavax.servlet和 javax.servlet.http。对于想开发基于客户自定义协议的开发者,应该使用 javax.servlet包中的类与界面;对于仅利用 HTTP 协议与客户端进行交互的开发者,则只需要使用javax.servlet.http 包中的类与界面进行开发即可。 下面是一个 servlet 的程序代码(RequestInfoExample.java) import java.io.*;import java.servlet

27、.*;import javax.servlet.*;public class RequestInfoExample extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletExceptionresponse.setContentType(“text/html“);PrintWriter out = response.getWriter();out.println(“html“);out.println(“bo

28、dy“);out.println(“head“);out.println(“titleRequest Information Example/title“);out.println(“/head “);out.println(“body“);out.println(“h3 Request Information Example/h3“);out.println(“Method: “ + request.getMethod();out.println(“Request URI: “ + request.getRequestURI();out.println(“Protocol: “ + requ

29、est.getProtocol();out.println(“PathInfo: “ + request.getPathInfo();out.println(“Remote Address: “ + request.getRemoteAddr();out.println(“/body“);out.println(“/html“);public void doPost(HttpServletRequest request, HttpServletResponse res)throws IOException, ServletExceptiondoGet(request, response);该

30、servlet 实现如下功能当用户通过浏览器访问该 servlet 时,该 servlet 向客户端浏览器返回一个 HTML 页面 -Request Information ExampleMethod: GET Request URI: /examples/servlet/RequestInfoExample Protocol: HTTP/1.1 Path Info: null Remote Address: 127.0.0.1 -有关 servlet 程序说明 * 基于 HTTP 协议的 servlet 必须引入 javax.servlet 和 javax.servlet.http 包; *

31、 HelloServlet 从类 HttpServlet 派生,HttpServlet 是 GenericServlet 的一个派生类,通过 GenericServlet 实现了 Servlet 界面。HttpServlet 为基于 HTTP 协议的 servlet 提供了基本的支持; * HttpServletRequest 对象包含了客户端请求的信息,可以通过该参数取得客户端的一些信息( 例如 IP 地址、浏览器类型等)以及 HTTP 请求类型 (例如GET、HEAD、 POST、PUT 等) ;HttpServletResponse 对象用于完成 Servlet 与客户端的交互,通过调用

32、 HttpServletResponse.getOutputStream()客户取得向客户端进行输出的输出流,向客户端发送 HTML 页面。* 编写了 doGet 方法,对于 HTML POST 请求,调用 Servlet 的 doPost()方法。 2.编译 Servlet 代码 利用 JDK 1.2.2 对 Servlet 代码进行编译( 假设 Web 服务器采用 jswdk-1.0.1),其命令行为: c: javac d C:jswdk-1.0.1examplesWEB-INFservlets HelloServlet.java 进行编译时必须确保 HelloServlet.java

33、文件拷贝到目录 C:jswdk-1.0.1examplesWEB- INFservlets 下面。3.测试 Servlet 现在可以对 HelloServlet 进行测试了,打开浏览器,键入: http:/localhost:8080/examples/servlet/RequestInfoExample其中 localhost 是安装有 jswdk-1.0.1 的机器,8080 是端口号。GenericServlet 类前面我们学习了两种插入排序法,但当要排序的数组长度越长并且数值越不成顺序, 比较和交换的次数就越多,效率越低。因此 D.L.Shell 在 1959 年提出了缩小增量排序法(

34、又叫希尔排序法),基本思想是:取一个间隔,将长序列分成若干短的子序列,对每个子序列进行直插排序;然后逐渐缩小间隔,重复以上过程,直到间隔为 1。可以看到这种算法,较好的克服了直接插入排序法的不足。下面是示例:8 7 4 3 6 1 /是要排序的数值,我们以一半的长度为间隔 33 7 4 8 6 1 /第一次,取得 3,小于前面的 8,交换位置3 6 4 8 7 1 /第二次,取得 6,小于前面的 7,交换位置3 6 1 8 7 4 /第三次,取得 1,小于前面的 4,交换位置1 6 3 4 7 8 /第四次,再缩小间隔,为 2,取得 1 小于 3,交换位置,取得 7,大于前面的 3,不变;取得

35、8 大于 6,不变,取得 4 小于 8,交换位置1 3 4 6 7 8 /第五次,再缩小间隔,为 1,取得 6,大于 1,不变;取得 3 小于 6,交换位置;取得 4,小于 6,交换位置;取得 7,大于前面的 6,不变;取得 8 ,大于 7,不变以下是代码:void paixu( ) /用希尔排序法 , int N=13;/ N 为前后纪录位置的增量for (int Z= N/2; Z; Z = Z/2)/每次缩小增量for (int i = Z; i = Z 1 4 3 6 8 /第三次,left 取得 4,小于 7,放到前面,1 4 6 3 8 /第四次,right 取 6,小于 7,放到

36、前面1 4 6 3 8 /第五次,left=right=3,小于 7,放到前面,1 4 6 3 7 8 /7 放入合适位置 ,第一趟排序完成/后面,在以 1 为基准排序/直到成功代码如下:void paixu(int a,int low,int high;)/用快速排序法/ low, high 表示扫描的范围int pivot;/存放中心索引及其值的局部变量int scanup,scandown,mid;/用于扫描的索引if (high-low=0) /如果数组中的元素少于两个 ,则返回return;else if(high-low=1) /如果有两个元素 ,对其进行比较if(apaihigh

37、apailow) /如果后一个比前一个小,Swap(apailow,apaihigh);/那么交换位置return;/end ifmid=(low+high)/2;/取得中心索引pivot=apaimid;/将中间索引的值,赋给 pivotSwap(apaimid,apailow);/交换 pivot 及低端元素的值Scanup=low+1;Scandown=high;/初始化扫描索引 scanup 和 scandowndo/从低端子表向上扫描,当 scanup 进入高端子表或遇到大于 pivot 的元素时结束.while(scanup=scandown /从高端子表向下扫描,当 scando

38、wn 遇到小于或等于 pivot 的元素时结束while(piovtapaiscandown)scandown-;/如果两个索引还在各自的子表中,则表示两个元素错位,将两个元素换位if(scanupscandown)Swap(apaiscanup,apaiscandown);while(scanupscandown);/ 将 pivot 拷贝到 scandown 位置,分开两个子表apailow=apaiscandown;apaiscandown=pivot;/ 如果低端子表(low 至 scandown-1)有 2 个或更多个元素,则进行递归调用if(lowscandown-1)paixu(

39、apai,low,scandown-1);/如果高端子表(scandown+1 至 high) 有 2 个或更多个元素,则进行递归调用if(scandown+1high)paixu(apai, scandown+1, high);关于排序的问题已经够多了,就到这里吧, 如果大家有兴趣 ,可以看已看这方面的书.下一节我们继续我们的游戏开发.HttpServlet 类Java 关键字网络 J2ME 手机游戏 JavaCard Struts 游戏 分析器 JAAS EJB JavaMail 设计模式 J2EE XML EJB JavaBean Servlet JDBC HttpServlet 是从

40、GenericServlet 继承而来,因此它具有 GenericServlet 类似的方法和对象,是我们使用 Servlet 编程经常用到的包,它支持 HTTP 的 post 和 get 等方法。编程思路:下面的例子,运行结果是输出简单地返回客户发送给服务器的请求行和头部信息,以及一些可访问的 HTTP 信息等。SnoopServlet.java 的源代码如下:import java.io.IOException;import java.io.PrintWriter;import java.util.Enumeration;import javax.servlet.*;import java

41、x.servlet.http.*;public class SnoopServlet extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOExceptionPrintWriter out = response.getWriter();response.setContentType(“text/plain“);out.println(“Snoop Servlet“);out.println();out.pr

42、intln(“Servlet init parameters:“);Enumeration e = getInitParameterNames();while (e.hasMoreElements() String key = (String)e.nextElement();String value = getInitParameter(key);out.println(“ “ + key + “ = “ + value); out.println();out.println(“Context init parameters:“);ServletContext context = getSer

43、vletContext();Enumeration enum = context.getInitParameterNames();while (enum.hasMoreElements() String key = (String)enum.nextElement();Object value = context.getInitParameter(key);out.println(“ “ + key + “ = “ + value);out.println();out.println(“Context attributes:“);enum = context.getAttributeNames

44、();while (enum.hasMoreElements() String key = (String)enum.nextElement();Object value = context.getAttribute(key);out.println(“ “ + key + “ = “ + value);out.println();out.println(“Request attributes:“);e = request.getAttributeNames();while (e.hasMoreElements() String key = (String)e.nextElement();Ob

45、ject value = request.getAttribute(key);out.println(“ “ + key + “ = “ + value);out.println();out.println(“Servlet Name: “ + getServletName();out.println(“Protocol: “ + request.getProtocol();out.println(“Scheme: “ + request.getScheme();out.println(“Server Name: “ + request.getServerName();out.println(

46、“Server Port: “ + request.getServerPort();out.println(“Server Info: “ + context.getServerInfo();out.println(“Remote Addr: “ + request.getRemoteAddr();out.println(“Remote Host: “ + request.getRemoteHost();out.println(“Character Encoding: “ + request.getCharacterEncoding();out.println(“Content Length:

47、 “ + request.getContentLength();out.println(“Content Type: “+ request.getContentType();out.println(“Locale: “+ request.getLocale();out.println(“Default Response Buffer: “+ response.getBufferSize();out.println();out.println(“Parameter names in this request:“);e = request.getParameterNames();while (e.

48、hasMoreElements() String key = (String)e.nextElement();String values = request.getParameterValues(key);out.print(“ “ + key + “ = “);for(int i = 0; i values.length; i+) out.print(valuesi + “ “);out.println(); out.println();out.println(“Headers in this request:“);e = request.getHeaderNames();while (e.hasMoreElements() String key = (String)e.nextElement();String value = request.getHeader(key);out.println(“ “ + key + “: “ + value);out.println(); out.println(“Cookies in this request:“);Cookie cookies = request.getCookies();if (cookies != null)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 中等教育 > 小学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报