servlet的生命周期

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)=====");
	}
       
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值