Servlet分析其生命周期和工作流程

Servlet生命周期

1.添加servlet的jar包
在这里插入图片描述
2.新建一个Servlet
在这里插入图片描述
3.写包名,Servlet名,点击next
在这里插入图片描述
4.next
在这里插入图片描述
5.注意,选择重写的方法,勾选init初始化,destroy销毁方法
在这里插入图片描述

6.servlet测试代码

package com.xx.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;

/**
 * Servlet implementation class TestServlet
 */
public class TestServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public TestServlet() {    
        System.out.println("构造方法调用了");
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see Servlet#init(ServletConfig)
	 */
	public void init(ServletConfig config) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("我是init初始化方法");
	}

	/**
	 * @see Servlet#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
		System.out.println("我是销毁方法!");
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("我是doGet方法");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("我是doPost方法");
	}

}


7.写一个jsp请求测试代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="TestServlet" method="post">
<input type="submit" value="提交"/>
</form>
</body>
</html>

8.浏览器请求这个jsp,点击提交,第一次提交,出现构造方法调用,init初始化方法调用,doPost方法调用,再次提交,只出现doPost方法,不会再次初始化。
在这里插入图片描述

9.当将代码里面的做一点更改,保存,等待重新加载时候(Reloading),会自动调用销毁方法

在这里插入图片描述
总结:

构造方法调用(1次)----> 初始化init调用(1次)----> Service(请求几次调用多次,这个方法是服务器决定调用doGet()还是doPost())---->doGet/doPost调用(请求几次调用几次)---->… … ---->重新加载时调用destroy方法销毁。


工作流程

新建一个类实现Servlet接口

package com.xx.servlet;

import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestServlet implements Servlet {

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public ServletConfig getServletConfig() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public String getServletInfo() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void init(ServletConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
	//强转为httpServlet类型
		HttpServletRequest request=(HttpServletRequest) arg0;
		HttpServletResponse response=(HttpServletResponse) arg1;
		
	}

}

在这里插入图片描述

总结步骤:

Web Client 向Servlet容器(Tomcat)发出Http请求
Servlet容器接收Web Client的请求
Servlet容器创建一个HttpRequest对象,将Web Client请求的信息封装到这个对象中。
Servlet容器创建一个HttpResponse对象
Servlet容器调用HttpServlet对象的doservice方法,把HttpRequest对象与HttpResponse对象作为参数传给HttpServlet 对象。
HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息。
HttpServlet调用HttpResponse对象的有关方法,生成响应数据。


谢谢

猜你喜欢

转载自blog.csdn.net/qq_43371004/article/details/89425013