Tìm hiểu mô hình MVC (Model – View – Controller) khi lập trình web với Java

Trong bài này, chúng ta sẽ tìm hiểu sơ qua về mô hình MVC (Model – View – Controller) trong thiết kế ứng dụng Java nói chung và trong lập trình web với Java nói riêng. Những hướng dẫn ở đây chỉ mang tính định hướng để các bạn biết về mô hình MVC, nó được vận dụng ở đâu, như thế nào. Bài viết nói không với việc đào bới sâu vào từng ngóc ngách của mô hình này như lịch sử ra đời, phát triển, được tạo ra bởi ai,… Các bạn có thể hỏi anh gồ để biết thêm chi tiết nhé.

Tìm hiểu mô hình MVC (Model - View - Controller) khi lập trình web với Java

MVC là gì?

MVC là một mẫu thiết kế nhằm mục tiêu chia tách phần giao diện và phần code của ứng dụng để dễ dàng quản lý, bảo trì và phát triển. MVC (Model – View – Controller) là một design pattern được áp dụng rộng rãi trên hầu hết các ngôn ngữ lập trình hướng đối tượng hiện nay như C++, C#, PHP,…và không thể không có Java.

MVC chia ứng dụng phần mềm ra thành 3 phần có tương tác với nhau là Model (dữ liệu), View (giao diện), Controller (tương tác với Model và View, giúp 2 phần này tám chuyện được với nhau).

Xem thêm về mô hình này trên wikipedia: Model-view-controller

Chi tiết hơn một tý

Công việc mà 3 phần của mô hình MVC đảm nhận

Model là lớp chứa thông tin đối tượng (dữ liệu), tương tác với Database.

View là giao diện của ứng dụng tương tác với người dùng.

Controller nhận yêu cầu từ người dùng, nếu dính đến dữ liệu thì gọi Model xử lý, bảo Model làm xong việc phải báo cáo, trả kết quả về cho anh. Sau đó anh chỉ việc đưa kết quả cho chị View để chị này hiển thị lên cho người dùng thấy. (Có thể nói người dùng chỉ biết đến chị View thôi, chị là bộ mặt của một ứng dụng, Model hay Controller không hề tồn tại trong mắt người dùng).

Sinh ra MVC làm gì thế?

Một công việc được giao cho nhiều người làm theo từng công đoạn khác nhau. Theo bạn công việc đó có suôn sẻ không.

Phải gọi là thúc đẩy làm nhanh hơn là đằng khác. Chưa kể đến việc hư hỏng xảy ra, anh nào làm kém chất lượng ở công đoạn nào thì bảo anh đó làm lại công đoạn đó, không hề ảnh hưởng đến công việc của những anh khác.

Mô hình MVC cũng vậy đấy 🙂

Đơn giản là chia công việc cho các phần khác nhau trong một ứng dụng. Các phần thực hiện mỗi công việc khác nhau, chỉ việc làm và trả về kết quả. Có lỗi phần nào thì sửa code phần đó, không có việc đào tung cả project lên để tìm bug. Chốt lại, dễ dàng để sửa lỗi, tìm bug, bảo trì, phát triển ứng dụng lên một tầm cao mới sau này (nghe nghiêm trọng quá 😀 )

Ví dụ dễ hình dung

Tìm hiểu mô hình MVC (Model - View - Controller) khi lập trình web với Java

Một con quỷ đang ngồi xem album nhạc Xuân Mai với tivi siêu dày thế hệ cũ được nối với đầu DVD karaoke vi tính 6 số cũng cũ luôn (à có kèm theo remote nữa).

Quỷ nhỏ muốn xem album thì chỉ việc bảo remote (Controller) nhờ đầu DVD (Model) tìm xem trong đĩa có bài nào hay không. Đầu DVD (Model) tìm xong thì hiển thị lên màn hình tivi (View). Các thiết bị có các chức năng riêng, không giành phần nhau trong công việc, đó là nếp sống văn minh 😀

Giả sử ngày tận thế đến, một giáo sư đem remote và đầu DVD gắn chung vào tivi để mang đi tránh nạn cho tiện. Chuyện gì sẽ xảy ra nếu remote lỡ hết pin?

Đơn giản, vị giáo sư kia sẽ không xem Xuân Mai được nữa, có thể giáo sư đoán được rằng remote hết pin (giáo sư mà 😀 ) nên mở cả dàn máy ra kiểm tra. Cuối cùng ông chết cũng vì mắc kẹt trong đống dây điện cả ngày để tìm remote.

Quay ngược thời gian lúc sắp tận thế

Thay vì ông cho các thiết bị vào cái thùng để mang đi, không ghép chung các thiết bị lại với nhau thì ông đã không chết (tận thế người ta chưa chết mà ông chết mất rồi). Remote hết pin thì chỉ mở tung remote ra để sửa, thay pin. Thế có phải khỏe hơn không 🙂

Mô hình MVC trong lập trình web với Java

Tìm hiểu mô hình MVC (Model - View - Controller) khi lập trình web với Java

Trong mô hình ứng dụng web thì:

  • Model sẽ là JavaBean, Enterprise JavaBean hay Web Service.
  • Các trang html, servlet, jsp,… là những thành phần đại diện cho View.
  • Cuối cùng, servlet đóng vai trò là Controller.

(servlet có thể là view hoặc controller tùy vào bạn muốn và cũng tùy trường hợp)

Đến đây bạn đã hiểu về mô hình MVC chưa. Mình chỉ hướng dẫn để bạn tiếp cận sơ qua như vậy, muốn đào sâu thì bạn có thể search thêm các từ khóa như “mô hình mvc”, “mvc trong java”, “web mvc”,…

Nếu có gì sai sót trong bài viết này, hay cần thảo luận các bạn có thể để lại comment bên dưới 🙂

Ở bài viết sau chúng ta sẽ tạo thử một web project mẫu (có ví dụ đơn giản) theo mô hình MVC trong Java để các bạn vận dụng nhé.

Cập nhật: Tạo Java web project mẫu theo mô hình MVC

5 2 votes
Đánh giá bài viết
Nhận thông báo
Thông báo khi có
guest

1 Bình luận
cũ nhất
mới nhất vote nhiều nhất
Phản hồi nội tuyến
Xem tất cả các bình luận
Dinh Nguyen

Quỷ nhỏ muốn xem album thì chỉ việc bảo remote (Controller) nhờ đầu DVD (Model) tìm xem trong đĩa có bài nào hay không. Đầu DVD (Model) tìm xong thì hiển thị lên màn hình tivi (View). Các thiết bị có các chức năng riêng, không giành phần nhau trong công việc, đó là nếp sống văn minh

Ví dụ này mình nghĩ remote sẽ là 1 client gửi các request, đĩa DVD là Model, còn đầu DVD là controller sẽ hợp lý hơn chứ nhỉ <(“)