Servlet3.0生命週期,使用註解自動載入
阿新 • • 發佈:2019-01-07
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
3.TestServlet2.javapackage 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); } }
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); } }