JSP là gì, Servlet là gì – Tổng quan về JSP và Servlet

1. Tổng quan về JSP và Servlet

1.1 Giới thiệu về Servlet

  • Servlet là các thành phần máy chủ nhúng trên trình chủ Web server thực hiện xử lý yêu cầu và phát sinh ra các trang Web động trả về máy khách. Để sử dụng được Servlet cần có các trình chủ Java và hỗ trợ triệu gọi Servlet như Apache, JRun, Web Logic … Mặc dù vậy biên dịc và tạo Sevlet chúng ta chỉ cần đến trình biên dịch JDK mà không cần đến các trình chủ.
  • Servlet là trung tâm của công nghệ Web trong Java. Servlet thay thế cho các ứng dụng CGI truyền thống. Muốn hiểu rõ về lập trình Web trong java trước hết nên tìm hiểu rõ cơ chế hoạt động của servlet

1.2 Giới thiệu về JSP

  • JSP (viết tắt của tiếng Anh JavaServer Pages) còn được biết đến với một cái tên khác là Java Scripting Preprocessor – tạm dịch là “Bộ tiền xử lý văn lệnh Java” – là một công nghệ Java cho phép các nhà phát triển tạo nội dung HTML, XML hay một số định dạng khác của trang web một cách năng động, trong khi hồi âm yêu cầu của trình khách. Công nghệ này cho phép người ta nhúng mã Java và một số hành động xử lý đã được định trước (pre-defined actions) vào trong nội dung tĩnh của trang.
  • JSP là cách đơn giản hóa hơn cho Servlet. Nếu như đối với Servlet phải viết mã Java và biên dịch bằng tay trước khi sử dụng với trình chủ Web server thì JSP không cần điều này. JSP viết mã Java tương tự Servlet nhưng cho phép trộn lẫn Java với các thẻ HTML để tạo ra Servlet xử lý các yêu cầu mà trình khác gửi đến trang.
  • JSP đơn giản và dễ sử dụng hơn Servlet mặc dù sau khi biên dịch và thực thi chúng chỉ là một.

2. JSP

2.1 Kiến trúc JSP trong ứng dụng Web

sp-la-gi-servlet-la-gi-tong-quan-ve-jsp-va-servlet

Đây là cách thực nạp, dịch và thực thi trang của một trang JSP khi được triệu gọi trên Web Server

2.2 Chu trình sống của JSP

Trang JSP có chu trình sống xác định tính từ khi hệ thống đọc biên dịch trang JSP, gọi thực thi và loại bỏ trang ra khỏi bộ nhớ. Chu trình sống của trang JSP gồm có 5 giai đoạn sau:

2.2.1 Biên dịch trang

  • Khi trình duyệt yêu cầu trang JSP, Web server sẽ kiểm tra xem trang JSP đã được biên dịch hay chưa. Nếu chưa biên dịch hoặc đã biên dịch nhưng trang JSP mới vừa thay đổi mã nguồn thì Web Server sẽ thực hiện biên dịch trang JSP. Quá trình biên dịch JSP thực tế là chuyển trang JSP thành servlet. File biên dịch .class của trang chỉ diễn ra một lần. Nếu trang đã biên dịch và sau đó không bị thay đổi trong mã nguồn thì quá trình biên dịch sẽ không xảy ra nữa, do đó mà tốc độ thực thi sẽ nhanh hơn. Sau khi biên dịch, mã trang sẽ được nạp vào bộ nhớ để thực thi
  • Quá trình biên dich trang JSP sẽ được diễn ra như sau:
    Bước 1: Kiểm tra xem trang đã được dịch thành mã nguồn tương đương servlet hay chưa.
    Bước 2: Nếu chưa được biên dịch thì trang JSP sẽ được biên dịch thành file nguồn .java theo cấu trúc của servlet. Gọi trình biên dịch javac biên dịch file nguồn .java thành file thực thi của servlet .class.
    Bước 3: Nạp servlet đã biên dịch ở bước 2, thực thi trả kết quả về cho trình khách.
    Bước 4: Nếu file JSP đã được biên dịch trước đó : thực hiện kiểm tra xem nội dung file .jsp có thay đổi không, Nếu có thì quay lại bước 2 biên dịch lại trang, nếu không thì quay lại bước 3.

2.2.2 Nạp trang

  • Kể từ giai đoạn này, quá trình nạp trang tương tự như servlet (trang JSP sau khi biên dịch có thể coi như một servlet). Chỉ có một điểm khác là servlet chỉ được nạp một lần trong khi mã trang JSP mặc dù đã biên dịch nhưng phải nạp lại nhiều lần mỗi khi web server nhận được yêu cầu trang từ trình duyệt.

2.2.3 Khởi tạo

  • Khi nạp mã trang thành công, Web server sẽ gọi đến phương thức khỏi tạo trang. Và mặc dù JSP được biên dịch ra servlet nhưng phương thức khởi tạo cho trang JSP lại mang tên là jspInit() chứ không phải là init() như servlet.

2.2.4 Thực thi

  • Sau quá trình khởi tạo, Web server sẽ gọi đến phương thức _jspService (khác với servlet gọi đến doPost(), doGet() hoặc service()). Phương thức _jspService sẽ chuyển đến hai lớp đối tượng HttpServletRequest và HttpServletResponse để đọc và ghi kết xuất trả về trình khách.

2.2.5 Dọn dẹp

  • Khi trang JSP đã thực thi xong, trình chủ Web Server sẽ gọi phương thức jspDestroy() để giải phóng mã trang khỏi bộ nhớ. Tương tự như trong Servlet, có thể cài đặt phương thức jspDestroy() thực hiện giải phóng vùng nhớ hoặc đóng kết nối trả về tài nguyên cho hệ thống.
Đánh giá của bạn

Add Comment