package com.htf.web.controller;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* servlet的生命周期
* 1.加载一个servlet类
* 2.实例化
* 3.初始化
* 4.有请求过来,那么 调用service方法处理 (service方法不管是什么请求方式,他都能处理)
* 5.service方法再根据请求的方式是get还是post,调用doGet(只能处理get方式的请求)或者doPost(只能处理post方式的请求)处理
* 6.销毁servlet
*
* 在正常情况下生命周期是这样的
* 构造方法---->init(ServletConfig config)---->service()---->doGet()
* 1.只有请求servlet,servlet才会被实例化
* 2.实例化方法和初始化方法在生命周期中只执行一次
* 3.tomcat重启时会,销毁servlet
*
* 特殊情况1
* 如果servlet比较特殊,需要在其他servlet之前初始化(tomcat启动时就实例化servlet),那么可以配置loadOnStartup=0
* 如后面我们学习springMVC时的DispatcherServlet,他就是这种servlet
*
* 特殊情况2
* 需要获取传给servlet的初始化参数时
定义servlet的初始化参数
* <servlet>
<servlet-name>Servlet2</servlet-name>
<servlet-class>com.neuedu.web.controller.Servlet2</servlet-class>
<init-param>
<param-name>ENCODE</param-name>
<param-value>utf-8</param-value>
</init-param>
*</servlet>
* @Override
public void init(ServletConfig config) throws ServletException {
//怎么获取传给servlet的初始化参数呢?
String value=config.getInitParameter("ENCODE");
System.out.println("encode:"+value);
}
*
* @author htf
*
*/
@WebServlet(value="/Servletlife",loadOnStartup=0)
public class Servletlife extends HttpServlet {
private static final long serialVersionUID = 1L;
public Servletlife() {
System.out.println("实例化Servletlife");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("=====doGet()=====");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("=====doPost()=====");
}
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("=====service()=====");
//service方法根据请求的方式还是get还是post,调用doGet或者doPost
String mothod=request.getMethod();
if("GET".equalsIgnoreCase(mothod)) {
doGet(request, response);
}
if("POST".equalsIgnoreCase(mothod)) {
doPost(request, response);
}
}
@Override
public void destroy() {
System.out.println("=====destroy()=====");
}
@Override
public void init() throws ServletException {
System.out.println("=====init()=====");
}
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("=====init(ServletConfig config)=====");
}
}
servlet的生命周期
最新推荐文章于 2024-09-30 11:03:07 发布
关键词由CSDN通过智能技术生成