- 1、本文档共52页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7.4.1 servlet的访问方式 通过浏览器可以有几种途径访问servlet: ⑴? HTML表单:通常servlet由HTML表单中的Sumbit按钮驱动,用户的输入数据通过POST或GET方法传递给servlet。 ⑵? 超链接:servlet也可以超链接的形式指定,通过超链接激活服务或servlet的doGet方法。 ⑶? SERVLET标记:一些Web服务器支持HTML文档的SERVLET标记或者!—include--标记。执行时servlet的doGet方法被激活,输出结果代替SERVLET标记出现在HTML文档中。在JSP0.92和1.0规范中,支持的include语法是:%@ include file=”相对URL路径” ⑷ 通过servlet访问:通过getServletContext().getServlet(servletname)可访问其它的servlet。值得注意的是,Java servlet API2.1建议不采用这种方法,它提供了RequestDispatcher接口,它可以转发请求调用另外的servlet。 7.4.2 Servlet生命周期管理 基于servlet的网络应用的用户端程序并非直接与servlet交互,而是发请求给Web server,由Web server通过servlet API激活servlet。Web server的主要任务包括为servlet初使化、活servlet的doGet或doPost方法、销毁servlet进程等。在Web server中,每个servlet只有一个进程,为每个客户端请求创建一个线程(每个线程处理一个客户端请求, 如图1,servlet的这一特性使其运行效率非常高效。 图1 Servlet生命周期 装载Servlet。这项操作一般是动态执行的。然而,Server通常会提供一个管理的选项,用于在Server启动时强制装载和初始化特定的Servlet。 Server创建一个Servlet的实例 Server调用Servlet的init()方法 一个客户端的请求到达Server Server创建一个请求对象 Server创建一个响应对象 Server激活Servlet的service()方法,传递请求和响应对象作为参数 service()方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息 service()方法使用响应对象的方法,将响应传回Server,最终到达客户端。service()方法可能激活其它方法以处理请求,如doGet()或doPost()或程序员自己开发的新的方法 对于更多的客户端请求,Server创建新的请求和响应对象,仍然激活此Servlet的service()方法,将这两个对象作为参数传递给它。如此重复以上的循环,但无需再次调用init()方法。一般Servlet只初始化一次 ,当Server不再需要Servlet时(一般当Server关闭时),Server调用Servlet的Destroy()方法。 例2 Servlet生命周期 import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class servletLifeDemo extends HttpServlet { static final private String CONTENT_TYPE=text/html;charset=GBK; public void init() throws ServletException { System.out.println(servlet 的生命开始); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType(CONTENT_TYPE); PrintWriter out = response.getWriter(); out.println(html); out.println(body); out.println(head); String title = rb.getString(requestinfo.title); out.println(tit
文档评论(0)