Chủ Nhật, 6 tháng 7, 2014

MVC pattern


I/ Khái niệm:

1. Tách biệt phần ánh xạ, lưu trữ và xử lý dữ liệu (model) tách biệt với TP trình bày giao diện cho người dùng
Hiểu dễ hơn:
Tách biệt quá trình xây dựng chức năng cho ứng dụng và quá trình xây dựng giao diện cho người dùng.
Đưa ra Model để không cho người dùng tương tác trực tiếp vào dữ liệu vật lý (CSDL hay tập tin).
Như 2 điều trên ->tách Model và View. Nhưng cần có 1 thành phần lựa chọn và kết nối các thành phần này lại với nhau => Controller: đón nhận yêu cầu nhập xuất từ người dùng, xác định model tương ứng với view nhập để đưa model xử lý và hiện thị cho người dùng.

View: màn hình TV; Model: Nhận tín hiệu từ Controller; controller: ‘mop’(đồ điều khiển) bấm do bạn điều khiển.



Model:
- Là các thành phần hỗ trợ ánh xạ dữ liệu vật lí lên bộ nhớ, lưu trữ dữ liệu tạm thời, hỗ trợ các cách thức xử lý dữ liệu, hỗ trợ khả năng giao tiếp và trao đổi dữ liệu giữa các đối tượng khác trong bộ nhớ và cơ sở dữ liệu.
- 1 đối tượng Object trong khái niệm của lập trình hướng đối tượng
- Trong web của java, model là JavaBean hay Enterprise hay Web Service
View:
- Thành phần hỗ trợ trình bày dữ liệu và kết quả ra màn hình, hỗ trợ nhập thông tin từ người dùng
- Các thành phần này có khả năng truy cập Model, truy xuất Model thông qua những hành vi mà Model cho phép nhưng View không thể thay đổi các thành phần trong Model.
-Trong mô hình ứng dụng web: html, servlet, jsp…là thành phần đại diện VIEW.
Controller:
- Là các thành phần hỗ trợ kết nối người dùng server, đón nhập yêu cầu người dùng, thực hiện chuyển xử lí, lựa chọn và cập nhật Model và View tương ứng để trình bày cho người dùng.
- Hỗ trợ kết nối giữa người,model và view, giúp model xác định được view trình bày.

II/PHẦN CHÍNH:

1/ Servlet (1 vd của controller):
- Servlet là đoạn chương trình java thực thi trên Web Server hỗ trợ người lập trình java xây dựn trang web động.
- Servlet nhận request- yêu cầu từ client, sau đó thực hiện yêu cầu xử lí để gửi response
- servlet được load sẵn ở Web Server duy nhất lần đầu tiên khi ứng dụng được deploy và đáp ứng tức thời yêu cầu của người dùng qua Web Container.
- Servlet được server hỗ trợ cơ chế multithread giúp giảm tài nguyên và quá tải trong việc xử lí của server hay container.
**Cơ chế hoạt động:
Khi có request từ client gửi đến Server hay Web Container
Container sẽ lựa chọn 1 instance Servlet tuwogn ứng để đáp ứng request đó
Servlet lựa chọn để thực hiện xử lí và kết nối DB nếu cần
Sau khi servlet thực hiện xong, sẽ gửi kết quả ra container để gửi response về cho người dùng.
Browser đón nhận kết quả và xuất giao diện.
***Dể tạo 1 servlet ta implements HttpServlet
- HttpServlet được kế thừa từ GenericServlet
-GnericServlet được kế thừa từ tp chính là Servlet, ngoài ra từ ServletConfig,java.io.Serializable
Lưu ý: tất cả các lớp đều thuộc package javax.servlet
****Khi servlet chấp nhận lời gọi từ clien, nó sẽ đón nhận 2 tham số là ServletRequest (đối tượng chứa đựng dữ liệu truyền từ client đến server) và ServletResponse (đối tượng chứa đựng dữ liệu được truyền từ server đến client)
Khi servlet áp dụng protocol HTTP để giao tiếp thì các thành phần mở rộng từ 2 lớp trên tương ứng được cung cấp đó là HttpServletRequest và HttpServletResponse
***Servlet định nghĩa 3 tầm thao tác: request, session, ServletContext
Đây là vùng không gian bộ nhớ được cung cấp cho mỗi ứng dụng web để chứa các thông tin để giao tiếp với các thành phần khác trong server.
Mỗi vùng ko gian tồn tại trong 1 khoảng thời gian nhất định tùy theo quy định:
-request: tồn tại từ lúc gửi request cho đến khi response
-session: 1 khoảng thời gian từ lúc mở trình duyệt đến đóng trình duyệt, hết thời gian session, session bị hủy…
-ServletContext: hiểu đơn giản là application tồn tại từ lúc bắt đầu ứng dụng đến khi ứng dụng bị undeploy ra khỏi server hay server bị crash
**servlet cung cấp thêm 1 interface RequestDispatcher hỗ trợ việc giao tiếp và xác định view tương ứng trong xử lí.
RequestDispatcher hỗ trợ container chuyển request object từ đối tượng của server từ thành phần này sang thành phần khác.
Đối tượng cuối cùng là đối tượng sẽ respone kết quả trả về hay cho phép nhúng đối tượng này sang đối tượng khác
Cơ chế này còn giúp che dấu thông tin xử lí của các đối tượng xử lí trên thành url của trình duyệt-đảm bảo tính bảo mật cao
2/ Model:
1 thành phần cấu thành object-đối tượng và behaviors-các hành vi
Đảm bảo 4 tính chất:
-abstraction (mang tính chất chung nhất của object)
-encapsulation (cho phép người dùng truy cập các trạng thái của object thông qua các behavior)
-hierarchy (tính kế thừa)
-Modularity (phân chia module theo từng nhóm chức năng và tách biệt các thành phần theo dạng component để có thể dễ dàng cài đặt, maintenance-bảo trì, và tái sử dụng-reusable)
VD: javaBeans
a. Đặc điểm JavaBeans:
- Là 1 java class implements từ Serializable vì là object sử dụng qua protocol và giao tiếp với thành phần trong và ngoài server
- Bắt buộc có package để tái dùng qua lệnh import
- thuộc tính properties bắt buộc khai báo là private; việc khai thác thông qua getTenThuocTinh hay setTenThuocTinh (encapsulate).Hàm get đổi thành is nếu là kiểu boolean
- Buộc phải có 1 constructor không tham số để khởi tạo object=>thao tác không bị lỗi khi giá trị thuộc tính chưa cập nhật.
- Cài đặt đầy đủ các phương thức và hành vi mà JavaBeans cần giao tiếp với thế giới bên ngoài.
3/ View:
ex: html, jsp…
JSP: Java Server Pages
- Đây là ngôn ngữ scripting dùng ở server để hỗ trợ ứng dụng trong việc trình bày trang web động-cập nhật dữ liệu.
- JSP tích hợp HTML, XML, Java Code, kể cả Servlet:
+ tạo thuận lợi xây dựng giao diện.
+ Mở rộng khả năng sử dụng JSP qua định nghĩa các tag mới như XML
+ Cho phép nhúng trực tiếp code Java vào JSP thông qua Declaration-Khai báo biến và hàm, scriptlets-chứa code trực tiếp của Java và Expression-tính toán biểu thức và in ra kết quả màn hình.
- Bản chất JSP là Servlet-> các thành phần của Servlet sẽ có tồn tại hết trên JSP
- Ngoài ra, JSP ko cần biên dịch mà nó được biên dịch khi có request lần đầu tiên yêu cầu đến server.
- JSP cung cấp các tp implicit object để ng dùng sử dụng các thành phần tương tác trên server mà ko cần khai báo, khởi tạo
- kết xuất JSP thực chất là HTML, File JSP có phần mở rộng là .jsp
***Chu kì JSP
Khi có 1 yêu cầu từ client đến server, container xác định trang jsp được yêu cầu. Trang JSP được đưa qua JSP Engine để xử lí. JSP Engine thực hiện các bước:
+ Đọc cấu trúc file của JSP File từ trên xuống dưới, từ trái qua phải để chuyển đổi sang java code tương ứng.
+ Phát sinh Servlet từ nội dung parsing ở bước trên để cấu tạo thành servlet.
+ Thực hiện biên dịch code Servlet
+ Sau khi biên dịch thành công thì quá trình hoạt động sẽ thực hiện đúng theo chu kì.
+ tuwowgn tư 3 phương thức init, services, destroy của Servlet thì JSP sẽ có 3 phương thức tuwowgn ứng là jspInit, jspService và jspDestroy.
3/
4 tầm thao tác: page-tồn tại trong page, request-tồn tại trong page, request – tồn tại từ lúc bắt đầu gửi request cho đến khi response thành cồng, session, application (từ khi deploy đến khi kết thúc ứng dụng) – ServletContext
Để trang JSP mang tính chất đặc thù của View thì Java Sun đưa ra các thành phần cải tiến để tránh việc trộn lẫn code và xử lý giao diện và tạo tính đặc thù của giao diện. Chúng đó là
EL expression language
Cách viết tắt ngắn gọn trên trang JSP và che dấu một phần code java được xử lý truy cập
Định nghĩa các tầm vực truy cập là requestScope, pageScope, sessionScope, applicationScope
Cú pháp: ${trị hay biểu thức hay hằng số}
JSTL: JSP Standard Tag Library định nghĩa ra các tag hỗ trợ chức năng xử lý trên trang JSP một cách đơn giản và rõ ràng. Chúng gồm các tag như core, sql, fmt – format, xml, function
Chúng ta đã nắm được cách sử dụng EL và JSTL qua các bài tutorial cụ thể như EJB (xem phần giao diện trình bày của EJB)

Không có nhận xét nào:

Đăng nhận xét