一.起步

1.新建一个类继承Servlet接口

  1. public class HelloServlet implements Servlet {
  2.  
  3. @Override
  4. public void destroy() {
  5. System.out.println("Destroy...");
  6. }
  7.  
  8. @Override
  9. public ServletConfig getServletConfig() {
  10. System.out.println("getServletConfig...");
  11. return null;
  12. }
  13.  
  14. @Override
  15. public String getServletInfo() {
  16. System.out.println("getServletInfo...");
  17. return null;
  18. }
  19.  
  20. @Override
  21. public void init(ServletConfig arg0) throws ServletException {
  22. System.out.println("init...");
  23. }
  24.  
  25. @Override
  26. public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
  27. System.out.println("service...");
  28. resp.getWriter().println("Hello World...");
  29. }
  30.  
  31. public HelloServlet() {
  32. System.out.println("HelloServlet Constructor...");
  33. }
  34. }

2.配置web.xml

  1. <servlet>
  2. <servlet-name>helloServlet</servlet-name>
  3. <servlet-class>com.bwr.start.HelloServlet</servlet-class>
  4. </servlet>
  5.  
  6. <servlet-mapping>
  7. <servlet-name>helloServlet</servlet-name>
  8. <url-pattern>/hello</url-pattern>
  9. </servlet-mapping>

说明:部署在tomcat(本地)上,默认访问地址为http://localhost:8080/project_name/hello, 浏览器页面显示"hello world..."

二. Servlet容器

1.可以创建Servlet,并调用Servlet的相关生命周期方法

2.Servlet, JSP, Filter, Listener都在容器内运行

三. Servlet的生命周期

1.生命周期相关方法(以下方法都是由servlet容器负责调用)

  Servlet构造器:只被调用一次,只有第一次请求Servlet时,创建Servlet实例,调用构造器。

      说明Servlet是单例的。

  init():只被调用一次,在创建号实例后立即被调用,用于初始化当前Servlet,此方法会传入一个ServletConfig参数。

  service():会被多次调用。每次请求都会调用service方法,用于响应请求。

  destroy():只被调用一次。在当前Servlet所在的WEB应用被卸载前调用,用于释放当前Servlet占用的资源。

2. load-on-startup配置

  a. 配置在web.xml中servlet标签中,用于指定Servlet创建的时机.

  b. load-on-startup取值:若为负数则在第一次请求时被创建;若为0或整数,则在当前应用被web容器加载时创建实例,值越小,加载的时机越早。

  1. <servlet>
  2. <servlet-name>helloServlet</servlet-name>
  3. <servlet-class>com.bwr.start.HelloServlet</servlet-class>
  4. <load-on-startup>1</load-on-startup>
  5. </servlet>

3. Servlet配置细节

  a. 一个Servlet可以有多个servlet-mapping配置映射

  b. <url-pattern> 配置可以使用通配符,但是只允许两种形式

    <url-pattern>/*</url-pattern>    有"/"不允许加扩展名

    <url-pattern>*.do</url-pattern>    有扩展名不允许加"/"

三. Servlet相关的类

1. ServletConfig

  封装了Servlet得配置信息,并且可以获取ServletContext对象。

2. ServletContext

  Servlet引擎为每个WEB应用程序都创建一个对应的ServletContext对象,在Servlet中可以通过ServletConfig的getServletContext()方法获取。

3. ServletRequest

4. ServletResponse

      

Servlet/JSP-01 Servlet及其生命周期的更多相关文章

  1. JSP 和 Servlet 的工作原理和生命周期

    JSP的英文名叫Java Server Pages,翻译为中文是Java服务器页面的意思,其底层就是一个简化的Servlet设计,是由sum公司主导参与建立的一种动态网页技术标准.Servlet 就是 ...

  2. Servlet的工作原理和生命周期

    Servlet的工作原理 . Web服务器加载Servlet:Web服务器启动后,它会根据每个工程的web.xml文件去查找该工程的Servlet,并且找到这些Servlet的Class文件所在的地址 ...

  3. Servlet学习笔记(一)之Servlet原理、初始化、生命周期、结构体系

    Servlet是用java语言编写的应用到Web服务器端的扩展技术,与java对象的区别是,Servlet对象主要封装了对HTTP请求的处理,并且它的运行需要Servlet容器的支持(以下会介绍原因, ...

  4. [转]servlet的执行原理与生命周期

    一.先从servlet容器说起:大家最为熟悉的servlet容器就是Tomcat ,Servlet 容器是如何管理 Servlet? 先看一下tomcat的容器模型: 从上图可以看出 Tomcat 的 ...

  5. servlet的执行原理与生命周期

    先从servlet容器说起:大家最为熟悉的servlet容器就是Tomcat ,Servlet 容器是如何管理 Servlet?先看一下tomcat的容器模型:从上图可以看出 Tomcat 的容器分为 ...

  6. Servlet的执行流程、生命周期

    下面这幅图的Request和Response的箭头方向反了,应该是客户端发出请求,然后web服务器返回响应. servlet生命周期阶段包括初始化.加载.实例化.服务和销毁.  编写Servlet的d ...

  7. Servlet(三):生命周期、常用方法、常见错误

    Servlet的生命周期:从第一次调用,到服务器关闭.如果在web.xml 中配置了load-on-startup则是从服务器开启到服务器关闭. 注意: * init方法是对Servlet进行初始化的 ...

  8. Servlet的创建二以及生命周期

    之前说Servlet可以通过实现Servlet接口来创建,但是我们看到了,需要重写该接口中的所有方法. 创建方式二:Servlet的创建还可以继承抽象类GenericServlet并重写其中的抽象方法 ...

  9. [javaEE] Servlet的调用过程和生命周期

    在http协议的请求头中获取到要访问的资源,查找web.xml文件找到对应的servelet Sevlet的生命周期 Servlet在第一次被访问的时候,服务器创建出Servlet对象,创建出对象以后 ...

  10. servlet基础(组成与生命周期)

    servlet基础作用:servlet是运行在Web服务器或应用服务器上的程序:担当web浏览器或其他HTTP客户程序发出的请求与HTTP服务器上的数据库或应用程序之间的中间层.1.读取客户程序发送的 ...

随机推荐

  1. 转载:第四弹!全球首个微信小程序(应用号)开发教程!通宵吐血赶稿,每日更新!

    感谢大家支持!博卡君周末休息了两天,今天又回到战斗状态了.上周五晚上微信放出官方工具和教程了,推荐程序猿小伙伴们都去试一试,结合教程和代码,写写自己的 demo 也不错. 闲话不多说,开始更新! 第七 ...

  2. 扩展KMP --- HDU 3613 Best Reward

    Best Reward Problem's Link:   http://acm.hdu.edu.cn/showproblem.php?pid=3613 Mean: 给你一个字符串,每个字符都有一个权 ...

  3. C#设计模式——原型模式(Prototype Pattern)

    一.概述 在软件开发中,经常会碰上某些对象,其创建的过程比较复杂,而且随着需求的变化,其创建过程也会发生剧烈的变化,但他们的接口却能比较稳定.对这类对象的创建,我们应该遵循依赖倒置原则,即抽象不应该依 ...

  4. 面向对象的Javascript(5):继承

    在小项目中对于JavaScript使用,只要写几个function就行了.但在大型项目中,尤其是在开发追求 良好的用户体验的网站中,如SNS,就会 用到大量的JavaScrpt,有时JavaScrip ...

  5. C++隐藏规则

    在面向对象的开发过程中,经常出现类的继承,这里面出现的成员函数的重载(overload).覆盖(override)与隐藏(hidden)很容易混淆. 首先澄清这3个概念: 重载 相同的范围(在同一个类 ...

  6. 很有趣的Java分形绘制

    部分与整体以某种形式相似的形,称为分形. 首先我们举个例子:        我们可以看到西兰花一小簇是整个花簇的一个分支,而在不同尺度下它们具有自相似的外形.换句话说,较小的分支通过放大适当的比例后可 ...

  7. 关于网络上的各种mysql性能测试结论

    关于网上的各种性能测试帖子,我想说以下几点: 1.为了使性能测试更加的客观.实际,应该说明针对什么场景进行测试,查询.还是修改,是否包含了主键,包含了几个索引,各自的差别是什么.因为不同的mysql分 ...

  8. [WP8] ListBox的Item宽度自动填满

    [WP8] ListBox的Item宽度自动填满 范例下载 范例程序代码:点此下载 问题情景 开发WP8应用程序的时候,常常会需要使用ListBox作为容器来呈现各种数据集合.但是在ListBox呈现 ...

  9. play HTTP路由 http://play-framework.herokuapp.com/zh/routes#syntax

    HTTP路由 HTTP路由(译者注:Play的路径映射机制)组件负责将HTTP请求交给对应的action(一个控制器Controller的公共静态方法)处理. 对于MVC框架来说,一个HTTP请求可以 ...

  10. 初学Node(五)文件I/O

    文件读写 Node的出现的一个亮点就是让JS也有了读写文件的能力,而且实现起来要比其他语言更简单,对文件的一些操作我们都可通过fs模块来完成.fs即fileSystem的缩写,fs模块可以完成对文件的 ...