Ngôn ngữ lập trình Java không phải là ngoại lệ, Java là một trong những ngôn ngữ lập trình mạnh và được sử dụng rất nhiều trong việc phát triển phần mềm, những trang web động, game hay ứ
Trang 1KHOA H Ệ THỐNG THÔNG TIN KINH TẾ
- -
Trang 2
này Đặc biệt thầy Trần Thái Hoà đã tận tình, giúp đỡ em trong suốt quá trình thực
hiện khoá luận tốt nghiệp
Đồng thời em cũng xin cảm ơn Thầy, Cô thuộc khoa Hệ thống thông tin Kinh tế - Trường Đại học Kinh Tế Huế đã truyền đạt những kiến thức, kinh nghiệm quý báu trong suốt thời gian 4 năm trên giảng đường đại học để em có thể thực hiện tốt đề tài này
Và cu ối cùng, em xin chân thành cảm ơn những người bạn, những anh chị tại CN Công ty TNHH Phần mềm FPT tại Đà Nẵng đã luôn đồng hành, chỉ bảo nhiệt tình trong quá trình thực tập tại công ty để em có thể hoàn thành đề tài một cách hoàn thi ện nhất
Trong quá trình thực hiện đề tài, do kiến thức và thời gian còn hạn chế nên không thể tránh kh ỏi những sai sót Mong quý Thầy, Cô thông cảm và góp ý chân thành để em có thể hoàn thiện đề tài và tích luỹ được kiến thức để phát triển thêm sau này
Em xin chân thành cảm ơn!
Trang 31 Lý do ch ọn đề tài: 1
2 Mục tiêu và nhiệm vụ của đề tài: 1
3 Đối tượng và phạm vi nghiên cứu: 2
4 Phương pháp nghiên cứu: 2
5 Cấu trúc của khóa luận: 3
CHƯƠNG I CƠ SỞ LÝ THUYẾT 4
1 Tổng quan về môi trường phát triển tích hợp Eclipse và ngôn ngữ lập trình Java: 4
1.1 Môi trường phát triển tích hợp Eclipse 4
1.2 Ngôn ngữ lập trình Java 5
1.3 Tổng quan về Java EE 8
2 T ổng quan về hệ quản trị cơ sở dữ liệu Microsoft SQL Server: 9
2.1 Ngôn ngữ truy vấn dữ liệu có cấu trúc (Structure Query Language) 9
2.2 Hệ quản trị cơ sở dữ liệu SQL Server 10
3 Gi ới thiệu về lập trình hướng đối tượng: 10
4 Mô hình MVC (Model – View – Controller): 10
4.1 Mô hình MVC là gì ? 10
4.2 Các thành phần trong MVC 11
4.3 Sự tương tác giữa các lớp trong mô hình MVC 11
5 Gi ới thiệu về framework Struts: 12
5.1 Khái niệm về framework Struts 12
5.2 Cấu trúc của framework Struts 12
5.3 Ti ến trình thực thi mô hình MVC của Struts 13
Đạ i h
ọc Kinh
tế Hu
ế
Trang 42 Phân tích bài toán: 15
2.1 Yêu cầu chất lượng 15
2.2 Yêu cầu chức năng 15
2.2.1 Tổng quát chức năng 15
2.2.2 Biểu đồ Use Case 16
2.3 Mô hình hoá hệ thống 20
2.3.1 Bi ểu đồ luồng chức năng hệ thống 20
2.3.2 Biểu đồ tuần tự (Sequence Diagram) 22
2.3.3 Biểu đồ lớp (Class Diagram) 34
CHƯƠNG III THIẾT KẾ HỆ THỐNG 42
1 Thiết kế cơ sở dữ liệu: 42
1.1 Mô tả thực thể 42
1.2 M ối liên kết giữa các thực thể 45
1.3 Mô tả các bảng 50
1.4 Mô hình quan hệ giữa các bảng 55
2 Thi ết kế giao diện: 56
2.1 Giao diện đăng nhập 56
2.2 Giao di ện đăng ký 56
2.3 Giao diện trang chủ 57
2.4 Giao diện trang quản lý admin 60
2.5 Giao diện dành cho member 61
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 64
1 Kết quả đạt được: 64
2 Hướng phát triển của đề tài: 65
TÀI LIỆU THAM KHẢO 66
PH Ụ LỤC 67
Đạ i h
ọc Kinh
tế Hu
ế
Trang 5Hình 2: Biểu đồ Use Case chức năng xem trang chủ của visitor 17
Hình 3: Biểu đồ Use Case chức năng quản lý bài viết của member và admin 17
Hình 4: Biểu đồ Use Case chức năng quản lý tài khoản của admin 18
Hình 5: Biểu đồ Use Case chức năng quản lý thông tin cá nhân của member 18
Hình 6: Biểu đồ Use Case chức năng tìm kiếm 19
Hình 7: Biểu đồ Use Case chức năng quản lý Tag của admin 19
Hình 8: Luồng chức năng hệ thống dành cho user 20
Hình 9: Luồng chức năng hệ thống dành cho admin 21
Hình 10: Biểu đồ tuần tự hiển thị danh sách câu hỏi 22
Hình 11: Biểu đồ tuần tự hiển thị chi tiết câu hỏi 23
Hình 12: Biểu đồ tuần tự vote up bài viết 24
Hình 13: Biểu đồ tuần tự vote down bài viết 25
Hình 14: Biểu đồ tuần tự tìm kiếm bài viết 26
Hình 15: Biểu đồ tuần tự khoá bài viết 27
Hình 16: Biểu đồ tuần tự quản lý đăng bài viết 28
Hình 17: Biểu đồ tuần tự hiển thị danh sách tài khoản 29
Hình 18: Biểu đồ tuần tự khoá tài khoản 30
Hình 19: Biểu đồ tuần tự hiển thị danh sách Tag 31
Hình 20: Biểu đồ tuần tự tìm kiếm Tag 31
Hình 21: Biểu đồ tuần tự đăng nhập 32
Hình 22: Biểu đồ tuần tự đăng xuất 33
Hình 23: Biểu đồ lớp Bean 34
Hình 24: Biểu đồ lớp hiển thị danh sách câu hỏi 35
Hình 25: Biểu đồ lớp hiển thị chi tiết câu hỏi 36
Hình 26: Biểu đồ lớp tương tác bài viết 37
Hình 27: Biểu đồ lớp quản lý bài viết 38
Hình 28: Biểu đồ lớp quản lý đăng bài viết 39
Đạ i h
ọc Kinh
tế Hu
ế
Trang 6Hình 32: Biểu đồ lớp đăng nhập – đăng xuất 41
Hình 33: Mối liên kết giữa Account và Question 45
Hình 34: Mối liên kết giữa Question và Tag 46
Hình 35: Mối liên kết giữa Account và Tag 46
Hình 36: Mối liên kết giữa Account, Question và VoteQuestion 47
Hình 37: Mối liên kết giữa Account, Answer và VoteAnswer 48
Hình 38: Mối liên kết giữa Account, Answer và Question 49
Hình 39: Quan hệ giữa các bảng 55
Hình 40: Giao diện đăng nhập 56
Hình 41: Giao diện đăng ký 56
Hình 42: Giao diện trang chủ dành cho visitor 57
Hình 43: Giao diện trang chủ menu Tags 57
Hình 44: Giao diện trang chủ menu Thành viên 58
Hình 45: Giao diện trang chủ tìm kiếm câu hỏi 58
Hình 46: Giao diện trang chủ tìm kiếm thành viên 59
Hình 47: Giao diện trang chủ dành cho member 59
Hình 48: Giao diện trang quản lý bài viết dành cho admin 60
Hình 49: Giao diện trang quản lý Tags dành cho admin 60
Hình 50: Giao diện trang quản lý tài khoản dành cho admin 61
Hình 51: Giao diện trang đặt câu hỏi dành cho member 61
Hình 52: Giao diện trang chi tiết câu hỏi dành cho member 62
Hình 53: Giao diện trang trả lời câu hỏi dành cho member 62
Hình 54: Giao diện vote câu hỏi/câu trả lời dành cho member 63
Đạ i h
ọc Kinh
tế Hu
ế
Trang 7Bảng 2: Bảng tblAnswer 51
Bảng 3: Bảng tblAccount 53
Bảng 4: Bảng tblTag 53
Bảng 5: Bảng tblquestion_tag 53
Bảng 6: Bảng tblAccountTag 54
Bảng 7: Bảng tblVoteQuestion 54
Bảng 8: Bảng tblVoteAnswer 54
Bảng 9: Bảng tblAdmin 55
Đạ i h
ọc Kinh
tế Hu
ế
Trang 8MỞ ĐẦU
1 Lý do chọn đề tài:
Hiện nay, có rất nhiều ngôn ngữ lập trình được sử dụng trên thế giới và mỗi ngôn ngữ đều có những thế mạnh riêng của nó Ngôn ngữ lập trình Java không
phải là ngoại lệ, Java là một trong những ngôn ngữ lập trình mạnh và được sử
dụng rất nhiều trong việc phát triển phần mềm, những trang web động, game hay ứng dụng trên các thiết bị di động Ngôn ngữ lập trình Java đã và đang trở nên lớn mạnh hơn bao giờ hết
Bên cạnh đó, công nghệ thông tin (CNTT) là một ngành công nghiệp bao gồm nhiều kiến thức rộng rãi, đồng thời những công nghệ mới liên tục xuất hiện đòi
hỏi bản thân những người làm trong ngành phải không ngừng tìm hiểu và phát triển những công nghệ đó Cho nên, việc hỏi đáp và trao đổi kiến thức về công nghệ thông tin mất khá nhiều thời gian Chính vì thế, việc xây dựng một nơi có
thể kết nối cộng đồng những người làm việc hay mong muốn được làm việc trong ngành công nghệ thông tin là rất cần thiết
Từ những lý do trên, tôi chọn đề tài “Xây dựng Website hỏi đáp về công nghệ
2 Mục tiêu và nhiệm vụ của đề tài:
a Mục tiêu: Mục tiêu của đề tài này là xây dựng một website với giao diện
trực quan, là nơi mọi người có thể tương tác với nhau để trao đổi kiến thức, góp ý một cách dễ dàng
Trang 93 Đối tượng và phạm vi nghiên cứu:
a Đối tượng: Sử dụng ngôn ngữ lập trình Java trong việc xây dựng website
hỏi đáp về công nghệ thông tin
b Phạm vi nghiên cứu:
- Địa điểm: Tòa nhà FPT Complex, đường Nam Kỳ Khởi Nghĩa, P.Hòa
Hải, Q.Ngũ Hành Sơn, TP Đà Nẵng
- Thời gian: Từ ngày 03/01/2017 đến hết ngày 03/04/2017
Để nghiên cứu và xây dựng website hỏi đáp về công nghệ thông tin, tác giả đã
sử dụng các phương pháp sau trong quá trình thực hiện đề tài:
a Quá trình thu thập dữ liệu sử dụng những phương pháp sau:
• Phương pháp nghiên cứu tài liệu: chủ động tìm kiếm, nghiên cứu các tài
liệu, sách liên quan đến đề tài, các website tương tự để đánh giá những
ưu và nhược điểm, đồng thời kết hợp với những kiến thức đạt được trong quá trình thực tập để đề ra hướng xây dựng website hoàn chỉnh, trực quan, dễ tương tác
• Phương pháp phân tích, đánh giá: dựa vào việc quan sát, nhìn nhận vấn
đề thực tế, áp dụng những kiến thức, công nghệ cần thiết từ đó hoàn thiện đề tài
• Phương pháp tổng hợp: hoàn thiện khoá luận dựa trên những kiến thức
cơ bản đã thu nhận được trong quá trình học tập và những tài liệu, kiến thức tích luỹ được trong quá trình chủ động học hỏi, tìm kiếm
b Giai đoạn phân tích thiết kế và thực hiện sử dụng những phương pháp sau:
• Phương pháp phân tích, thiết kế hệ thống: tiến hành tổng hợp, phân loại thông tin Dựa trên những thông tin thu thập được, cùng với kiến thức và nền tảng công nghệ hiện có để tiến hành xây dựng website hỏi đáp về công nghệ thông tin
Đạ i h
ọc Kinh
tế Hu
ế
Trang 10• Phương pháp lập trình hướng đối tượng: sau khi tiến hành phân tích, thiết kế website, sẽ lựa chọn ngôn ngữ lập trình Java và framework Struts với hệ quản trị CSDL Microsoft SQL Server để xây dựng và quản
lý website
Ngoài phần mở đầu và kết luận, phần nội dung của khóa luận bao gồm:
Chương I: Cơ sở lý thuyết Chương này sẽ trình bày khái quát về lịch sử hình
thành và phát triển, các đặc điểm của ngôn ngữ lập trình Java, framework Struts
và tầm quan trọng của việc ứng dụng framework Struts trong quá trình xây
dựng một website
Chương II: Phân tích hệ thống Chương này đề cập đến thực trạng, sau đó sẽ
đi sâu vào việc phân tích bài toán, thiết kế cơ sở dữ liệu và áp dụng framework Struts để xây dựng hệ thống
Chương III: Thiết kế hệ thống Chương này đề cập đến việc thiết kế cơ sở dữ
liệu, thiết kế giao diện website và kết quả chạy thử website
Đạ i h
ọc Kinh
tế Hu
ế
Trang 11CHƯƠNG I CƠ SỞ LÝ THUYẾT
1 Tổng quan về môi trường phát triển tích hợp Eclipse và ngôn ngữ lập trình Java:
1.1 Môi trường phát triển tích hợp Eclipse
a Tổng quan về Eclipse
Eclipse là một môi trường phát triển tích hợp cho ngôn ngữ lập trình Java, được phát triển ban đầu bởi IBM, và hiện nay bởi tổ chức Eclipse Eclipse như một môi trường phát triển Java tích hợp (IDE), với Eclipse chúng ta có thể mở rộng hơn mã nguồn bằng cách chèn thêm các plugins cho project (PDE - Plug-in Development Environment) Mặc dù Eclipse được viết bằng ngôn ngữ lập trình Java, nhưng việc sử dụng nó không
hạn chế chỉ cho ngôn ngữ Java Ví dụ, Eclipse hỗ trợ sẵn hoặc có thể cài thêm các plugins để hỗ trợ cho các ngôn ngữ lập trình như PHP, C, C++, C#, Python, HTML, XML, Javascript,…
b Ưu điểm và nhược điểm của Eclipse
• Ưu điểm:
- Hỗ trợ xây dựng nhiều công cụ lập trình
- Không hạn chế các nhà cung cấp công cụ
- Hỗ trợ các công cụ như: HTML, C, Java, XML, JSP, GIF, EJB,…
- Hỗ trợ môi trường phát triển GUI
- Chạy trên nhiều hệ điều hành, bao gồm cả Windows và Linux
- Do sử dụng SWT/JFace nên có lẽ load nhanh hơn
• Nhược điểm:
- Cài đặt phức tạp
- Tốn khá nhiều bộ nhớ của máy tính để cài đặt và sử dụng
- Thiếu tính nhất quán vì có nhiều plugins
Đạ i h
ọc Kinh
tế Hu
ế
Trang 121.2 Ngôn ng ữ lập trình Java
a Java là gì?
Java (đọc như “Gia-va”) vừa là một ngôn ngữ lập trình mà cũng vừa là
một nền tảng (platform), cú pháp ngôn ngữ Java có phần giống với ngôn ngữ C và C++
Java được tạo ra với tiêu chí viết một lần, thực thi khắp mọi nơi (Write Once, Run Anywhere) Những chương trình phần mềm được viết bằng ngôn ngữ lập trình Java có thể chạy trên mọi nền tảng (platform) khác nhau với điều kiện cần phải có môi trường máy ảo Java (JVM – Java Virtual Machine) Một số nền tảng hiện nay hỗ trợ Java chẳng hạn
như Sun Solaris, Linux, Mac OS, FreeBSD & Windows…
b Lịch sử phát triển của ngôn ngữ lập trình Java
Ngôn ngữ lập trình Java do James Gosling và các cộng sự của Công ty Sun Microsystem phát triển
Đầu thập niên 90, Sun Microsystem tập hợp các nhà nghiên cứu thành lập nên nhóm đặt tên là Green Team Nhóm Green Team có trách nhiệm xây dựng công nghệ mới cho ngành điện tử tiêu dùng Để giải quyết vấn
đề này nhóm nghiên cứu phát triển đã xây dựng một ngôn ngữ lập trình
mới đặt tên là Oak tương tự như C++ nhưng loại bỏ một số tính năng nguy hiểm của C++ và có khả năng chạy trên nhiều nền phần cứng khác nhau Cùng lúc đó word wide web bắt đầu phát triển và Sun Microsystem đã thấy được tiềm năng của ngôn ngữ Oak nên đã đầu tư
cải tiến và phát triển Sau đó không lâu ngôn ngữ mới với tên gọi là Java
ra đời và được giới thiệu năm 1995
Đạ i h
ọc Kinh
tế Hu
ế
Trang 13c Đặc điểm nổi bật của ngôn ngữ lập trình Java
- Máy ảo Java (JVM - Java Virtual Machine)
Tất cả chương trình muốn thực thi được thì phải được biên dịch ra mã máy Mã máy của từng kiến trúc CPU của mỗi máy tính là khác nhau (tập lệnh mã máy của CPU Intel, CPU Solarix, CPU Macintosh… là khác nhau), vì vậy trước đây một chương trình sau khi được biên dịch xong chỉ có thể chạy trên một kiến trúc CPU cụ thể nào đó Đối với CPU chúng ta có thể chạy các hệ điều hành như Microsoft Windows, Unix, Linux,…
Chương tình thực thi được trên Window được biên dịch dưới dạng file
có đuôi EXE, còn trên Linux được biên dịch dưới dạng file có đuôi ELF Vì vậy trước đây một chương trình muốn chạy được trên hệ điều hành khác như Linux chẳng hạn thì phải chỉnh sửa và biên dịch
lại
Ngôn ngữ lập trình Java ra đời, nhờ vào máy ảo mà khó khăn nêu trên
đã được khắc phục Một chương tình viết bằng ngôn ngữ lập trình Java sẽ được biên dịch ra mã của máy ảo Java Sau đó máy ảo Java
chịu trách nhiệm chuyển mã java bytecode thành mã máy tương ứng Sun Microsystem chịu trách nhiệm phát triển các máy ảo Java chạy trên các hệ điều hành trên các kiến trúc CPU khác nhau
- Thông d ịch
Java là một ngôn ngữ lập trình vừa biên dịch vừa thông dịch Chương trình nguồn viết bằng ngôn ngữ lập trình Java có đuôi *.java đầu tiên được biên dịch thành tập tin có đuôi *.class và sau đó sẽ được trình thông dịch thông dịch thành mã máy
Trang 14- Hướng đối tượng
Hướng đối tượng trong Java tương tự như C++ nhưng Java là một ngôn ngữ lập trình hướng đối tượng hoàn toàn Tất cả mọi thứ đề cập đến trong Java đều liên quan đến các đối tượng được định nghĩa trước, thậm chí hàm chính (hàm main) của một chương trình viết bằng Java cũng phải đặt bên trong một lớp Hướng đối tượng trong Java không
có tính đa kế thừa (multi inheritance) như trong C++ mà thay vào đó Java đưa ra khái niệm Interface để hỗ trợ tính đa kế thừa
- Đa nhiệm – đa luồng (MultiTasking –MultiThreading)
Java hỗ trợ lập trình đa nhiệm, đa luồng cho phép nhiều tiến trình, tiểu trình có thể chạy song song cùng một thời điểm và tương tác với nhau
- Kh ả chuyển (portable)
Chương trình ứng dụng viết bằng ngôn ngữ Java chỉ cần chạy được trên máy ảo Java là có thể chạy được trên bất kỳ máy tính, hệ điều hành nào có máy ảo Java “Viết một lần, chạy mọi nơi” (Write Once, Run Anywhere)
- H ỗ trợ mạnh cho việc phát triển ứng dụng
Công nghệ Java phát triển mạnh mẽ chính là nhờ vào “đại gia Sun Microsystem” cung cấp nhiều công cụ, thư viện lập trình phong phú
hỗ trợ cho việc phát triển nhiều loại hình ứng dụng khác nhau, cụ thể như:
J2SE (Java 2 Standard Edition) hỗ trợ phát triển những ứng dụng đơn, ứng dụng client-server
J2EE (Java 2 Enterprise Edition) hỗ trợ phát triển các ứng dụng thương mại
J2ME (Java 2 Micro Edition) hỗ trợ phát triển các ứng dụng trên các thiết bị di động, không dây,…
Đạ i h
ọc Kinh
tế Hu
ế
Trang 151.3 T ổng quan về Java EE
Java EE (Enterprise Edition) là một nền tảng được sử dụng rộng rãi, chứa
một tập hợp các công nghệ được phối hợp với nhau, làm giảm đáng kể chi phí và độ phức tạp của việc phát triển, triển khai và quản lý các tầng làm việc, các ứng dụng máy chủ trung tâm Java EE được xây dựng dựa trên
nền tảng Java SE và cung cấp thêm một tập các API (giao diện lập trình ứng dụng) để phát triển và hoạt động các ứng dụng phía máy chủ (Server - Side Applications) một cách mạnh mẽ, có khả năng mở rộng, đáng tin cậy,
di động (portable) và bảo mật
Một số thành phần cơ bản của Java EE bao gồm:
• Enterprise Java Beans (EJB): một thành phần kiến trúc của các ứng dụng server được quản lý, sử dụng để bao gói (encapsulate) các business logic của các ứng dụng Công nghệ EJB cho phép phát triển nhanh chóng
và đơn giản hóa các ứng dụng phân tán, các giao dịch an toàn và di động
dựa trên công nghệ Java
• Java Persistence API (JPA): một framework cho phép nhà phát triển
quản lý dữ liệu bằng cách sử dụng ánh xạ đối tượng quan hệ (Object Relational Mapping - ORM) trong các ứng dụng được xây dựng trên nền
Trang 162 T ổng quan về hệ quản trị cơ sở dữ liệu Microsoft SQL Server:
2.1 Ngôn ngữ truy vấn dữ liệu có cấu trúc (Structure Query Language)
SQL (Structure Query Language) là một công cụ quản lý dữ liệu được sử dụng phổ biển ở nhiều lĩnh vực và nó bao gồm tập các câu lệnh sử dụng để tương tác với cơ sở dữ liệu quan hệ Hầu hết các ngôn ngữ bậc cao đều có trình hỗ trợ SQL như Java, C#, C, C++,…
SQL được sử dụng để điều khiển tất cả các chức năng mà một hệ quản trị
cơ sở dữ liệu cung cấp cho người dùng bao gồm:
- Định nghĩa dữ liệu: SQL cung cấp khả năng định nghĩa các cơ sở dữ liệu, các cấu trúc lưu trữ và tổ chức dữ liệu cũng như mối quan hệ giữa các thành phần dữ liệu
- Truy xuất và thao tác dữ liệu: Với SQL, người dùng có thể dễ dàng thực hiện các thao tác truy xuất, bổ sung, cập nhật và loại bỏ dữ liệu trong các
cơ sở dữ liệu
- Điều khiển truy cập: SQL có thể được sử dụng để cấp phát và kiểm soát các thao tác của người sử dụng trên dữ liệu, đảm bảo sự an toàn cho cơ
sở dữ liệu
- Đảm bảo toàn vẹn dữ liệu: SQL định nghĩa các ràng buộc toàn vẹn trong
cơ sở dữ liệu nhờ đó đảm bảo tính hợp lệ và chính xác của dữ liệu trước các thao tác cập nhật cũng như các lỗi của hệ thống
SQL là một ngôn ngữ hoàn thiện được sử dụng trong các hệ thống cơ sở dữ
liệu và là một thành phần không thể thiếu trong các hệ quản trị cơ sở dữ
liệu
Bản thân SQL không phải là một hệ quản trị cơ sở dữ liệu, nó không thể tồn
tại độc lập SQL thực sự là một phần của hệ quản trị cơ sở dữ liệu, nó xuất
hiện trong các hệ quản trị cơ sở dữ liệu với vai trò ngôn ngữ và là công cụ
Đạ i h
ọc Kinh
tế Hu
ế
Trang 172.2 H ệ quản trị cơ sở dữ liệu SQL Server
SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ (Relational Database Management System (RDBMS)) sử dụng câu lệnh SQL (Transact -
SQL) để trao đổi dữ liệu giữa máy Client và máy cài SQL Server Một RDBMS bao gồm databases, database engine và các ứng dụng dùng để
quản lý dữ liệu và các bộ phận khác nhau trong RDBMS
SQL Server được tối ưu để có thể chạy trên môi trường cơ sở dữ liệu rất lớn (Very Large Database Environment) lên đến Tera-Byte và có thể phục vụ cùng lúc cho hàng ngàn người dùng (user)
3 Giới thiệu về lập trình hướng đối tượng:
Lập trình hướng đối tượng (gọi tắt là OOP, từ chữ Anh ngữ object-oriented programming), hay còn gọi là lập trình định hướng đối tượng, là kĩ thuật lập trình hỗ trợ công nghệ đối tượng OOP được xem là giúp tăng năng suất, đơn
giản hóa độ phức tạp khi bảo trì cũng như mở rộng phần mềm bằng cách cho phép lập trình viên tập trung vào các đối tượng phần mềm ở bậc cao hơn
Lập trình hướng đối tượng nhằm giảm nhẹ các thao tác viết mã cho người lập trình, cho phép họ tạo ra các ứng dụng mà các yếu tố bên ngoài có thể tương tác
với các chương trình đó giống như là tương tác với các đối tượng vật lý
4 Mô hình MVC (Model – View – Controller):
4.1 Mô hình MVC là gì ?
MVC là mô hình thiết kế mang tính tổng thể để giải quyết vấn đề có tính nghiệp vụ cao, thường áp dụng cho những dự án lớn và có tính thương mại cao Mô hình MVC được tạo ra bởi Krasner và Pope vào năm 1988 cho Smalltalk, hiện tại được IBM và Apache ứng dụng trong các dự án của họ
rất thành công Đây là một giải pháp cho phép xây dựng các ứng dụng phân
tầng một cách rất hiệu quả, bằng cách tạo ra những phương thức quản lý từng tầng một cách riêng lẻ Trong J2EE, thì MVC cũng được xây dựng
Đạ i h
ọc Kinh
tế Hu
ế
Trang 184.2 Các thành ph ần trong MVC
Model: là nơi chứa những nghiệp vụ tương tác với dữ liệu hoặc hệ quản trị
cơ sở dữ liệu (mysql, mssql,…) nó sẽ bao gồm các class/function xử lý nhiều nghiệp vụ như kết nối database, truy vấn dữ liệu, thêm sửa xóa dữ liệu
View: là nơi chứa những giao diện như một nút bấm, khung nhập, menu, hình ảnh,… nó đảm nhiệm hiển thị dữ liệu và giúp người dùng tương tác với hệ thống
Controller: là nơi tiếp nhận những yêu cầu xử lý được gửi từ người dùng,
nó sẽ gồm những class/function xử lý nhiều nghiệp vụ logic giúp lấy đúng
dữ liệu thông tin cần thiết nhờ các nghiệp vụ lớp Model cung cấp và hiển
thị dữ liệu đó ra cho người dùng nhờ lớp View
4.3 Sự tương tác giữa các lớp trong mô hình MVC
Controller – View sẽ lấy hình ảnh, nút bấm,… hoặc hiển thị dữ liệu được
trả ra từ Controller để người dùng có thể quan sát và thao tác Trong sự tương tác này cũng có thể không có dữ liệu được lấy từ Model và khi đó nó
chỉ chịu trách nhiệm hiển thị đơn thuần như hình ảnh, nút bấm,…
Controller – Model là luồng xử lý khi Controller tiếp nhận yêu cầu và các tham số đầu vào từ người dùng, Controller sẽ sử dụng các lớp/hàm trong Model cần thiết để lấy ra những dữ liệu chính xác
View – Model có thể tương tác với nhau mà không qua Controller, nó chỉ đảm nhận hiển thị dữ liệu chứ không phải qua bất kỳ xử lý nghiệp vụ logic nào Nó giống như các vùng dữ liệu hiển thị tĩnh trên các website như block slidebar,…
Đạ i h
ọc Kinh
tế Hu
ế
Trang 195 Gi ới thiệu về framework Struts:
5.1 Khái niệm về framework Struts
Struts là một framework phục vụ việc phát triển các ứng dụng Web trên Java Sử dụng mẫu thiết kế Model – View – Controller (MVC), Struts giải quyết rất nhiều các vấn đề liên quan đến các ứng dụng Web hướng business đòi hỏi hiệu năng cao với việc sử dụng Java Servlet và JSP
Struts là một tập thư viện các thẻ JSP tùy chọn (Custom JSP Tag) Struts cung cấp các thư viện thẻ tùy chọn cho việc thể hiện các thuộc tính của bean, quản lý các HTML forms, lặp lại các kiểu cấu trúc dữ liệu, và đưa ra các HTML có điều kiện
5.2 Cấu trúc của framework Struts
- Trong Struts, chỉ có 1 Servlet duy nhất là ActionServlet (được hệ thống
ẩn đi) Do không sử dụng Servlet nào khác nên hệ thống sẽ thay thế bằng Action và Struts-config.xml
- Struts phải tuân thủ các quy định của mô hình MVC, phân rõ chức năng
Trang 20- Một ActionForm có thể hiểu đơn giản là để chứa tất cả các dữ liệu cần thiết của một Action ActionForm được hiểu tương tự như javabean, có
dữ liệu (kiểu private) và các phương thức set/get
- Mỗi Action chỉ có thể có một ActionForm
- Một ActionForm có thể có nhiều javabean khác nhau
5.3 Tiến trình thực thi mô hình MVC của Struts
1 Một yêu cầu (request) được gửi đến từ View
2 ActionServlet sẽ tiếp nhận request này, phân tích, kiểm tra Sau đó chỉ định cho Action tương ứng thực thi yêu cầu, tính toán những tác vụ cần thiết
ActionServlet đóng vai trò là Controller
3 Action sẽ thao tác và xử lí trên Model của ứng dụng
4 Mỗi khi Action hoàn thành việc thao tác và xử lí, nó trả quyền điều khiển về cho ActionServlet kèm theo một key gắn kèm với kết quả trả
về ActionServlet sẽ dựa vào key này mà quyết định xem các kết quả trả
về sẽ được hiển thị như thế nào
5 ActionServlet trả lời bằng cách gửi lại một request cho View, đó là một liên kết đến kết quả trả về của Action thông qua key trên Sau đó, View làm nốt công việc trình bày kết quả
Đạ i h
ọc Kinh
tế Hu
ế
Trang 21CHƯƠNG II PHÂN TÍCH HỆ THỐNG
1 Mô tả bài toán:
Website hỏi đáp về công nghệ thông tin hoạt động chủ yếu phục vụ ba đối tượng cơ bản: người dùng vãng lai (visitor), thành viên (member) và người quản trị website (admin)
- Đối với người dùng vãng lai (visitor):
o Người dùng vãng lai có thể xem nội dung website chẳng hạn như xem bài viết, tags, thông tin cơ bản của các thành viên
o Người dùng vãng lai cũng có thể tìm kiếm bài viết, tags, thành viên
- Đối với thành viên (member):
o Thành viên là người dùng sau khi đã đăng ký tài khoản thành công
o Thành viên có thể đăng câu hỏi, đăng câu trả lời
o Thành viên có thể bình chọn câu hỏi, câu trả lời mà thành viên cảm thấy hay nhất, nhưng không thể bình chọn câu hỏi hoặc câu
trả lời mà chính thành viên đó đăng
o Thành viên có thể nhận hoặc mất điểm uy tín tương ứng theo quy ước tính điểm của hệ thống
- Đối với người quản trị website (admin):
o Admin là người có quyền quản trị website cao nhất
o Admin là người bảo mật an ninh của website
o Admin có thể thêm, sửa, xoá dữ liệu bài viết, tags, tài khoản có trong hệ thống
Đạ i h
ọc Kinh
tế Hu
ế
Trang 222 Phân tích bài toán:
2.1 Yêu cầu chất lượng
- Giao diện đơn giản, dễ sử dụng
- Ngôn ngữ tiếng Việt
Admin Là người quản trị hệ thống Họ có thể thêm, sửa, xóa dữ
liệu bài viết, tags, tài khoản có trong hệ thống hoặc
thống kê tài khoản, bài viết, tags để xem xét xu hướng, nhu cầu, mức độ mở rộng dữ liệu
Member Là một thành viên của hệ thống, họ có thể đăng câu hỏi,
trả lời một câu hỏi của thành viên khác Thông qua câu
hỏi và câu trả lời thành viên có thể nhận/mất điểm uy tín tương ứng theo những quy ước tính điểm của hệ thống
Nếu thành viên có những đóng góp tích cực thì họ có
thể trở thành một công tác viên với những đặc quyền
của admin
Visitor Là người dùng truy cập vào website nhưng không phải
là thành viên Họ có thể xem, tìm kiếm các bài viết,
tags, thông tin cơ bản của các thành viên
Đạ i h
ọc Kinh
tế Hu
ế
Trang 232.2.2 Biểu đồ Use Case
Hình 1: Biểu đồ Use Case chức năng của hệ thống
Đạ i h
ọc Kinh
tế Hu
ế
Trang 242.2.2.1 Chức năng xem trang chủ
Hình 2: Biểu đồ Use Case chức năng xem trang chủ của visitor
2.2.2.2 Chức năng quản lý bài viết
Hình 3: Biểu đồ Use Case chức năng quản lý bài viết của member và admin
Đạ i h
ọc Kinh
tế Hu
ế
Trang 252.2.2.3 Chức năng quản lý tài khoản
Hình 4: Biểu đồ Use Case chức năng quản lý tài khoản của admin
2.2.2.4 Chức năng quản lý thông tin cá nhân
Hình 5: Biểu đồ Use Case chức năng quản lý thông tin cá nhân của member
Đạ i h
ọc Kinh
tế Hu
ế
Trang 262.2.2.5 Chức năng tìm kiếm
Hình 6: Biểu đồ Use Case chức năng tìm kiếm
2.2.2.6 Chức năng quản lý Tag
Hình 7: Biểu đồ Use Case chức năng quản lý Tag của admin
Đạ i h
ọc Kinh
tế Hu
ế
Trang 272.3 Mô hình hoá h ệ thống
2.3.1 Biểu đồ luồng chức năng hệ thống
2.3.1.1 Luồng chức năng hệ thống dành cho user
Hình 8: Luồng chức năng hệ thống dành cho user
Đạ i h
ọc Kinh
tế Hu
ế
Trang 282.3.1.2 Luồng chức năng hệ thống dành cho admin
Hình 9: Luồng chức năng hệ thống dành cho admin
Đạ i h
ọc Kinh
tế Hu
ế
Trang 292.3.2 Bi ểu đồ tuần tự (Sequence Diagram)
2.3.2.1 Quản lý trang chủ
a Hiển thị danh sách câu hỏi
Hình 10: Biểu đồ tuần tự hiển thị danh sách câu hỏi
Đạ i h
ọc Kinh
tế Hu
ế
Trang 30b Hiển thị chi tiết câu hỏi
Hình 11: Biểu đồ tuần tự hiển thị chi tiết câu hỏi
Đạ i h
ọc Kinh
tế Hu
ế
Trang 312.3.2.2 Tương tác bài viết
Trang 332.3.2.3 Quản lý bài viết dành cho admin
a Tìm kiếm bài viết
Hình 14: Biểu đồ tuần tự tìm kiếm bài viết
Đạ i h
ọc Kinh
tế Hu
ế
Trang 352.3.2.4 Quản lý đăng bài viết
Hình 16: Biểu đồ tuần tự quản lý đăng bài viết
Đạ i h
ọc Kinh
tế Hu
ế
Trang 362.3.2.5 Quản lý tài khoản (Account)
a Hiển thị danh sách tài khoản
Hình 17: Biểu đồ tuần tự hiển thị danh sách tài khoản
Đạ i h
ọc Kinh
tế Hu
ế
Trang 37b Khoá tài khoản
Hình 18: Biểu đồ tuần tự khoá tài khoản
Đạ i h
ọc Kinh
tế Hu
ế
Trang 382.3.2.6 Quản lý Tag
a Hiển thị danh sách Tag
Hình 19: Biểu đồ tuần tự hiển thị danh sách Tag
Trang 392.3.2.7 Đăng nhập – Đăng xuất