Web Server cần một JSP engine ví dụ: Container) để xử lý các JSP page. JSP container có nhiệm vụ chặn các Request cho các JSP page. Bài hướng dẫn này sử dụng Apache, mà có JSP container có sẵn, để hỗ trợ phát triển các JSP page.
Một JSP container làm việc với Web Server để cung cấp môi trường runtime và các dịch vụ khác mà một JSP cần đến. Nó biết cách để hiểu các phần tử đặc biệt mà là một phần của JSP.
Sơ đồ sau minh họa vị trí của JSP container và JSP file trong một Web Application.
Tiến trình JSP
Dưới đây là các bước giải thích cách Web Server tạo các Webpage bởi sử dụng JSP:
- Với một trang thông thường, trình duyệt gửi một HTTP request tới Web server.
- Web server nhận ra rằng HTTP request là cho một JSP page và chuyển nó tới một JSP engine. Điều này được thực hiện bởi sử dụng một URL hoặc một JSP page mà kết thúc với .jsp thay vì .html.
- JSP engine tải JSP page từ đĩa và biến đổi nó thành một nội dung Servlet. Sự biến đổi này là rất đơn giản, trong đó tất cả Template Text được biến đổi thành các lệnh printIn() và tất cả phần tử JSP được biến đổi thành Java code mà triển khai các hành vi động tương ứng của trang.
- JSP engine biên dịch Servlet thành một lớp có thể thực thi và chuyển Request ban đầu tới một Servlet engine.
- Một phần của Web server triệu hồi Servlet engine tải lớp Servlet và thực thi nó. Trong quá trình thực thi, Servlet này tạo một output trong định dạng HTML, mà Servlet engine truyền tới Web server bên trong một HTTP response.
- Web server chuyển HTTP Response tới trình duyệt của bạn nội dung HTML tĩnh.
- Cuối cùng, trình duyệt web xử lý trang HTML đã được tạo một cách năng động bên trong HTTP response một cách chính xác như kiểu nó là một trang tĩnh.
Tất cả các bước trên có thể được minh họa trong sơ đồ sau:
Nét đặc trưng là, JSP engine kiểm tra để biết có hay không một Servlet cho một JSP file là đã tồn tại và có hay không ngày sửa đổi JSP là cũ hơn Servlet đó. Nếu JSP là cũ hơn Servlet đã tạo của nó, thì JSP engine giả sử rằng JSP đã không thay đổi và Servlet đã được tạo đó vẫn kết nối với nội dung của JSP. Điều này làm cho tiến trình khác biệt hơn khi so với các ngôn ngữ Scripting khác (ví dụ như PHP) và vì thế nó nhanh hơn.
Trước khi hiển thị ra trình duyệt, tập tin JSP phải được biên dịch thành Servlet, dùng bộ biên dịch JSP (JSP compiler). Bộ biên dịch JSP có thể tạo servlet thành mã nguồn Java trước, rồi biên dịch mã nguồn ra tập tin .class dùng bộ biên dịch Java, hoặc có thể trực tiếp tạo mã byte code cho servlet từ trang JSP. Ngoại trừ giai đoạn phiên dịch, một JSP page được xử lý chính xác giống như một Servlet thông thường.