Chu trình sống của các SERVLET

Mọi Servlet đều có chu trình sống như sau:

  • Server nạp và khởi tạo Servlet
  • Servlet xử lý các yêu cầu của các Client
  • Server huỷ bỏ Servlet khi không còn cần thiết.

Như trên đã phân tích, mọi Servlet đều có một chu trình sống nhất định. Nó được khởi tạo (nạp về), xử lý các yêu cầu của Client và sau khi hoàn tất các dịch vụ thi bị Server huỷ bỏ (Hình 6.4).

1. Khởi động Servlet

Việc khởi động một Servlet được thực hiện mặc định bời HttpServlet. Để khởi động một Servlet riêng, ta phải viết đê phưcmg thức init ().

public class MỵServlet …{

public void init() throws ServletException{ // Khởi tạo các giá trị ban đầu

}

}

Khi một Server nạp xong một Servlet thi nó gọi init () để bắt đầu Servlet đó.

Lưu ý: Server chi gọi init () một lần khi nạp Servlet và sau đó sẽ không gọi lại nữa, trừ khi phải nạp lại nó. Server không thể nạp lại nểu Servlet đó chưa bị huỷ bò bời lời gọi destroy (). Phuomg thức init 0 cỏ thể được nạp chồng theo mẫu public void init(ServletConfig config) throws ServletException như đã nêu ở trên.

2. Tương tác với các Client

Lớp HttpServlet xử lý các yêu cầu của Client thông qua các dịch vụ của nó. Các phương thức trong HttpServlet xử lý yêu cầu của Client đều có hai đối số:

  • Một là đối tượng của HttpServletRequest, bao gồm cả dữ liệu từ Nó cho phép nhận được các tham số mà Client gửi đến như một phần của các yêu cầu, thông qua các phuong thúc getParameterName () , getParameterValue () để xác định tên gọi và giá trị của các tham số.
  • Hai là đối tượng của HttpServletResponse, bao gồm cả dữ liệu hồi đáp cho HttpServletResponse cung cấp hai phương thức để trả lại kết quả cho Client. Phương thức getWriter() ghi dữ liệu dưới dạng vãn bàn còn getoutputstream () cho lại dữ liệu dạng nhị phân.

Ngoài ra, để xử lý được các yêu cầu của HTTP gửi đến cho một Servlet thì phải mở rộng lớp HttpServlet và viết đè các phương thức xử lý các yêu cầu như doGet (), doPost().

2. Hủy bỏ Servlet

Sau khi nạp các Servlet và xử lý chúng xong thì cần phải dọn dẹp hệ thống, loại bò những Servlet không còn được sử dụng tiếp. Phương thức destroy!) của lóp HttpServlet được sử dụng để loại bỏ một đổi tượng Servlet khi nó không còn cần thiết. Để loại bò một tài nguyên nào đỏ cụ thể ưong một Servlet riêng thì phải viết đè phương thức destroy ().

Server sẽ gọi destroy () để huỳ một Servlet, sau khi nó kết thúc tất cà các dịch vụ theo yêu cầu. Ví dụ sau đây mô tả một Servlet mờ một kết nối với CSDL thông qua phương thức init () và sau đó nó sẽ bị phá huỷ bởi phương thức destroy ().

public class DBServlet extends HttpServletl Connection connection = null; public void inito throws ServletException{

// Mở một kết nối với CSDL

try {

databaseưrl = getInitParameter(“databaseUrl”);

// Đọc tên người sử dụng và mật khẩu

connection = DriverManager.getConnection( userName, password);

}catch(Exception e){

throw new UnavailableException(this,

“Không mờ được CSDL”);

}

}

// …

public void destroy() {

// Đóng các kết nối để dọn dẹp bộ nhó

connection.close (); connection = null;

}

}

Server sẽ gọi destroy () sau khi tất cả các dịch vụ đã được kết thúc.