Chúng ta đã tìm hiểu sơ qua về mô hình MVC (Model – View – Controller) trong bài viết trước. Mình cũng đã giới thiệu về MVC áp dụng vào Java web như thế nào rồi. Vậy bây giờ như những gì đã hứa, mình sẽ hướng dẫn các bạn cách tạo Java web project mẫu theo mô hình MVC có kèm theo ví dụ đơn giản để bạn thực hiện theo.
Khâu chuẩn bị
Khi tổ chức một sự kiện đặc biệt thì khâu chuẩn bị là phần không thể thiếu, sự kiện diễn ra thành công hay không nhờ vào khâu chuẩn bị chu đáo.
Để đảm bảo khâu thực hành bên dưới không bị gián đoạn, bạn nên đọc qua các bài viết sau:
Bao nhiêu đó thôi bạn nhé 😀
Cấu trúc Java web project theo mô hình MVC
Trước khi tạo project theo chuẩn mô hình MVC thì bạn cần nhớ lại một ít kiến thức về MVC đã nhá. Nó bao gồm: Model (chứa thông tin đối tượng), View (giao diện), Controller (nhiệm vụ điều hướng, giúp model và view giao tiếp được với nhau)
Tạo các folder và package như hình trên bạn nhé 🙂
Trong cấu trúc trên:
Các package:
- com.ngockhuong.webmvc.controller: Chứa các servlet class thực hiện nhận request từ người dùng và trả về view tương ứng (nhiệm vụ điều hướng).
- com.ngockhuong.webmvc.dao: Chứa các class thực hiện nhiệm vụ tương tác với cơ sở dữ liệu.
- com.ngockhuong.webmvc.model: Chứa các class định nghĩa cho đối tượng, các class này sẽ được ánh xạ đến các bảng trong cơ sở dữ liệu.
- com.ngockhuong.webmvc.service: Chứa các class có nhiệm vụ thực hiện các business logic (xử lý nghiệp vụ).
- com.ngockhuong.webmvc.util: Chứa các class được định nghĩa để dùng như là các thư viện.
Các folder:
- view: Chứa các file jsp.
Với project này, mình sử dụng servlet hoàn toàn để làm controller chứ không dùng làm view như đã nói ở bài trước. View thì dùng các trang jsp mà thôi 🙂
Lời thú nhận ngọt ngào
Bạn biết không? Mỗi người khi nắm rõ về mô hình MVC rồi thì họ lại có một cách tổ chức project cho riêng mình. Miễn sao nó hợp lệ, đúng chuẩn mô hình MVC, đảm bảo người khác đọc vào code sẽ hiểu. (không hiểu cũng chả sao nếu dự án đó là của riêng mình 😀 )
Mình đã code nhiều dự án, mỗi dự án lại thay đổi cấu trúc project một ít (hay xem các project mẫu của người ta nên bắt chước theo ý mà 😀 ). Mình cũng từng thực tập tại các công ty, cấu trúc project ở mỗi nơi không giống nhau hoàn toàn, có thể thay đổi tên package hay folder lại một tý. Nhưng! Chức năng, nhiệm vụ mà các package, folder hay class, file đảm nhiệm sẽ không thay đổi (cứ theo chuẩn chức năng mô hình MVC thôi nhé 😀 ).
Ví dụ thế này:
- Folder “view” nằm trong WebContent người ta có thể bỏ đi, đồng nghĩa với việc chứa trực tiếp các file jsp trong WebContent.
- Package “com.ngockhuong.webmvc.util” có thể đổi tên thành “com.ngockhuong.webmvc.common“. (util và common chỉ là 2 cái tên, đặt như thế nào cũng được miễn đều có ý nghĩa là các tiện ích, phần chung, bổ sung thêm).
- Package “com.ngockhuong.webmvc.service” có thể đổi tên thành “com.ngockhuong.webmvc.bo“. (service là dịch vụ, chuyên chứa các class xử lý business logic, các đối tượng được tạo từ các class đó gọi là business object. Do vậy có thể viết tắt thành bo để đặt tên cho package).
- Hoặc một trường hợp nữa, các package như dao, service (bo) lại được chứa trong package model. Các class nhận nhiệm vụ ánh xạ tới table trong database (hay gọi với tên Java Bean) được chứa trong model thì giờ lại chuyển vào trong package bean (package bean chứa vào package model luôn).
Bạn có thể xem cấu trúc bên dưới để hiểu rõ hơn (Mình cũng đã từng dùng cấu trúc này cho project).
Ý kiến cá nhân
Tóm lại, theo ý kiến của mình, bạn không nên lệ thuộc vào một cấu trúc nào cả. Bạn phải nắm chắc mô hình MVC, hiểu được các thành phần của mô hình MVC sẽ được áp dụng như thế nào trong web nói chung và java nói riêng. Đến với mỗi project tại mỗi team, mỗi công ty, bạn sẽ được giao cho một cấu trúc riêng để cả team cùng làm theo. Do vậy, không nắm được bản chất của vấn đề thì không thể làm được đâu bạn nhé.
Còn bây giờ, bạn còn đang học thì có thể áp dụng cấu trúc trên cho project của mình, có thể không được rất nhiều người sử dụng nhưng vẫn được nhiều người dùng đó.
Để không bị lan man, mình sẽ viết ví dụ tạo java web project mẫu theo mô hình MVC tại một bài viết khác. Link sẽ cập nhật bên dưới bạn nhé 🙂
—
Cập nhật ví dụ: Tạo trang đăng nhập đơn giản bằng JSP Servlet theo mô hình MVC