TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CNTT
BÀI TẬP MÔN KỸ NGHỆ PHẦN MỀM
Đề tài: “MÔ HÌNH MVC TRÊN WEB VÀ ỨNG DỤNG”
Giáo viên hướng dẫn: Th.s Nguyễn Đức Lưu
Lớp: D6LT CNTT5
Sinh viên thực hiện: - Phạm Văn Sơn
- Trần Thành Đô
- Phùng Văn Quyết
Hà Nội,12/2012
Mô hình MVC trên nền web và ứng dụng
LỜI NÓI ĐẤU
Trong những năm gần đây, các ứng dụng web lớn liên tục được tạo ra, đánh dấu
những bước phát triển nhảy vọt về công nghệ trong thế giới lập trình. Các nền tảng
hỗ trợ lập trình cũng được xây dựng hàng loạt nhằm mục đích chính là cải thiện
tốc độ thực thi và nâng cao tính bảo mật cho các ứng dụng web. Các nền tảng hỗ
trợ lập trình ứng dụng (application framework) đều chứa đựng các kinh nghiệm
của các nhà kiến trúc phần mềm sau nhiều năm chiêm nghiệm trong thế giới lập
trình.
Với nỗ lực làm giảm thời gian phát triển một ứng dụng web, bằng việc học hỏi và
tiếp thu những ưu điểm của các mô hình tiên tiến hiện nay, các nhà phát triển đã
xây dựng được một mô hình kiến trúc hỗ trợ lập trình các ứng dụng web được sử
dụng phổ biến hiện nay không những trong ngôn ngữ PHP mà nó còn được sử
dụng rất rộng rãi trong Java và các ngôn ngữ khác.
Tiểu luận này sẽ giúp chúng ta tìm hiểu sâu thêm về kiến trúc mô hình MVC và
ứng dụng của nó vào việc thiết kế các ứng dụng website. Mà framework áp dụng ở
đây là Cakephp, một framework rất mạnh trong việc ứng dụng mô hình MVC để
phát triển ứng dụng website.
Cũng qua bài tập lần này nhóm chúng em xin cảm ơn Thạc sĩ Nguyễn Đức Lưu,
thầy giáo bộ môn kỹ nghệ phần mềm đã trực tiếp dạy dỗ, chỉ bảo chúng em trong
3.3. GIAO DIỆN NGƯỜI DÙNG 24
3.3.1.Giao diện trang chủ 24
3.3.2. Giao diện trang liên hệ 25
3.3.3. Giao diện mua hàng 26
3.3.4. Giao diện tin tức 27
3.3.5. Giao diện hỗ trợ trực tuyến 28
3.3.6. Các giao diện khác 28
3.4. GIAO DIỆN QUẢN TRỊ 29
3.4.1. Giao diện đăng nhập 29
3.4.2. Giao diện quản lý danh mục và thêm danh mục 29
3.4.3. Quản lý sản phẩm và thêm sản phẩm 30
3.4.4. Giao diện quản lý tin tức và thêm mới tin 31
3.4.5. Quản lý hóa đơn 32
3.4.6. Quản lý thông tin chung website 33
3.5. KẾT QUẢ THU ĐƯỢC, HẠN CHẾ 33
CHƯƠNG IV. TỔNG KẾT 35
CHƯƠNG V. TÀI LIỆU THAM KHẢO 36
3
Mô hình MVC trên nền web và ứng dụng
CHƯƠNG I. TỔNG QUAN VỀ WEB APPLICATION
FRAMEWORK VÀ MÔ HÌNH MVC
1.1 Web Application Framework là gì?
“Web application framework” là một nền tảng phần mềm được thiết kế để hỗ trợ
việc phát triển các website động, các ứng dụng web và các dịch vụ web. Mục đích
của Framework là nhắm tới việc giảm bớt các hao phí liên quan tới các hoạt động
thực hiện trong quá trình phát triển web. Ví dụ, nhiều framework cung cấp thư
viện để truy cập cơ sở dữ liệu, khung khuôn mẫu và quản lý phiên làm việc, thêm
vào đó làm tăng khả năng tái sử dụng mã.
1.2. PHP Framework
PHP framework là web framework được viết bằng PHP - một ngôn ngữ lập trình
các giải pháp tổ chức mã trong quá trình phát triển phần mềm. Khi sử dụng đúng
cách, mẫu MVC giúp cho người phát triển phần mềm cô lập các nguyên tắc
nghiệp vụ và giao diện người dùng một cách rõ ràng hơn. Phần mềm phát triển
theo mẫu MVC tạo nhiều thuận lợi cho việc bảo trì vì các nguyên tắc xử lý nghiệp
vụ và giao diện ít có liên quan với nhau.
1.3.1. Lịch sử MVC
Bắt đầu vào những năm 70 của thế kỷ 20, tại phòng thí nghiệm Xerox PARC ở
Palo Alto. Sự ra đời của giao diện đồ họa (Graphical User Interface) và lập trình
hướng đối tượng (Object Oriented Programming) cho phép lập trình viên làm việc
với những thành phần đồ họa như những đối tượng đồ họa có thuộc tính và
phương thức riêng của nó. Không dừng lại ở đó, những nhà nghiên cứu ở Xerox
PARC còn đi xa hơn khi cho ra đời cái gọi là kiến trúc MVC (viết tắt của Model –
View – Controller). Kiến trúc MVC đã được ứng dụng để xây dựng rất nhiều thư
viện đồ họa khác nhau. Tiêu biểu là bộ thư viện đồ họa của ngôn ngữ lập trình
hướng đối tượng SmallTalk (cũng do Xerox PARC nghiên cứu và phát triển vào
thập niên 70 của thế kỷ 20). Ngày nay, trong nhiều các nền tảng lập trình chúng ta
thấy sự có mặt của mô hình MVC, có thể kể đến:
+ Swing Components của Java
+ Document View Architecture trong Microsoft Visual C++ (VC++)
5
Mô hình MVC trên nền web và ứng dụng
+ QT4(KDE)
+ Apple’s Cocoa (Core Data)
1.3.2. Vai trò của các thành phần M-V-C trong Web framework
Hình 1.0.1 Mô hình MVC
a. C - Controller
Controller là các lớp điều khiển luồng ứng dụng, tiếp nhận yêu cầu người dùng
thông qua HTTP header, sau đó chuyển tiếp nó đến các lớp phụ trách trực tiếp xử
lý yêu cầu. Tùy theo cách thiết kế lớp mà chúng ta thường thấy Controller gồm:
+ Front Controller. Là một controller xử lý tất cả các yêu cầu người dùng cho
đầu tư dựa trên dữ liệu đầu vào của người dùng và các dữ liệu đang có
+ Thực hiện việc xử lý dữ liệu theo một quy trình
Do có hai vai trò tương đối tách biệt cho nên một Model thường được tách thành
các lớp có các vùng xử lý khác biệt:
+ Vùng xử lý Logic nghiệp vụ: thường là xử lý rule hay policy của nghiệp vụ
cũng như quy trình nghiệp vụ.
+ Vùng xử lý dữ liệu: Cung cấp/lưu trữ dữ liệu và việc chuyển đổi dữ liệu
thành các dạng khác nhau theo yêu cầu
7
Mô hình MVC trên nền web và ứng dụng
Trong các tình huống đơn giản, Model chỉ làm vài thao tác đơn giản như lấy dữ
liệu từ database. Trong các tình huống phức tạp, việc xử lý có thể là tổ hợp của
hàng trăm lớp diễn ra trên một hoặc vài máy chủ (server) hoặc thậm chí dữ liệu
hay quyết định được đưa ra từ Model lại là tổng hợp kết quả từ một vài trung tâm
dữ liệu nằm rải rác trên vài lục địa. Do vậy trong Model không chỉ có các thao tác
trên database và có còn là file system, memory, networking I/O
Model hoạt động như là một tầng dịch vụ nhằm có thể tái sử dụng giữa các
Controller.
Khi Controller gọi Model thông qua các giao diện lập trình (API) của Model, nó
cần biết một số ứng xử chung của Model. Ví dụ:
+ Cách Model đó gửi tín hiệu về quá trình nó xử lý yêu cầu. Có hay không có
lỗi ngoại lệ, kiểu của lỗi ngoại lệ, lỗi trong trường hợp nào.
+ Kiểu trả veef cần mang tính nhất quán
c. V - View
View là các lớp định nghĩa cách thức trình bày dữ liệu (không cập nhật dữ liệu).
Trong các web framework, View gồm hai phần chính:
+ Template file: định nghĩa cấu trúc và cách thức trình bày dữ liệu cho người
dùng. Ví dụ như bố cụ, màu sắc, khung nhìn
+ Phần Logic: xử lý cách áp dụng dữ liệu vào cấu trúc trình bày. Logic này có
thể bao gồm việc kiểm tra định dạng dữ liệu, chuyển đổi định dạng dữ liệu
Hợp nhất (intergration): phần này tồn tại trong lớp Controller. Mục đích chính
là gắn kết developer và designer với nhau. Người hợp nhất không cần có nhiều
kinh nghiệm làm việc với dữ liệu như lập trình viên nhưng cần nắm rõ cách tổ
chức của một ứng dụng.
9
Mô hình MVC trên nền web và ứng dụng
Mô hình MVC được áp dụng rất nhiều trong các Web framework hiện nay. Các
PHP framework phổ biến nhất:
+ Zend framework: là sản phẩm của Zend – công ty “bảo trợ” cho PHP. Với
các tính năng mạnh mẽ, Zend framework thường được sử dụng cho các
công ty lớn, và bạn cần phải có lượng kiến thức khá sâu rộng về PHP để có
thể sử dụng được Zend framework.
+ CakePHP: là một lựa chọn tốt cho những lập trình viên có kiến thức nâng
cao về PHP. Nó dựa trên cùng một nguyên tắc thiết kế với Ruby on Rails
(một framework dành cho các nhà phát triển các ứng dụng web bằn ngôn
ngữ Rail). Với các hệ thống hỗ trợ, tính đơn giản và mỗi trường mở cao đã
giúp cho CakePHP trở thành một trong những framework phổ biến nhất
hiện nay.
+ CodeIgniter: một MVC framework viết bằng PHP4 (gần đây đã tương
thích hoàn toàn với PHP 5.3.0 trong phiên bản 1.7.2). Được biết đến như
một framework dễ hiểu và dễ sử dụng. CodeIgniter được Rasmus Lerdorf –
cha đẻ của ngôn ngữ PHP – đánh giá rất cao vì tính tinh giản về cấu trúc,
đạt hiệu năng cao khi vận hành. Không giống như Symfony, PHP
framework này phục vụ mục đích lý tưởng cho việc xây dưng các ứng dụng
chia sẻ, lưu trữ. Nó cung cấp các giải pháp đơn giản, và có một thư viện
video hướng dẫn phong phú, diễn đàn hỗ trợ, và cung cấp sẵn một hướng
dẫn sử dụng cho người mới bắt đầu. PHP framework này rất phù hợp cho
một người mới làm quen với framework.
+ Joomla! v1.5.x: một hệ quản trị nội dung nguồn mở được phát triển theo
mô hình MVC trong các phần mở rộng (extensions), bao gồm các thành
Để đóng kết nối tới MySQL server, PHP cung cấp hàm mysql_close. Đoạn mã sau
ví dụ quá trình kết nối vào MySQL server và đóng kết nối.
<?php
$SERVER = "localhost";
$USERNAME = "root";
$PASSWORD = "";
$conn = mysql_connect($SERVER, $USERNAME, $PASSWORD);
if ( !$conn ) {
//Không kết nối được, thoát ra và báo lỗi
die("không nết nối được vào MySQL server");
} //end if
11
Mô hình MVC trên nền web và ứng dụng
//đóng kết nối
mysql_close($conn);
?>
1.4.3. Chọn CSDL để làm việc
Sau khi connet vào MySQL server, thao tác tiếp theo là chọn CSDL để làm việc.
PHP cung cấp cho ta hàm mysql_select_db để làm việc này. Cú pháp của hàm này
như sau:
mysql_select_db($db_name[, $conn])
Với $db_name là tên CSDL cần chọn, $conn là kết nối được thực hiện qua lệnh
mysql_connect. Các ví dụ trong bài viết này sẽ sử dụng CSDL có tên là test:
<?php
$SERVER = "localhost";
$USERNAME = "root";
$PASSWORD = "";
$DBNAME = "test";
giữa 2 hàm mysql_fetch_row và mysql_fetch_assoc, ta cung xem xét các ví dụ
sau.
Các ví dụ của ta sẽ sử dụng table có tên là member với các trường và dữ liệu như
sau:
username password
abc 123
def 456
Ví dụ 1: dùng mysql_fetch_row()
<?php
$SERVER = "localhost";
$USERNAME = "root";
$PASSWORD = "";
$DBNAME = "test";
$conn = mysql_connect($SERVER, $USERNAME, $PASSWORD);
if ( !$conn ) {
//Không kết nối được, thoát ra và báo lỗi
die("không nết nối được vào MySQL server:
".mysql_error($conn));
} //end if
//chọn CSDL để làm việc
mysql_select_db($DBNAME, $conn)
13
Mô hình MVC trên nền web và ứng dụng
or die("Không thể chọn được CSDL:
".mysql_error($conn));
$sql = "SELECT * FROM member";
$result = mysql_query($sql, $conn);
mysql_affected_rows. Ta hãy xem ví dụ sau:
14
Mô hình MVC trên nền web và ứng dụng
<?php
$SERVER = "localhost";
$USERNAME = "root";
$PASSWORD = "";
$DBNAME = "test";
$conn = mysql_connect($SERVER, $USERNAME, $PASSWORD);
if ( !$conn ) {
//Không kết nối được, thoát ra và báo lỗi
die("không nết nối được vào MySQL server:
".mysql_error($conn));
} //end if
//chọn CSDL để làm việc
mysql_select_db($DBNAME, $conn)
or die("Không thể chọn được CSDL:
".mysql_error($conn));
$sql = "INSERT INTO member (username, password) VALUES
('xyz', '000')";
$result = mysql_query($sql, $conn); //chèn thêm 1 dòng
vào table
if ( !$result )
die("Không thể thực hiện được câu lệnh SQL:
".mysql_error($conn));
echo "Số lượng row được chèn:
".mysql_affected_rows($conn)."<br>\n";
?>
16
Mô hình MVC trên nền web và ứng dụng
CHƯƠNG II. TỔNG QUAN VỀ FRAMEWORK CAKEPHP
2.1. Giới thiệu về Framework CakePHP
CakePHP là một Framework cho php . Mục đích của nó là cung cấp một
framework cho người sử dụng php phát triển những ứng dụng web nhanh, mạnh
mẽ ,linh họa .Và điều quan trọng là CakePHP là một OpenSource (miễn phí). Để
sử dụng nó, yêu cầu người làm phải biết những kiến thức như: Cơ bản về PHP và
HTML, Kiến trúc MVC,Lập trình hướng đối tượng.
2.1.1.Một số tính năng của CakePHP
• Nguồn mở, miễn phí, có cộng đồng sử dụng và hỗ trợ rộng lớn
• Tương thích PHP4 và PHP5
• Mô hình MVC
• Đa ngôn ngữ
• Sinh code tự động
• Caching
• Phân quyền (ACL)
• Kiểm tra ràng buộc dữ liệu
• Xây dựng nhiều thư viện hỗ trợ cho View như: Ajax, HTML Form, Javascript…
• Xây dựng nhiều thư viện hỗ trợ cho Controller: Email, Security, Session,
Cookies, Request Handling
• Dễ dàng viết thêm thư viện hỗ trợ, liên kết với ứng dụng khác (thông qua
vendors)
• Đa giao diện
• Hỗ trợ nhiều hệ quản trị CSDL
17
Mô hình MVC trên nền web và ứng dụng
6 'password' => 'my_password',
7 'database' => cakephp_test',
8
'prefix' => '',
9 );
Bạn cần thay đổi các mục in đậm cho phù hợp với cấu hình trên máy bạn.
2.2.2. Cấu trúc thư mục CakePHP
Sau khi tải và giải nén CakePHP, bạn có thể thấy các files và thư mục sau :
-app: là nơi chứa mã nguồn ứng dụng của bạn (phần này quang trọng)
-cake: là nơi chứa mã nguồn của CakePHP. Bạn không nên chỉnh sửa các files
trong thư mục này nếu bạn không hiểu rõ về chúng
-vendors: chứa ứng dụng của bên thứ 3, phục vụ cho ứng dụng của bạn
-plugins: chứa các thành phần mở rộng dùng cho ứng dụng
19
Mô hình MVC trên nền web và ứng dụng
Ghi chú :
Config Chứa file cấu hình hệ thống
Controllers Chứa các controller và component
Locale Chứa file ngôn ngữ , phục vụ cho ứng dụng đa ngôn ngữ
Molels Chứa file Model và behavor, datasource
Plugins Chứa các gói mở rộng
TmpThư mục tạm của ứng dụng
Vendors Chứa ứng dụng của bên thứ 3
Views Chứa các file giao diện
Webroot Chứa tài liệu (hình ảnh,file ), file CSS , file javascript…
2.3. Kiến trúc CakePHP
CakePHP hoạt động theo mô hình MVC
Mô hình này chia ứng dụng ra làm 3 phần chính:
• Model
• View
Mô hình MVC trên nền web và ứng dụng
- Vào phpmyadmin theo đường dẫn: http://localhost/phpmyadmin
- Tạo 1 database mới “hoahoan”, sau đó import database “db_hoanhoa.sql”
của ứng dụng vào “hoahoan”
- Mở file database.php theo đường dẫn
htdocs/hoanhoa/app/config/database.php sửa lại cho đúng tên với database
mình vừa khởi tạo
Chạy ứng dụng thông qua links http://localhost/hoanhoa/
23
Mô hình MVC trên nền web và ứng dụng
3.3. Giao diện người dùng
3.3.1.Giao diện trang chủ
24
Mô hình MVC trên nền web và ứng dụng
3.3.2. Giao diện trang liên hệ
25