欢迎来到LYBLaoInB的博客
LYBLaoInB
LYBLaoInB
回首往事,不因虚度年华而悔恨,不因碌碌无为而愧疚

Servlet的创建二以及生命周期

之前说Servlet可以通过实现Servlet接口来创建,但是我们看到了,需要重写该接口中的所有方法。

创建方式二:Servlet的创建还可以继承抽象类GenericServlet并重写其中的抽象方法

创建方法三:继承HttpServlet类,并重写他的Service方法

这几种创建方法的本质是一样的,不过是父类的范围越来越小,越来越专用。使用的过程中不必纠结这点。第三种方式更加推荐,并且可以将Service分开为doGet,doPost两个方法处理请求。

Servlet生命周期

1.客户端浏览器向服务器端发送请求URL

2.请求被服务器中的web.xml获取,并开始找寻对应的访问资源是哪一个Servlet

3.需要被访问的资源被确定后,服务器的类加载器加载Servlet类

4.创建Servlet对象

5.初始化

6.调用doGet,doPost,service其中的某个方法来处理请求并进行响应

7.当服务器关闭,重启,项目重新部署或加载的时候,就调用他的destroy方法销毁

需要注意的是,Servlet的生命周期是冲被加载开始算起的,之前的是请求的过程,我穿插进来比较容易理解。然后Servlet第一次被访问的时候,会被加载,创建,初始化,处理请求并响应。如果不是第一次被访问,只进行请求处理响应。在服务器关闭,项目被加载的时候Servlet销毁。

一个Servlet的生命周期中,Servlet对象只有一个,并且不同的客户端公用这一个Servlet对象,比如说,我们用IE浏览器访问了一个servlet,退出IE再用火狐访问这个servlet,他们用的其实是同一个Servlet。这就牵扯到了单例模式,下次再介绍,不是本文重点。

话不多说,上实例。

【继承HttpServlet类的Servlet】

package com.servlettest;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Servlet3 extends HttpServlet{

public Servlet3() {
// TODO Auto-generated constructor stub
System.out.println("被创建");
}
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
// TODO Auto-generated method stub

System.out.println("处理请求");
}
@Override
public void destroy() {
// TODO Auto-generated method stub
System.out.println("销毁");
}
@Override
public void init() throws ServletException {
// TODO Auto-generated method stub
System.out.println("初始化");
}

}

【地址栏输入】

http://localhost:8080/servlet_demo/servlet3

【现象】

console打印

被创建
初始化
处理请求

【再次刷新】

处理请求

处理请求

处理请求

处理请求

【关闭服务器】

销毁

 

posted @ 2018-03-31 14:35  LiuYongbo  阅读(194)  评论(0编辑  收藏  举报
<--将网易云歌单中的id复制到上面的data-id中就可以了 http://music.163.com/playlist?id=3103841025&userid=1698529278 -->