实现servlet有几种方法,servlet各个方法的作用

首页 > 实用技巧 > 作者:YD1662024-01-15 22:29:38

  如果我们不断的刷新 http://localhost:8080/ServletImprove/hello 这个访问链接,那么控制台如下:

实现servlet有几种方法,servlet各个方法的作用(5)

3、Servlet 的生命周期

  我们通过上面的实例,可以看到也就是只有第一次才会执行 构造器和 init() 方法,后面每次点击都只调用 service() 方法。那这是为什么呢?

实现servlet有几种方法,servlet各个方法的作用(6)

上面这幅图可以这样理解:

  1、客户端向 Web 服务器发送请求,服务器查询 web.xml 文件配置。根据请求信息找到对应的 Servlet。

  2、Servlet 引擎检查是否已经装载并创建了该 Servlet 的实例对象,如果有,则直接执行第4步,否则执行第3步,

  3、Web 服务器加载 Servlet,并调用 Servlet 构造器(只会调用一次),创建 Servlet 的实例对象。并调用 init() 方法,完成 Servlet 实例对象的初始化(只会调用一次)。

  4、Web 服务器把接收到的 http 请求封装成 ServletRequest 对象,并创建一个 响应消息的 ServletResponse 对象,作为 service() 方法的参数传入。(每一次访问都会调用一次该方法)

  5、执行 service() 方法,并将处理信息封装到 ServletResponse 对象中返回

  6、浏览器拆除 ServletResponse 对象,形成 http 响应格式,返回给客户端。

  7、Web 应用程序停止或者重新启动之前,Servlet 引擎将卸载 Servlet实例,并在卸载之前调用 destory() 方法

4、创建 Servlet 的三种方法

  第一种:就是我们上面写的 实现接口 Servlet

  第二种:由于实现接口我们需要实现里面所有的方法,里面有一些方法我们可能并不想实现,那么我们就继承 GenericServlet

package com.ys.servlet;

import java.io.IOException;

import javax.servlet.GenericServlet;

import javax.servlet.ServletConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

public class HelloServlet extends GenericServlet{

//只被调用一次,第一次请求Servlet时,创建Servlet的实例,调用构造器

public HelloServlet() {

System.out.println("构造器 HelloServelt()...");

}

//该方法用于初始化Servlet,就是把该Servlet装载入内存

//只被调用一次,在创建好实例后立即被调用

@Override

public void init(ServletConfig config) throws ServletException {

System.out.println("初始化方法 init()...");

}

//被多次调用,每次请求都会调用service方法。实际用于响应请求的

@Override

public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {

System.out.println("执行方法主体 service()...");

}

//只被调用一次,在当前Servlet所在的WEB应用被卸载前调用,用于释放当前Servlet所占用的资源

@Override

public void destroy() {

System.out.println("servlet 销毁时调用方法 destroy()...");

}

}

  第三种:通常我们浏览器发出的请求都是 http 请求,那么请求方式可能有多种,比如 get,post,而我们在处理请求的时候都是在 service() 方法中,这种方式显然不够明确。那么我们通常是 继承 HttpServlet

package com.ys.servlet;

import java.io.IOException;

import javax.servlet.ServletConfig;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet{

//只被调用一次,第一次请求Servlet时,创建Servlet的实例,调用构造器

public HelloServlet() {

System.out.println("构造器 HelloServelt()...");

}

//该方法用于初始化Servlet,就是把该Servlet装载入内存

//只被调用一次,在创建好实例后立即被调用

@Override

public void init(ServletConfig config) throws ServletException {

System.out.println("初始化方法 init()...");

}

//处理 post 请求

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

}

//处理get请求

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

}

//只被调用一次,在当前Servlet所在的WEB应用被卸载前调用,用于释放当前Servlet所占用的资源

@Override

public void destroy() {

System.out.println("servlet 销毁时调用方法 destroy()...");

}

}

  其实上面三种方法,后面两种都是对 Servlet 类的封装,我们可以看 API,其实 HttpServlet 是继承 GenericServlet的。

实现servlet有几种方法,servlet各个方法的作用(7)

  而 GenericServlet 又是实现 Servlet 接口的

实现servlet有几种方法,servlet各个方法的作用(8)

上一页12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.