Portlet thực hiện một hành động duy nhất trong mỗi chu trình thực thi. Các chu trình này được biết đến là các pha. Mỗi pha/chu trình được thể hiện bởi các phương thức tương ứng trong lớp controller (portlet class).
Trong Servlet, servlet container gọi phương thức service() để xử lý các yêu cầu của người dùng. Các portlet được thiết ekes để đặt cùng với nhau và cùng với các portlet khác trong cùng một trang (để sinh ra một trang web đầy đủ). Rất có thể người dùng không tương tác trực tiếp với một portlet.
Ví dụ, nếu một phương tức action được thực hiện đầy đủ trong một portlet thì phương thức render() ủa nó sẽ được gọi cùng với phương thức render() của tất cả các phương thức khác trên trang hiện tại. Trong trường hợp này, các portlet khác trong cùng trang sẽ vẫn sinh ra câu trả lời mặc dùng người dùng không trực tiếp tương tác với chúng.
Do cách hoạt động như trên, trong tài liệu mô tả kỹ thuật của portlet, người ta định nghĩa nhiều hơn một phương thức để xử lý các yêu cầu của người dùng. Các phương thức này đại diện cho các pha tương ứng trong Portlet.
Hai pha tiếp theo được thêm vào trong tiêu chuẩn JSR-286 (Portlet 2.0) gồm:
- Pha Event
- Pha Resource Serving
JSR-168 có hai pha trong khi JSR-286 có bốn pha (JSR-286 là tổng quát hơn JSR-168).
Các pha trong potlet
Các phương thức sau đây thể hiện cho các pha của portlet. Các phương thức này cũng được biết đến là vòng đời của portlet.
- init(): Phương thức này sẽ được gọi khi portlet được triển khai và khởi tạo bởi portlet container.
- render(): Phương thức này được gọi để sinh ra nội dung trên trang web. Hay còn được gọi là pha Represent Render.
- processAction(): Phương thức này được gọi khi bất kỳ thao các nào được gọi (thêm, sửa, xoá, ...).
- processEvent(): Phương thức này được gọi khi bất kỳ một sự kiện nào được kích hoạt.
- serveResource(): Phương thức này sẽ được gọi đến khi bất kỳ tài nguyên là được yêu cầu phục vụ bởi một URL yêu cầu tài nguyên (Resource URL).
- destroy(): Phương thức này sẽ được gọi khi portlet được xoá bỏ.
Các phương thức vòng đời hay các pha của portlet được quản lý bởi Portlet Container. Nó chịu trách nhiệm cho các công việc sau:
- Tải các lớp của portlet
- Tạo và duy trì các thể hiện (instance) của portlet.
- Khởi tạo portlet
- Gửi các yêu cầu của người dùng đến các thể hiện của portlet.
- Huỷ các thể hiện của portlet khi nó bị xoá khỏi Portlet container.
Nếu bạn đã quen với khái niệm servlet, bạn có thể dễ dàng hiểu portlet vì có sự tương quan giữa các phương thức vòng đợi của portlet và servlet.
Hình sau đây sẽ mô tả các phương thức vòng đời của servlet và portlet.
- Không có quan hệ trực tiếp giữa các phương thức vòng đời của portlet và servlet.
- Mô hình này chỉ để hiểu các phương thức vòng đời khi đặt cạnh nhau.
- Cả Portlet và Servlet, các phương thức init() và destroy() được gọi đến bởi container tương ứng (Portlet container và Servlet container).
- Đối với Servlet, tất cả các yêu cầu được phục vụ bởi phương thức service().
- Còn đối với Portlet, yêu cầu của người dùng được phục vụ bởi các phương thức khác nhau như phương thức render(), processAction(), processEvent() và serveResource() dựa vào pha hiện tại của portlet.
Giải thích chi tiết các phương thức vòng đời của portlet
Tác giả của bài viết gốc đã có các bài viết giải thích chi tiết các phương thức vòng đời của portlet. Hiện tại, mình chỉ đưa link của các bài viết này bằng Tiếng Anh. Khi nào có thời gian rảnh, mình sẽ dịch các bài này sang Tiếng Việt để phục vụ các bạn. Bạn có thể đọc chúng ở các địa chỉ sau:
- Pha khởi tạo của Portlet / Phương thức vòng đời – init()
- Vòng đời của Portlet - Phương thức render()
- Vòng đời của Portlet - Phương thức processAction()
- Vòng đời của Portlet - Phương thức serveResource()
- Portlet Lifecycle method – processEvent() – Available soon
Kết luận
Đây là một bài viết đáng đọc, nó cung cấp cho các bạn một cái nhìn tổng quát về hoạt động của một portlet.
Bài viết được dịch từ trang http://www.opensource-techblog.com/2014/12/introduction-to-portlet-phases-and.html.
Không có nhận xét nào:
Đăng nhận xét