1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Servlet上课

Servlets 田洁 Servlet基本概念 Servlet,服务器端的小程序,它是相对于Applet而言的,Applet是客户端小程序。Servlet和CGI都是运行在Web服务器上,用来生成Web页面。 Servlet,是接受来自网络的请求(form表单,以及其他的请求),并对不同请求作出不同的响应。 Servlet,是基于Http协议的,是运行在web服务器中的程序。 Servlet开发步骤 编写servlet源代码,注意servlet的结构。 编译servlet,需要servlet-api.jar文件(位于$Tomcat\common\lib\目录下;加入classpath环境变量中) 部署servlet 编写配置文件web.xml:其中包括servlet burl与servlet name的映射,以及servlet name 与servlet class name的映射。 用Servlet处理表单数据 FORM元素的属性 action: 用来指定要处理FORM数据的Servlet的URL method: 指定数据传送给HTTP服务器的方法 解析请求 getParameterNames:可以获得一个迭代器Enumeration,通过这个迭代器,来获得form表单中参数的名字。 getParameter: 返回表单中参数名(区分大小写)对应的值(没有这样的参数,返回null; 没有任何值,返回空String);多参数同名时,只取一个。 getParametervalues: 返回表单中参数名(区分大小写)对应的字符串数组(没有这样的参数,返回null;只有一个值,返回值为单一元素组); Servlet的生命周期 创建Servlet对象,通过服务器反射机制创建Servlet实例,默认第一次请求时才会创建。 调用Servlet对象的init()方法,初始化Servlet的信息,init()方法只会在创建后被调用一次。 响应请求,调用service()或者是doGet(),doPost()方法来处理请求,这些方法是运行的在多线程状态下的。 在长时间没有被调用或者是服务器关闭时,会调用destroy()方法来销毁Servlet对象。 Servlet对客户端提供服务的时序图 Servlet生命周期状态图 init方法 当首次创建Servlet时就会调用init方法, 而不是每个用户请求都会调用该方法。 我们可以在init方法中完成类似于构造方法的初始化功能。 init方法一结束,servlet即可接受客户端请求; init方法实例 覆盖init(ServletConfig conf)方法时,应该总是在首行调用super.init(); 或者直接覆盖init(); init方法接受ServletConfig作为参数, 用以下方法获得参数值: getInitParameter: 返回指定参数名称对应的值,如果参数不存在,返回null; getInitParameterNames: 返回所有初始化参数的名字 ; service方法 每当服务器接收到对Servlet的请求时,服务器就会产生一个新线程, 并调用service。service方法检查HTTP请求类型,并相应地调用doGet、doPost、doPut、doDelete。 被container调用去响应(ServletResponse)来自客户端的请求(ServletRequest); destroy方法 服务器决定删除已经加载的Servlet实例之前将调用Servlet的destroy方法; 该方法允许Servlet: 关闭数据库连接; 中止后台线程; 将Cookie程序清单或访问计数写到磁盘以及执行其他类似的收尾工作。 在Servlet终止时处理Service线程 在destroy()方法中:如有服务(通过一个同步化的实例方法取得当前线程数大于0),则置关闭状态为false(通过一个同步化的实例方法实现)。然后循环等待服务线程数为0,则置关闭状态为true. 在Service()方法中: 如见关闭状态为true,便不执行具体逻辑方法,直接退出。 * * *

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档