专栏首页猿计划Servlet生命周期

Servlet生命周期

Servlet生命周期

先创建一个简单的项目

目录结构如下:

创建HelloServlet类,实现Servlet接口

为了方便演示,这里对每个方法进行了打印操作。

package com.zhenghui;

import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

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 config) throws ServletException {
		System.out.println("init");
	}

	@Override
	public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
		System.out.println("service");
	}
	
	public HelloServlet() {
		System.out.println("This is a HelloServlet");
	}

}

编辑web.xml进行Servlet的映射及配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>JavaWeb_HelloWord</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list> 
  
  <!--配置servlet  -->
  <servlet>
  	<!--Servlet 注册的名字  -->
  	<servlet-name>helloServlet</servlet-name>
  	<!--Servlet 的全类名  -->
  	<servlet-class>com.zhenghui.HelloServlet</servlet-class>
  </servlet>
  
 <!--映射servlet  -->
  <servlet-mapping> 
    <!--需要和某一个Servlet的servlet-name子节点的文本节点一致  -->
  	<servlet-name>helloServlet</servlet-name>
  	<!--映射具体的访问路径:/代表当前WEB应用的根目录-->
  	<url-pattern>/hello</url-pattern>
  </servlet-mapping>  
  
</web-app>

启动,测试

刷新测试 由于我刷新了好几次,所以会打印多了service

关闭服务测试

由前面两个实验可以看得出,Servlet生命周期生效的有四个方法,分别为:

1、构造方法:只被调用一次,只有第一次请求Servlet时,创建Servlet时被调用。

2、init方法:只被调用一次。在创建好实例后立即被调用。用于初始化当前Servlet。
3、service方法:被多次调用。每次请求都会调用。相应请求的。
4、destroy方法:只被调用一次,在当前Servlet所在的web应用在被关闭前调用。用于释放当前Servlet所占用的资源。

其他

<!--可以指定Servlet被创建的时机  -->
<load-on-startup>2</load-on-startup>
 <!--配置servlet  -->
  <servlet>
  	<!--Servlet 注册的名字  -->
  	<servlet-name>helloServlet</servlet-name>
  	<!--Servlet 的全类名  -->
  	<servlet-class>com.zhenghui.HelloServlet</servlet-class>
  	<!--可以指定Servlet被创建的时机  -->
  	<load-on-startup>2</load-on-startup>
  </servlet>
  
    <!--配置servlet  -->
  <servlet>
  	<!--Servlet 注册的名字  -->
  	<servlet-name>ceshiServlet</servlet-name>
  	<!--Servlet 的全类名  -->
  	<servlet-class>com.zhenghui.ceshiServlet</servlet-class>
  	<!--可以指定Servlet被创建的时机  -->
  	<load-on-startup>5</load-on-startup>
  </servlet>
  
 <!--映射servlet  -->
  <servlet-mapping> 
    <!--需要和某一个Servlet的servlet-name子节点的文本节点一致  -->
  	<servlet-name>helloServlet</servlet-name>
  	<!--映射具体的访问路径:/代表当前WEB应用的根目录-->
  	<url-pattern>/hello</url-pattern>
  </servlet-mapping>  
  
  
   <!--映射servlet  -->
  <servlet-mapping> 
    <!--需要和某一个Servlet的servlet-name子节点的文本节点一致  -->
  	<servlet-name>ceshiServlet</servlet-name>
  	<!--映射具体的访问路径:/代表当前WEB应用的根目录-->
  	<url-pattern>/ceshi</url-pattern>
  </servlet-mapping>  

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Servlet配置初始值,并获取初始值

    配置了两个初始值 username和password值分别为root和123456

    TrueDei
  • 数据库期末复习---简答题整理

    事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。

    TrueDei
  • LeetCode 107. 二叉树的层次遍历 II

    给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

    TrueDei
  • JAVAEE 初级阶段(一)

    GenericServlet 和 HttpServlet ,同时HttpServlet 继承了 GenericServlet

    猎户星座1
  • 关于web.xml配置 <servlet-name>default</servlet-name>

    在web.xml文件中经常看到这样的配置<servlet-name>default</servlet-name>,这个配置的作用是:对客户端请求的静态资源如图片...

    用户1220053
  • 这个404你能解决吗?

    去看webapps里工程目录下,index.html文件是有的,见鬼了,是哪儿出了问题?

    我的小碗汤
  • spring 在启动服务器的时候报错 Could not open ServletContext resource [/WEB-INF/dispather-servlet.xml]

     java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-IN...

    bear_fish
  • JFreeChart与struts框架冲突解决

    曼路
  • 谈谈 ServletConfig 和 ServletContext

    一、ServletConfig 和 ServletContext 的概念含义创建时期作用范围二、ServletConfig 和 SerlvetContext 代...

    cxuan
  • Servlet简述

    编写程序时, 不需要有main函数了。因为写完后,就把编写的程序编译成字节码,放到服务器上面。当前发送就一个请求的时候,服务器就会按照一定规则调用编写的代码

    木瓜煲鸡脚

扫码关注云+社区

领取腾讯云代金券