1. 程式人生 > >Servlet生命週期與響應流程詳解

Servlet生命週期與響應流程詳解

1.Servlet生命週期

如下圖所示:

這裡寫圖片描述

由上圖可得,servlet是單例項,是執行緒安全的。

2.Servlet響應流程

  1. servlet引擎檢查是否已經裝載並建立了該servlet的例項物件。如果是,直接執行第四步,否則,執行第二步。

  2. 裝載並建立該servlet的一個例項物件,呼叫該servlet的構造方法。

  3. 呼叫servlet例項物件的init()方法。

  4. 建立一個用於封裝請求的ServletRequest物件和一個代表響應訊息的ServletResponse物件。然後呼叫Servlet的service()方法,並將請求和響應物件作為引數傳遞進去。

  5. web應用程式被停止或重啟前,servlet引擎將解除安裝servlet,並在servlet解除安裝之前呼叫servlet的destroy方法。

3.Servletconfig

封裝了Servlet的配置資訊,並且可以獲取ServletContext物件。由Tomcat自動裝載

4.ServletContext

Servlet引擎為每個web應用程式都建立一個對應的ServletContext物件,該物件被包含在ServletConfig物件中。

由於一個web應用程式中的所有Servlet都共享同一個ServletContext物件,所以,ServletContext 物件被稱為application物件(web應用程式物件)。

5.Service()

Service()–Servlet執行主體,由伺服器呼叫;

6.ServletRequest

ServletRequest–封裝了請求資訊 ,由伺服器建立;

一般使用時強轉為HttpServletRequest

這裡寫圖片描述

方法示例:

1.String user = request.getParameter("user");

2.String [] interestings = request.getParameterValues("interesting");

3.Enumeration<String> names = request.getParameterNames();
        while(names.hasMoreElements
()){ String name = names.nextElement(); String val = request.getParameter(name); System.out.println("^^" + name + ": " + val); } 4.Map<String, String[]> map = request.getParameterMap(); for(Map.Entry<String, String[]> entry: map.entrySet()){ System.out.println("**" + entry.getKey() + ":" + Arrays.asList(entry.getValue())); } 5.String requestURI = httpServletRequest.getRequestURI(); 6.String method = httpServletRequest.getMethod(); 7.String queryString = httpServletRequest.getQueryString(); 8.String servletPath = httpServletRequest.getServletPath()

7.ServletResponse

封裝了響應資訊,由伺服器建立;一般使用時強轉為HttpServletResponse。