1. 程式人生 > >Servlet3.0生命週期,使用註解自動載入

Servlet3.0生命週期,使用註解自動載入

Servlet生命週期:

0--呼叫構造方法 
     構造方法獲得一個Servlet例項
1--呼叫初始化方法init();
     整個生命週期中,init()方法只被呼叫一次
2--呼叫service決定使用doGet()還是doPost() 
3--呼叫銷燬destroy()方法 

     關閉伺服器時執行銷燬方法。

1.index.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>
<h1>Servlet生命週期</h1>
<hr>
<a href="TestServlet1">以Get方式請求TestServlet1</a>
</body>
</html>

2.TestServlet1.java
package servlet;

import java.io.IOException;
import java.io.PrintWriter;

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 implementation class TestServlet1
 */
@WebServlet(name="TestServlet1",asyncSupported = true ,urlPatterns ="/TestServlet1",loadOnStartup=2)
public class TestServlet1 extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public TestServlet1() {
        System.out.println("TestServlet1構造方法被執行...");
    }

	/**
	 * @see Servlet#init(ServletConfig)
	 */
	public void init(ServletConfig config) throws ServletException {
		System.out.println("TestServlet1的初始執行方法");
	}

	/**
	 * @see Servlet#destroy()
	 */
	public void destroy() {
		 System.out.println("TestServlet1銷燬方法被執行...");
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("TestServlet1doGet()方法被執行...");
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		out.print("<h1>你好,我是TestServlet1</h1>");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//讓doPost()執行doGet()相同的操作
		System.out.println("TestServlet1的doPost()方法被執行...");
		doGet(request, response);
	}

}
3.TestServlet2.java
package servlet;

import java.io.IOException;
import java.io.PrintWriter;

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 implementation class TestServlet2
 */
@WebServlet(name="TestServlet2",asyncSupported = true,urlPatterns = "/TestServlet2", loadOnStartup=1)
public class TestServlet2 extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public TestServlet2() {
    	System.out.println("TestServlet2構造方法被執行...");
    }

	/**
	 * @see Servlet#init(ServletConfig)
	 */
	public void init(ServletConfig config) throws ServletException {
		System.out.println("TestServlet2的初始執行方法");
	}

	/**
	 * @see Servlet#destroy()
	 */
	public void destroy() {
		 System.out.println("TestServlet2銷燬方法被執行...");
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("TestServlet2doGet()方法被執行...");
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		out.print("<h1>你好,我是TestServlet2</h1>");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//讓doPost()執行doGet()相同的操作
				System.out.println("TestServlet2的doPost()方法被執行...");
				doGet(request, response);
	}

}