Mô hình MVC-MVC2, Model-View-Controller, Ví dụ, Code Demo + JSP/Servlet/JavaBean

I. Mô hình MVC  cấu trúc model:

(!) MVC1 Model1:

Servlet và JSP là các công nghệ chính để phát triển các ứng dụng web.

Công nghệ Servlet không tạo tiến trình, thay vào đó nó tạo Thread để xử lý yêu cầu. Lợi thế của việc tạo Thread là nó không cấp phát khu vực bộ nhớ riêng rẽ. Do đó, nhiều yêu cầu liên tiếp nhau có thể dễ dàng được xử lý bởi Servlet. Vấn đề chính xảy ra với Servlet là nó cần tái biên dịch nếu có bất cứ code nào được sửa đổi.

JSP xử lý hầu hết các vấn đề của Servlet. Bạn không cần tái triển khai ứng dụng nếu JSP page được sửa đổi. JSP cung cấp hỗ trợ để phát triển các ứng dụng web sử dụng JavaBean, thẻ tùy biến Custom Tag và JSTL để bạn có thể đặt tính logic riêng với JSP, do đó việc test và debug trở nên dễ dàng hơn.

(!) MVC2 Model2:

MVC(Model- Viewer – Controller) đây là một mô hình kiến trúc phần mềm được sử dụng phổ biến hiện nay bao gồm các thành phần

mvc2

  1. Model(lưu trữ dữ liệu) là những thành phần có nhiệm vụ lưu trữ thông tin, trạng thái của các đối tượng, . Lấy ví dụ, chúng ta có lớp Product được sử dụng để mô tả dữ liệu từ bảng Products trong SQL, bao gồm ProductID, OrderDate…
  2. Viewer(hiển thị)  là các thành phần chịu trách nhiệm hiển thị các thông tin lên cho người dùng thông qua giao diện. Thông thường, các thông tin cần hiển thị được lấy từ thành phần Models. Ví dụ, đối tượng Product có một “Edit” view bao gồm các textboxes, các dropdowns và checkboxes để chỉnh sửa các thuộc tính của sản phẩm; có một “Display” view gồm 2 dòng, cột dòng là ProductID, dòng sau là OrderDate… để xem thông tin về sản phẩm.
  3. Controller(điều khiển) có nhiệm vụ riêng biệt và độc lập với thành phần còn lại.

 

(!)  Vì sao cần có MVC:

Sự nhập nhằng giữa Giao diện và Code trong các ngôn ngữ lập trình Scripting như JSP, PHP, ASP làm cho Code chương trình khó hiểu, khó bảo trì, khó hình dung trong quá trình cài đặt hệ thống. MVC ra đời với mục tiêu khắc phục những vấn đề đó. Điều này, bạn sẽ thấy rõ ràng hơn trong các phần tiếp theo khi chúng ta tiến hành áp dụng MVC để xây dựng ứng dụng

II. Phương thức hoạt động:

Bước 1: User tương tác gửi sự kiện khi người dùng thao tác tới Controller

Bước 2: Controller nhận và gửi nó tới model để xử lý

Bước 3: Cùng lúc với bước 2 cotroller cũng gửi sự kiện tới view

Bước 4: View nhận sự kiện từ controller và phương thức xử lý từ model

Bước 5: Sau đó View trả lại kết quả hiển thị cho user

III. Sự khác biệt giữa MVC1 và MVC2:

(!) MVC1:

62592-model1sml-1

– Khi người sử dụng dùng các nút bấm, menu hoặc link … trên trình duyệt Web (Web browser) để thực hiện một thao tác, một lệnh (có thể kèm theo các tham số) được gửi tới một trang JSP tương ứng.
– Trang JSP này sẽ khởi tạo một hoặc nhiều Java Bean (nếu cần thiết), truyền các lệnh cần thi hành tới Java Bean. Chú ý rằng đây là các Java Bean thông thường, chứ không phải Enterprise Java Bean.
– Sau khi Java Bean thực hiện xong việc truy xuất hoặc cập nhật dữ liệu, trang JSP ban đầu có thể hiển thị dữ liệu lấy từ Bean (JSP ban đầu đóng luôn vai trò View), hoặc chọn một trang JSP khác để hiện dữ liệu từ Bean (JSP ban đầu đóng luôn vai trò Controller). Trong một thiết kế tốt, để bảo đảm việc tách rời phần trình bày và logic của chương trình, trang JSP nhận request chỉ đóng vai trò Điều khiển (Controller).
– Có một nhược điểm là phần logic điều khiển được viết trong trang JSP, như vậy phần chương trình Java phức tạp dùng để điều khiển sẽ bị lẫn vào trong mã HTML dùng để trình bày. Độ phức tạp của chương trình càng cao, thì trang JSP càng khó bảo trì. Hơn nữa trong các dự án phần mềm phức tạp, thì phẩn hiển thị của trang JSP thường được làm bởi người thiết kế Web, giỏi về HTML và đồ họa, còn phần chương trình Java được viết bởi lập trình viên chuyên về lập trình. Trong các dự án phức tạp, dùng JSP làm phần điều khiển sẽ làm lẫn lộn việc phân chia ranh giới trách nhiệm giữa nhóm thiết kế đồ họa và nhóm lập trình, đôi khi dẫn đến việc bảo trì và phát triển trở nên rất khó khăn, gần như không thể làm được.

(!) MVC2:

5bde0-model2sml.gif

– Trong MVC model 2, một hoặc nhiều servlet (thường là một) đóng vai trò Điều khiển, các Java Bean đóng vai trò Mô hình và các trang JSP đóng vai trò hiển thị.
– Các logic phức tạp của chương trình được viết hoàn toàn trong các servlet, là các chương trình Java. Phần hiển thị chỉ gồm các trang JSP với một vài mã đơn giản để lấy dữ liệu có sẵn, không có logic phức tạp, vì thế hoàn toàn có thể được tạo ra bằng những người thiết kế Web.
– Các yêu cầu của người dùng được gửi từ trình duyệt Web tới servlet. Servlet sẽ khởi tạo Java Bean (nếu cần thiết), ra lệnh thu thập, cập nhật thông tin. Khi Java Bean hoàn thành công việc, servlet sẽ chọn trang JSP thích hợp để hiện thông tin trong Java Bean cho người dùng.
– Đây chính là một cách sử dụng MVC rất  hiệu quả trong Java. Tất nhiên là sử dụng MVC model 2 một cách hoàn toàn cứng nhắc, phần Điều khiển chỉ dùng servlet, phần Hiển thị chỉ dùng JSP sẽ dẫn đến một vài trường hợp kém hiệu quả, nhất là khi có các request từ trình duyệt Web chỉ đòi hỏi việc hiển thị thông tin.

 

IV. MVC1 Ưu điểm – Nhược điểm:

      1. Ưu điểm:

Dễ dàng và nhanh chóng để phát triển các ứng dụng web.

      2. Nhược điểm:

  • Việc điều khiển điều hướng là không tập trung khi mỗi page có trình logic riêng để xác định page tiếp theo. Nếu tên JSP page bị thay đổi mà được tham chiếu bởi trang khác, thì chúng ta cũng phải thay đổi tên đó trong các trang tham chiếu.
  • Tiêu tốn thời gian. Bạn cần dành nhiều thời gian hơn để phát triển các thẻ tùy biến Custom Tag trong JSP.
  • Khó khăn để kế thừa. Nó thực sự tốt với các ứng dụng nhỏ nhưng với các ứng dụng lớn thì chưa hẳn.

V. MVC2 Ưu điểm – Nhược điểm:

     1.Ưu điểm:

– Hệ thống phân ra từng phần dễ dàng cho việc phát triển

– Chia thành nhiều modun nhỏ có nhiệm vụ riêng và độc lập nên nhiều người có thể làm chung cùng 1 dự án

-Dễ dàng cho việc bảo trì và nâng cấp

     2. Nhược điểm:

– Với hệ thống nhỏ mô hình mvc sẽ cồng kềnh khiến hệ thống chạy chậm hơn.

VI. Ví dụ: 

 Một GUI Component đơn giản là Checkbox. Checkbox có thành phần Model để quản lý trạng thái của nó là check hay uncheck, thành phần View để thể hiện nó với trạng thái tương ứng lên màn hình, và thành phần Controller để xử lý những sự kiện khi có sự tương tác của người sử dụng hoặc các đối tượng khác lên Checkbox. Khi người sử dụng nhấn chuột vào Checkbox, thành phần Controller của Checkbox sẽ xử lý sự kiện này, yêu cầu thành phần Model thay đổi dữ liệu trạng thái. Sau khi thay đổi trạng thái, thành phần Model phát thông điệp đến thành phần View và Controller. Thành phần View của Checkbox nhận được thông điệp sẽ cập nhật lại thể hiện của Checkbox, phản ánh chính xác trạng thái Checkbox do Model lưu giữ. Thành phần Controller nhận được thông điệp do Model gởi tới sẽ có những tương tác phản hồi với người sử dụng nếu cần thiết.

VII. Code Demo MVC1:

cấu trúc của Project :

cautruc.PNG

 

Another.jsp :

anthor

 

Indext.jsp :

index

 

nameprocesser.jsp :

name.PNG

 

User.jv :

user

VIII. Code Demo MVC2:

Cấu trúc của Project :

mvc2

 

Index.jsp :

index2.PNG

 

Login-Error.jsp :

login1

 

Login-Success.jsp :

login2.PNG

 

LoginBean.jv :

login3.PNG

 

ControllerServlet.jv :

login4

 

IX. JSP/Servlet/JavaBean:

  • JSP:

 – Là công nghệ được xây dựng dựa trên nền tảng công nghệ Servlet.

  • Servlet:

– Một class abstract lại quá trình tương tác http

  • JavaBean:

– JavaBean nói một cách đơn giản chỉ là một class thông thường trong đó  các thuộc tính được lưu trữ và truy xuất bằng các phương thức getter và setter.

 

 

Share this:

Thích bài này:

Thích

Đang tải…