一.起步

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

public class HelloServlet implements Servlet {

    @Override
public void destroy() {
System.out.println("Destroy...");
} @Override
public ServletConfig getServletConfig() {
System.out.println("getServletConfig...");
return null;
} @Override
public String getServletInfo() {
System.out.println("getServletInfo...");
return null;
} @Override
public void init(ServletConfig arg0) throws ServletException {
System.out.println("init...");
} @Override
public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
System.out.println("service...");
resp.getWriter().println("Hello World...");
} public HelloServlet() {
System.out.println("HelloServlet Constructor...");
}
}

2.配置web.xml

  <servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>com.bwr.start.HelloServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</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容器加载时创建实例,值越小,加载的时机越早。

  <servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>com.bwr.start.HelloServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</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. KeyValue Config

    public class ConfigHelper { public static ScriptsHelper Scripts { get { return new ScriptsHelper(); ...

  2. Scrum 3.2 多鱼点餐系统开发进度(页面优化&下单详细信息页面)

    Scrum 3.2 多鱼点餐系统开发进度(页面优化&下单详细信息页面)  1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选 ...

  3. 后缀数组 - 求最长回文子串 + 模板题 --- ural 1297

    1297. Palindrome Time Limit: 1.0 secondMemory Limit: 16 MB The “U.S. Robots” HQ has just received a ...

  4. 泛函编程(19)-泛函库设计-Parallelism In Action

    上节我们讨论了并行运算组件库的基础设计,实现了并行运算最基本的功能:创建新的线程并提交一个任务异步执行.并行运算类型的基本表达形式如下: import java.util.concurrent._ o ...

  5. java微信开发(wechat4j)——access_token中控服务器实现

    access_token是与微信服务器交互过程中的一个凭证,每次客户服务器主动与微信服务器通信都需要带上access_token以确认自己的身份.wechat4j内部封装了对access_token的 ...

  6. Android项目实战(八):列表右侧边栏拼音展示效果

    之前忙着做项目,好久之前的技术都没有时间总结,而发现自己的博客好多写的技术都比自己掌握的时候晚了很多.不管怎么样,写技术博客一定是一个想成为优秀程序猿或者已经是优秀程序猿必须做的.好吧,下面进行学习阶 ...

  7. [Android]IllegalStateException: Could not find method onBind(View)

    FATAL EXCEPTION: main Process: org.diql.aidldemo, PID: 2274 java.lang.IllegalStateException: Could n ...

  8. 【原】开发路上疑难BUG调试记录

    之前遇到棘手的BUG总是在处理过后就不管了,导致后面碰到相同问题后重复工作太多.现专门开辟一篇日志以记录接下来一路上比较棘手的“坑”的修复历程: [C++篇] 1.mt.exe : general e ...

  9. IOS开发中NSRunloop跟NSTimer的问题

    在Windows时代,大家肯定对SendMessage,PostMessage,GetMessage有所了解,这些都是windows中的消息处理函数,那对应在ios中是什么呢,其实就是NSRunloo ...

  10. .NET下dropdownlist的基本操作

    //List列中索引的赋值 teacher.DataValueField = ds.Tables[0].Columns["pidcord"].ColumnName; //List列 ...