Vòng đời của JSP

vòng đời của jsp

Vòng đời JSP là gì?

Vòng đời của JSP được định nghĩa là việc dịch Trang JSP thành servlet vì Trang JSP trước tiên cần được chuyển đổi thành servlet để xử lý các yêu cầu dịch vụ. Vòng đời bắt đầu bằng việc tạo ra JSP và kết thúc bằng sự tan rã của JSP đó.

Các giai đoạn khác nhau của vòng đời JSP

Khi trình duyệt yêu cầu một JSP, công cụ JSP trước tiên sẽ kiểm tra xem nó có cần biên dịch trang hay không. Nếu JSP được biên dịch lần cuối hoặc sửa đổi gần đây được thực hiện trong JSP thì công cụ JSP sẽ biên dịch trang.

Quá trình biên dịch trang JSP bao gồm ba bước:

  • Phân tích cú pháp của JSP
  • Biến JSP thành servlet
  • Biên dịch servlet

Sơ đồ vòng đời của JSP

Vòng đời của JSP được mô tả trong sơ đồ bên dưới.

Vòng đời của JSP

Các bước sau đây giải thích vòng đời của JSP:

  1. Bản dịch trang JSP
  2. Biên dịch trang JSP(Biên dịch trang JSP thành _jsp.java)
  3. Tải lớp (_jsp.java được chuyển đổi thành tệp lớp _jsp.class)
  4. Khởi tạo(Đối tượng của servlet được tạo được tạo)
  5. Khởi tạo(_jspinit() phương thức được gọi bởi container)
  6. Yêu cầu xử lý(_jspservice() phương thức được gọi bởi container)
  7. Hủy hoại (_jspDestroy() phương thức được gọi bởi container)

Chúng ta hãy tóm tắt chi tiết hơn về các điểm trên:

1) Bản dịch trang JSP:

A Java tệp servlet được tạo từ tệp nguồn JSP. Đây là bước đầu tiên của vòng đời JSP. Trong giai đoạn dịch, vùng chứa xác thực tính chính xác về mặt cú pháp của trang JSP và tệp thẻ.

  • Bộ chứa JSP diễn giải các chỉ thị và hành động chuẩn, cũng như các hành động tùy chỉnh tham chiếu đến các thư viện thẻ (tất cả đều là một phần của trang JSP và sẽ được thảo luận ở phần sau) được sử dụng trong trang JSP này.
  • Trong phần mô tả bằng hình ảnh ở trên, demo.jsp được dịch sang demo_jsp.java ở bước đầu tiên
  • Hãy lấy một ví dụ về “demo.jsp” như dưới đây:

Demo.jsp

<html>
<head>
<title>Demo JSP</title>
</head>
<%
int demvar=0;%>
<body>
Count is:
<% Out.println(demovar++); %>
<body>
</html>

Giải thích mã cho Demo.jsp

Dòng mã 1: thẻ bắt đầu html

Dòng mã 2: Thẻ đầu

Dòng mã 3 – 4: Thẻ tiêu đề tức là Demo JSP và thẻ đóng đầu

Dòng mã 5 – 6: Thẻ Scriptlet trong đó khởi tạo biến demo

Dòng mã 7 – 8: Trong thẻ nội dung, một văn bản sẽ được in ở đầu ra (Đếm là: )

Dòng mã 9: Thẻ tập lệnh nơi cố gắng in biến demovar với giá trị tăng dần

Dòng mã 10 – 11: Đã đóng thẻ nội dung và thẻ HTML

Trang JSP demo được chuyển đổi thành servlet demo_jsp trong đoạn mã bên dưới.

Vòng đời của JSP

Giải thích mã cho Demo_jsp.java

Dòng mã 1: Lớp Servlet demo_jsp đang mở rộng lớp cha HttpServlet

Dòng mã 2 – 3: Ghi đè phương thức dịch vụ của jsp tức là _jspservice có các đối tượng HttpServletRequest và HttpServletResponse làm tham số

Dòng mã 4: Phương pháp mở

Dòng mã 5: Gọi phương thức getWriter() của đối tượng phản hồi để lấy PrintWriterobject (in biểu diễn các đối tượng được định dạng thành luồng đầu ra văn bản)

Dòng mã 6: Gọi phương thức setContentType của đối tượng phản hồi để đặt loại nội dung

Dòng mã 7: Sử dụng write() phương thức của đối tượng PrintWriter đang cố phân tích cú pháp html

Dòng mã 8: Đang khởi tạo biến demovar thành 0

Dòng mã 9: Đang gọi write() phương thức của đối tượng PrintWriter để phân tích văn bản

Dòng mã 10: Đang gọi print() phương thức của đối tượng PrintWriter để tăng biến demovar từ 0+1=1. Do đó, đầu ra sẽ là 1

Dòng mã 11: Sử dụng write() phương thức của đối tượng PrintWriter đang cố phân tích cú pháp html

Đầu ra:

Vòng đời của JSP

  • Ở đây bạn có thể thấy rằng trong ảnh chụp màn hình, Đầu ra là 1 vì demvar được khởi tạo thành 0 và sau đó tăng lên 0+1=1

Trong ví dụ trên,

  • demo.jsp, là một JSP trong đó một biến được khởi tạo và tăng dần. JSP này được chuyển đổi thành servlet (demo_jsp.class ) trong đó công cụ JSP tải Trang JSP và chuyển đổi thành nội dung servlet.
  • Khi quá trình chuyển đổi diễn ra, tất cả văn bản mẫu sẽ được chuyển đổi thành println() tuyên bố và tất cả phần tử JSP được chuyển đổi thành Java Mã.

Đây là cách một trang JSP đơn giản được dịch sang một lớp servlet.

2) Biên soạn trang JSP

  • Tệp java servlet đã tạo được biên dịch thành lớp java servlet
  • Việc dịch trang nguồn java sang lớp triển khai của nó có thể xảy ra bất cứ lúc nào giữa việc triển khai trang JSP vào vùng chứa và xử lý trang JSP.
  • Trong mô tả bằng hình ảnh ở trên, demo_jsp.java được biên dịch thành tệp lớp demo_jsp.class

3) Tải lớp

  • Lớp Servlet đã được tải từ nguồn JSP hiện được tải vào vùng chứa

4) Khởi tạo

  • Ở bước này, đối tượng tức là thể hiện của lớp được tạo ra.
  • Vùng chứa quản lý một hoặc nhiều phiên bản của lớp này để đáp ứng các yêu cầu và các sự kiện khác. Thông thường, một thùng chứa JSP được xây dựng bằng cách sử dụng một thùng chứa servlet. Bộ chứa JSP là phần mở rộng của bộ chứa servlet vì cả bộ chứa đều hỗ trợ JSP và servlet.
  • Giao diện JSPPage được cung cấp bởi container cung cấp init()destroy() phương pháp.
  • Có một giao diện HttpJSPPage phục vụ các yêu cầu HTTP và nó cũng chứa phương thức dịch vụ.

5) Khởi tạo

public void jspInit()
{
	//initializing the code
}
  • _jspinit() phương thức sẽ khởi tạo phiên bản servlet được tạo từ JSP và sẽ được vùng chứa gọi trong giai đoạn này.
  • Khi instance được tạo, phương thức init sẽ được gọi ngay sau đó
  • Nó chỉ được gọi một lần trong vòng đời của JSP, phương thức khởi tạo được khai báo như trên

6) Xử lý yêu cầu

void _jspservice(HttpServletRequest request HttpServletResponse response)
{
	//handling all request and responses
}
  • _jspservice() phương thức được vùng chứa gọi ra cho tất cả các yêu cầu được đưa ra bởi trang JSP trong vòng đời của nó
  • Đối với giai đoạn này, nó phải trải qua tất cả các giai đoạn trên và sau đó chỉ có thể gọi phương thức dịch vụ.
  • Nó chuyển các đối tượng yêu cầu và phản hồi
  • Phương pháp này không thể được ghi đè
  • Phương thức được hiển thị ở trên: Nó chịu trách nhiệm tạo ra tất cả các phương thức HTTP, tức là GET, POST, v.v.

7) Phá hủy

public void _jspdestroy()
{
            //all clean up code
}
  • _jspdestroy() phương thức cũng được gọi bởi container
  • Phương thức này được gọi khi vùng chứa quyết định rằng nó không còn cần phiên bản servlet cho các yêu cầu dịch vụ nữa.
  • Khi lệnh gọi phương thức hủy được thực hiện, servlet đã sẵn sàng để thu gom rác
  • Đây là sự kết thúc của vòng đời.
  • Chúng ta có thể ghi đè jspdestroy() phương pháp khi chúng tôi thực hiện bất kỳ hoạt động dọn dẹp nào như giải phóng kết nối cơ sở dữ liệu hoặc đóng các tệp đang mở.