Servlet生命週期與響應流程詳解
阿新 • • 發佈:2019-01-06
1.Servlet生命週期
如下圖所示:
由上圖可得,servlet是單例項,是執行緒安全的。
2.Servlet響應流程
servlet引擎檢查是否已經裝載並建立了該servlet的例項物件。如果是,直接執行第四步,否則,執行第二步。
裝載並建立該servlet的一個例項物件,呼叫該servlet的構造方法。
呼叫servlet例項物件的init()方法。
建立一個用於封裝請求的ServletRequest物件和一個代表響應訊息的ServletResponse物件。然後呼叫Servlet的service()方法,並將請求和響應物件作為引數傳遞進去。
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。