J2EE簡介之Servlet的生命周期
J2EE是一個標(biāo)準(zhǔn)中間件體系結(jié)構(gòu),目的在于簡化和規(guī)范分布式多層企業(yè)應(yīng)用系統(tǒng)的開發(fā)和部署.
典型的J2EE結(jié)構(gòu)的應(yīng)用程序有:客戶層,表示邏輯層,業(yè)務(wù)邏輯層,企業(yè)信息系統(tǒng)層。
servlet是一種獨立于操作系統(tǒng)平臺和網(wǎng)絡(luò)傳輸協(xié)議的服務(wù)器端的Java應(yīng)用程序,它用于擴展服務(wù)器的功能,可以生成動態(tài)的web頁面。
Servlet 的生命周期
Servlet 的生命周期始于將它裝入 Web 服務(wù)器的內(nèi)存時,并在終止或重新裝入 Servlet 時結(jié)束。
(1) 初始化
在下列時刻裝入 Servlet:
如果已配置自動裝入選項,則在啟動服務(wù)器時自動裝入
在服務(wù)器啟動后,客戶機***向 Servlet 發(fā)出請求時
重新裝入 Servlet 時裝入 Servlet 后,服務(wù)器創(chuàng)建一個 Servlet 實例并且調(diào)用 Servlet 的 init() 方法。在初始化階段,Servlet 初始化參數(shù)被傳遞給 Servlet 配置對象。
(2) 請求處理
對于到達服務(wù)器的客戶機請求,服務(wù)器創(chuàng)建特定于請求的一個“請求”對象和一個“響應(yīng)”對象。服務(wù)器調(diào)用 Servlet 的 service() 方法,該方法用于傳遞“請求”和“響應(yīng)”對象。service() 方法從“請求”對象獲得請求信息、處理該請求并用“響應(yīng)”對象的方法以將響應(yīng)傳回客戶機。service() 方法可以調(diào)用其它方法來處理請求,例如 doGet()、doPost() 或其它的方法。
(3) 終止
當(dāng)服務(wù)器不再需要 Servlet, 或重新裝入 Servlet 的新實例時,服務(wù)器會調(diào)用 Servlet 的 destroy() 方法。
一個servlet樣例(ServletSample.java)如下:
- import java.io.*;
- import java.util.*;
- import javax.servlet.*;
- import javax.servlet.http.*;
- public class ServletSample extends HttpServlet { // ***步: 擴展 HttpServlet 抽象類。
- public void doGet (HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException { // 第二步:重寫doGet()方法
- String myName = ""; // 第三步:獲取HTTP 請求信息
- java.util.Enumeration keys = request.getParameterNames();
- while (keys.hasMoreElements());
- {
- key = (String) keys.nextElement();
- if (key.equalsIgnoreCase("myName"))
- myName = request.getParameter(key);
- }
- if (myName == "")
- myName = "Hello";
- // 第四步:生成 HTTP 響應(yīng)。
- response.setContentType("text/html");
- response.setHeader("Pragma", "No-cache");
- response.setDateHeader("Expires", 0);
- response.setHeader("Cache-Control", "no-cache");
- out.println("");
- out.println("");
- out.println("
- Just a basic servlet
- ");
- out.println ("
- " + myName + ", this is a very basic servlet that writes an HTML
- page.");
- out.println ("
- For instructions on running those samples on your WebSphere應(yīng)用服務(wù)器, "+
- "open the page:");
- out.println("
- http://your.server.name/IBMWebAs/samples/index.aspl
- ");
- out.println("where your.server.name is the hostname of your WebSphere應(yīng)用服
- 務(wù)器.");
- out.println("");
- out.flush();
- }
- }
Cookie的格式實際上是一段純文本信息, 由服務(wù)器隨著網(wǎng)頁一起發(fā)送到客戶端, 并保存在客戶端硬盤中指定的目錄的.
一個簡單的例子
1. 寫入Cookie --- writecookie.jsp
-------------------------------------------------------------
- <%@ page contentType="text/html; charset=ISO8859_1" %>
- <%
- Cookie _cookie=new Cookie("user_delfancom", "delfan");
- _cookie.setMaxAge(30*60); // 設(shè)置Cookie的存活時間為30分鐘
- response.addCookie(_cookie); // 寫入客戶端硬盤
- out.print("寫Cookie完成");
- %>
2. 讀取Cookie.jsp --- readcookie.jsp
-------------------------------------------------------------
- <%
- Cookie cookies[]=request.getCookies(); // 將適用目錄下所有Cookie讀入并存入cookies數(shù)組中
- Cookie sCookie=null;
- String sname=null;
- String name=null;
- if(cookies==null) // 如果沒有任何cookie
- out.print("none any cookie");
- else
- {
- out.print(cookies.length + "
- ");
- for(int i=0;i{
- sCookie=cookies[i];
- sname=sCookie.getName();
- name = sCookie.getValue();
- out.println(sname + "->" + name + "
- ");
- }
- }
- %>
以上介紹了Servlet的生命周期。
【編輯推薦】