Lập trình web với java và xây dựng ứng dụng
Trang 1BÁO CÁO THỰC TẬP CHUYÊN NGÀNH
ĐỀ TÀI: LẬP TRÌNH WEB VỚI JAVA
VÀ XÂY DỰNG ỨNG DỤNG
HÀ NỘI – 2018
Trang 2BÁO CÁO THỰC TẬP CHUYÊN NGÀNH
ĐỀ TÀI: LẬP TRÌNH WEB VỚI JAVA
Trang 3BẢNG CÁC THUẬT NGỮ VIẾT TẮT 2
PHẦN I: Mở Đầu 3
1.1 Tên đề tài 3
1.2 Đặt vấn đề 3
1.3 Mục đích và yêu cầu 3
1.3.1 Mục đích: 3
1.3.2 Yêu cầu: 4
1.3.2.1 Đối với sinh viên thực hiện: 4
1.3.2.2 Đối với sản phẩm phải đảm bảo các chức năng sau: 4
PHẦN II: TỔNG QUAN TÌNH HÌNH NGHIÊN CỨU TRONG VÀ NGOÀI NƯỚC 4
2.1 Tình hình nghiên cứu trong nước 4
2.2 Tình hình nghiên cứu ngoài nước 5
2.3 Tên đề tài, tính thời sự và tầm quan trọng của đề tài 6
2.3.1 Tên đề tài 6
2.3.2 Tính thời sự 6
2.3.3 Tầm quan trọng của đề tài 6
PHẦN III: NỘI DUNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU 6
3.1 Địa điểm và thời gian nghiên cứu (thực tập): 6
3.2 Nội dung nghiên cứu 6
3.3 Phương pháp nghiên cứu 7
PHẦN IV: KẾT QUẢ VÀ THẢO LUẬN 7
A LÝ THUYẾT 7
I TÌM HIỂU CÔNG NGHỆ JAVA SERVLET VÀ JSP 7
1 Giới thiệu ngôn ngữ Java 7
1.1 Lịch sử ra đời và phát triển của ngôn ngữ Java 7
1.2 Java là gì? 8
1.3 Tính chất của Java 8
1.4 Java được sử dụng để làm gì? 8
1.5 Những nơi sử dụng Java 9
2 Tìm hiểu về Java Servlet 9
2.1 Khái niệm Java Servlet 9
2.2 Ưu điểm Servlet 10
Trang 42.5 Request và Response 13
2.6 Form Data trong Servlet 13
2.6.1 Phương thức GET 13
2.6.2 Phương thức POST 14
2.6.3 Đọc Form Data bởi sử dụng Servlet 14
2.7 Cookie trong Servlet 14
2.8 Upload File trong Servlet 15
2.9 Một số phương thức khác 15
3 Tìm hiểu về JSP 16
3.1 JSP là gì? 16
3.2 Ưu điểm của JSP 16
3.3 Vòng đời của JSP 17
3.4 Trình tự làm việc của JSP 18
3.5 Các bước xử lý trang JSP 18
3.6 Client Request trong JSP 19
3.7 Server Response trong JSP 19
3.8 Xử lý Form trong JSP 19
3.8.1 Phương thức GET 19
3.8.2 Phương thức POST 20
3.8.3 Đọc Form Data bởi sử dụng JSP 20
3.9 Đối tượng ẩn (Implicit) trong JSP 20
3.10 Cookie trong JSP 21
3.11 Upload File trong JSP 21
3.12 Một số phương thức khác 22
B XÂY DỰNG ỨNG DỤNG 22
I ĐẶC TẢ YÊU CẦU PHẦN MỀM 22
1.1 Giới thiệu chung 22
1.1.1 Mục tiêu 23
1.1.2 Phạm vi 23
1.1.3 Các môi trường nền tảng cần sử dụng 23
1.2 Mô tả khái quát 25
1.3 Đặc tả yêu cầu 26
1.3.1 Chức năng của phần mềm 26
1.3.1.1 Sơ đồ use case 32
Trang 52.1 Thiết kế chi tiết 55
2.1.1 Sơ đồ lớp 55
2.2.2 Sơ đồ trình tự 59
2.2.3 Thiết kế cơ sở dữ liệu 65
2.2.3.1 Sơ đồ quan hệ thực thể 65
2.2.3.2 Danh sách các bảng và mô tả tóm tắt 68
2.3.4 Thiết kế giao diện 71
C THẢO LUẬN 77
I Tìm hiểu mô hình MVC 77
1.1 Mô hình MVC là gì? 77
1.2 Sự tương tác giữa các lớp trong mô hình MVC 78
1.3 Ưu và nhược điểm của mô hình MVC 79
PHẦN V: KẾT LUẬN VÀ ĐỀ NGHỊ 79
I Kết luận 79
II Đề nghị hướng phát triển 80
PHẦN VI: TÀI LIỆU THAM KHẢO 80
Trang 6Hình 1: Kiến trúc Servlet 10
Hình 2: Vòng đời Servlet 11
Hình 3: Các bước thực hiện trong servlet 11
Hình 4: Phương thức init() 12
Hình 5: Phương thức service() 12
Hình 6: phương thức doGet() 12
Hình 7: Phương thức request 13
Hình 8: phương thức destroy() 13
Hình 9: Vòng đời của JSP 17
Hình 10: Trình tự làm việc của JSP 18
Hình 11: Các bước xử lý trang JSP 18
Hình 12: Biểu đồ phân cấp chức năng phía Frontend 34
Hình 13: Biểu đồ phân cấp chức năng phía Backend 34
Hình 14: Use-case tổng quát 36
Hình 15: Use-case dành cho admin 36
Hình 16: Use-case dành cho khách hàng 37
Hình 17: Use-case quản lý tài khoản 37
Hình 18: Use-case quản lý tìm kiếm 38
Hình 19: Use-case quản lý đơn hàng 38
Hình 20: Use-case quản lý danh mục 39
Hình 21: Sơ đồ hoạt động đăng kí 49
Hình 22: Sơ đồ hoạt động đăng nhập 49
Hình 23: Sơ đồ hoạt động tìm kiếm 50
Hình 24: Sơ đồ hoạt động thêm mới sản phẩm 50
Hình 25: sơ đồ hoạt động sửa xóa thông tin sản phẩm 51
Hình 26: Sơ đồ hoạt động xem giỏ hàng 51
Hình 27: Sơ đồ hoạt động xem sản phẩm 52
Hình 28: Sơ đồ hoạt động xem thông tin cá nhân 52
Hình 29: Sơ đồ hoạt động xem đơn đặt hàng 53
Hình 30: Sơ đồ hoạt động thêm User 53
Hình 31: Sơ đồ hoạt động sửa, xóa thông tin user 54
Hình 32: Sơ đồ hoạt động thanh toán 54
Hình 33: Các lớp cần có (1) 55
Trang 7Hình 36: Các lớp cần có (4) 56
Hình 37: Sơ đồ lớp cần có(5) 57
Hình 38: Sơ đồ lớp tổng quan 57
Hình 39: Sơ đồ lớp đã được phân rã nhỏ (1) 58
Hình 40: Sơ đồ lớp đã được phân rã nhỏ (2) 58
Hình 41: Sơ đồ lớp đã được phân rã nhỏ (3) 59
Hình 42: Sơ đồ trình tự đăng nhập 60
Hình 43: Sơ đồ trình tự đăng kí 60
Hình 44: Sơ đồ trình tự thanh toán đơn hàng 61
Hình 45: Sơ đồ trình tự thêm sản phẩm vào giỏ hàng 61
Hình 46: Sơ đồ trình tự xem chi tiết sản phẩm 62
Hình 47: Sơ đồ trình tự xem sản phẩm theo danh mục 62
Hình 48: Sơ đồ trình tự admin thêm,sửa, xóa danh mục 63
Hình 49: Sơ đồ trình tự admin xem thống kê danh mục 63
Hình 50: Mô hình thực thể liên kết 66
Hình 51: Quan hệ giữa các bảng trong CSDL 69
Hình 52: Giao diện trang chủ shop 70
Hình 53:: Giao diện đăng kí 70
Hình 54: Giao diện đăng nhập 71
Hình 55: Giao diện giỏ hàng trống 71
Hình 56: Giao diện giỏ hàng có sản phẩm 72
Hình 57: Giao diện trang cá nhân của khách hàng 72
Hình 58: Giao diện trang chủ quản trị viên 73
Hình 59: Giao diện quản lý danh mục 73
Hình 60: Giao diện quản lý sản phẩm 74
Hình 61: Giao diện quản lý người dùng 74
Hình 62: Giao diện quản lý hóa đơn 75
Hình 63: Giao diện thống kê danh mục sản phẩm 75
Hình 64: Mô hình MVC 76
Trang 8LỜI CẢM ƠN
Để hoàn thành được bài báo cáo thực tập chuyên ngành này trước hết
em xin gửi đến các thầy, cô giáo trong khoa Công Nghệ Thông Tin trườngHọc viện Nông Nghiệp Việt Nam lời cảm ơn trân thành
Đặc biệt, em xin gửi lời cảm ơn sâu sắc đến thầy Trần Trung Hiếu,người đã tận tình hướng dẫn, giúp đỡ em hoàn thành chuyên đề báo cáo thựctập này
Đồng thời nhà trường đã tạo điều kiện cho em có cơ hội được tìm hiểu
về cách làm việc cũng như vận dụng những kiến thức vào thực tế Qua kì thựctập này em nhận ra nhiều điều mới mẻ và bổ ích cho công việc sau này củabản thân
Với đề tài “Lập trình web với Java và xây dựng ứng dụng”, ở đây
em áp dụng vào để xây dựng một website thương mại điện tử, là một đề tài cótính thực tế nhưng do thời gian ngắn và trình độ hiểu biết chưa sâu nên bàilàm của em không tránh khỏi những thiếu sót Em rất mong nhận được sự góp
ý, chỉ bảo của thầy cô cùng toàn thể các bạn trong lớp, khoa để bài báo cáocủa em được hoàn thiện hơn nữa
Trang 9BẢNG CÁC THUẬT NGỮ VIẾT TẮT
STT Thuật ngữ, từ viết tắt Giải thích Ghi chú
tin và cho phéptruy cập
Trang 10Công nghệ web trong tương lai có thể sẽ thay thế cho các ứng dụngdesktop hiện tại, khi đó công việc của chúng ta sẽ trở lên đơn giản hơn rấtnhiều Dựa trên nền tảng công nghệ web và các phần kết nối trên môi trườnginternet thì mọi sự kiện trao đổi thông tin, mua bán hàng hóa…vv… đều đượcdiễn ra trên môi trường web
Chúng ta hoàn toàn có thể tin tưởng vào một tương lai phát triển mạnh
mẽ của công nghệ web
Ngôn ngữ lập trình Java được biết đến từ năm 1991 Là một trongnhững ngôn ngữ lập trình phổ biến nhất trong giới lập trình viên và nó được
sử dụng để tạo ra các ứng dụng web, phần mềm tùy chỉnh, cổng thông tin điện
tử, bao gồm các giải pháp thương mại điện tử trên web và di động
Có rất nhiều các công nghệ Java được sử dụng trong các ứng dụng web.Hãy nhớ rằng, chúng ta không cần phải sử dụng tất cả những công nghệ Java
Trang 11kiện Sau khi hoàn thành sẽ hiểu biết nhiều hơn về các công nghệ làm webcủa java, đồng thời sẽ là nền tảng để phát triển các ứng dụng web khác
1.3.2 Yêu cầu:
1.3.2.1 Đối với sinh viên thực hiện:
Kiến thức cơ bản về JSP/Servlet, như JDBC, cách lấy dữ liệu từ form,cách truyền biến và session trong java
Kiến thức về Front-end như HTML, CSS, JS
Kiến thức về cơ sở dữ kiệu MySQL
Kĩ năng phân tích các yêu cầu cần có của hệ thống
Xác định rõ các tính năng chính, các yêu cầu cơ bản về mặt giaodiện của website
1.3.2.2 Đối với sản phẩm phải đảm bảo các chức năng sau:
Chức năng dành cho quản trị:
Quản ký danh mục, quản lý sản phẩm
Quản lý hóa đơn bán hàng
Thêm, sửa, xóa, tìm kiếm dữ liệu
Đăng nhập và truy cập vào cơ sở dữ liệu
Chức năng dành cho người dùng:
Đăng kí, đăng nhập thành viên
Chức năng giỏ hàng
Gửi mail
Thanh toán đơn hàng
PHẦN II: TỔNG QUAN TÌNH HÌNH NGHIÊN CỨU TRONG VÀ
NGOÀI NƯỚC
2.1 Tình hình nghiên cứu trong nước
Ở Việt Nam trong những năm gần đây, Java đang được ứng dụng rấtrộng rãi, chủ yếu là các ứng dụng viết trên Internet nhằm khai thác tối đa khả
Trang 12năng của nó trong lĩnh vực viễn thông, truyền hình, mạng và các máy tính đơnlẻ.
Tại cuộc hội thảo “Java: Xu hướng phát triển ứng dụng tại Việt
Nam” diễn ra tại trường ĐH KHTN Hà Nội, các chuyên gia của trung tâm
đào tạo lập trình viên quốc tế Hanoi-Aptech đã khẳng định, nếu chỉ xét đếnmảng dùng để tạo đoạn mã trong trang Web thì Java đã thực sự trở thành mộttrong những ngôn ngữ căn bản của Web và nó hữu dụng đến mức khó màthay thế
Năm 2017, thị trường thương mại điện tử của nước ta đang có mứctăng trưởng về số lượng và trong các lĩnh vực ngày càng nhiều Thị trườngthương mại điện tử bắt đầu trở lên sôi động hơn nhiều
Các trang thương mại điện tử lớn ở Việt Nam có thể kể đến như:
“Lazada, Tiki, Sendo, Zalora, Adayroi… vv….”.
2.2 Tình hình nghiên cứu ngoài nước
Hiện nay có hầu hết các ứng dụng web chạy trên internet hay mạng nội
bộ được phát triển bằng Java có nguồn gốc là Servlet API Nó là tiêu chuẩntrong phát triển Web bằng Java JSP được dựa trên Servlet Hầu hết tất cả cácframework như Spring MVC, Struts, Wicker cũng sử dụng Servlet API
Theo thống kê thì các Java Framework phổ biến nhất hiện nay như:Sping MVC, Struts, Hibernate, JSF (Java Server Faces), Vaadin…
Trên thế giới thì khái niệm “thương mại điện tử” được xuất hiện từ thậpniên 70, cho phép các doanh nghiệp gửi các hợp đồng điện tử như đơn đặthàng hay hóa đơn điện tử Cho đến nay, thương mại điện tử đã được ứng dụngtrong hầu hết các lĩnh vực có liên quan đến thương mại Không chỉ dừng ở đó,thương mại điện tử còn đụng chạm tới mọi hoạt động giao tiếp xã hội, giải trí,hầu hết trong các lĩnh vực kinh doanh Được thể hiện rất rõ ở Mỹ Ở châu Mỹ
La Tinh, thương mại điện tử tập trung ở 4 thị trường Internet phát triển nhất làArgentina, Brazil, Chile và Mexico…
Có thể kể đến một vài trang thương mại điện tử hàng đầu như:
“Amazon, Alibaba, Walmart, Bestbuy, Ebay… ”
Trang 132.3 Tên đề tài, tính thời sự và tầm quan trọng của đề tài
Lập trình web với Java tuy không phải là một vấn đề mới mẻ, nhưngchúng ta phải thừa nhận với nhau rằng, vị trí của Java trong giới lập trìnhWeb vẫn luôn là một ngôn ngữ lập trình rất mạnh và phổ biến
2.3.3 Tầm quan trọng của đề tài
Đề tài với mục đích tìm hiểu rõ hơn các công nghệ Web với Java, cụthể là công nghệ (JSP/Servlet) Đồng thời xây dựng lên website bán hàng ,giúp dễ dàng trong việc quản lí và triển kha bán sản phẩm online Giới thiệusản phẩm đến với khách hàng tốt hơn, thuận lợi giao dịch và mua bán từ xa
PHẦN III: NỘI DUNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU
3.1 Địa điểm và thời gian nghiên cứu (thực tập):
Cơ sở thực tập: Bộ môn Công Nghệ Phần Mềm – Khoa Công
Nghệ Thông Tin – Học Viện Nông Nghiệp Việt Nam
Thời gian nghiên cứu: Bắt đầu từ 08/01/2018 đến 21/05/2018
3.2 Nội dung nghiên cứu
Java Server Pages (JSP)
Java Servlet
Xây dựng website thương mại điện tử
Trang 143.3 Phương pháp nghiên cứu
Tìm kiếm, nghiên cứu và tổng hợp tài liệu
Tiếp nhận ý kiến của giáo viên hướng dẫn, định hướng cụ thể
Tìm hiểu và cài đặt các môi trường nền tảng cần thiết
Khảo sát yêu cầu người dùng, thu thập tài liệu
Tham khảo các tài liệu chuyên môn
Viết đặc tả yêu cầu
Phân tích thiết kế cho hệ thống
I TÌM HIỂU CÔNG NGHỆ JAVA SERVLET VÀ JSP
1 Giới thiệu ngôn ngữ Java
1.1 Lịch sử ra đời và phát triển của ngôn ngữ Java
Java là một ngôn ngữ lập trình được Sun Microsystems giới thiệu vàotháng 6 năm 1995 Từ đó, nó đã trở thành một công cụ lập trình của các lậptrình viên chuyên nghiệp Java được xây dựng trên nền tảng của C và C++
Do vậy nó sử dụng các cú pháp của C và các đặc trưng hướng đối tượng củaC++
Vào năm 1991, một nhóm các kỹ sư của Sun Microsystems có ý địnhthiết kế một ngôn ngữ lập trình để điều khiển các thiết bị điện tử như Tivi, lònướng,… Mặc dù C và C++ có khả năng làm việc này nhưng trình biên dịchlại phụ thuộc vào từng loại CPU
Trang 15Trình biên dịch thường phải tốn nhiều thời gian để xây dựng nên rấtđắt Vì vậy để mỗi loại CPU có một trình biên dịch riêng là rất tốn kém Do
đó nhu cầu thực tế đoi hỏi một ngôn ngữ chạy nhanh, gọn, hieju quả và độclập thiết bị tức là có thể chạy trên nhiều loại CPU khác nhau, dưới các môitrường khác nhau Mặc dù mục tiêu ban đầu không phải cho Internet nhưng
do đặc trưng không phụ thuộc thiết bị nên Java đã trở thành ngôn ngữ lậptrình cho Internet
1.2 Java là gì?
Java là ngôn ngữ lập trình hướng đối tượng, do vậy không thể dùngjava để viết một chương trình hướng chức năng Java có thể giải quyết hầu hếtcác công việc mà các ngôn ngữ khác có thể làm được
Java là ngôn ngữ vừa biên dịch vừa thông dịch Đầu tiên mã nguồnđược biên dịch bằng công cụ JAVAC để chuyển thành dạng ByteCode Sau
đó được thực thi trên từng loại máy cụ thể nhờ chương trình thông dịch
Trang 161.4 Java được sử dụng để làm gì?
Viết ứng dụng web (J2EE): Java hường được sử dụng để xâydựng các hệ thống Web lớn đòi hỏi độ bảo mật cao, số lượngngười dùng lớn như ngân hàng, phần mềm quản lý bệnh viện,quản lý nhà xe… Đối với các website nhỏ thông thường ít khiviết bằng Java
Viết ứng dụng mobile (J2ME): Trước đây nền tảng J2ME thườngđược sử dụng để viết game và app cho di động feature phone(file.jar) và bây giờ khi smartphone Android lên ngôi Java lạitiếp tục được sử dụng để viết app và game cho nền tảng Android(file.apk)
Viết ứng dụng desktop (J2SE): các ứng dụng desktop viest bằngJava thật sự không nhiều có thể kể đến một số phần mềm như
“Jmeter” hoặc “Designer Vista” Lợi thế lớn nhất của ứng dụngJava là bạn chỉ viết một lần và sau đs có thể đem chương trìnhlên Windows, Linux, hay MAC để chạy mà không cần phải viếtlại
1.5 Những nơi sử dụng Java
Có rất nhiều thiết bị hiện tại đang sử dụng Java Bao gồm:
Desktop App như media player, antivirus, reader,…
Web App như javapoint.com, irctc.co.in,…
Enterprise App như các ứng dụng về xử lý nghiệp vụ ngânhàng…
Trên các thiết bị Mobile
2 Tìm hiểu về Java Servlet
2.1 Khái niệm Java Servlet
Java Servlet là chương trình chạy trên một Web hoặc ứng dụng máychủ (Application Server) và hành động như một lớp trung gian giữa một yêu
Trang 17cầu đến từ một trình duyệt web hoặc HTTP khách (client) khác và cơ sở dữliệu hoặc các ứng dụng trên máy chủ HTTP (HTTP Server).
Sử dụng Servlet bạn có thể thu thập đầu vào từ người dùng thông quacác hình thức trang web, từ một cở sở dữ liệu hoặc một nguồn khác, và tạo racác trang web động
Cụ thể như sau:
- Nhận client request.
- Lấy thông tin từ request.
- Tạo và gửi request với client hoặc gửi request tới servlet hoặc
JSP khác
- Xử lý nghiệp vụ và phát sinh nội dung bằng cách truy cập
Database
2.2 Ưu điểm Servlet
Có nhiều web servers hỗ trợ servlet
Truy cập được mọi java APIs
Độ tin cậy cao, hiệu năng tốt, dễ mở rộng
Độc lập Platform và server
An toàn
Hầu hết server cho phép load lại server khi có sự thay đổi
Trang 182.3 Kiến trúc Servlet
Hình 1: Kiến trúc Servlet
2.4 Vòng đời của Servlet
Hình ảnh dưới sẽ minh họa rõ nét về vòng đời của một Servlet Từ khi
nó được tạo ra, xử lý các đòi hỏi từ người dùng, cho tới khi nó bị hủy
Hình 2: Vòng đời Servlet
Có 5 bước:
B1 Tải lớp Servlet vào bộ nhớ
B2 Tạo đối tượng Servlet
Trang 19B3 Gọi phương thức init() của Servlet.
B4 Gọi phương thức Service() của Servlet
B5 Gọi phương thức destroy() của Servlet
Hình 3: Các bước thực hiện trong servlet
Phương thức init(): Phương thức được thiết kế chỉ được gọi
một lần Nó được gọi khi Servlet lần đầu được tạo và khôngđược gọi lại cho mỗi yêu cầu cua người dùng Vì thế, nó được sửdụng cho các khởi tạo one-time, giống như phương thức init củaApplet
Định nghĩa phương thức init() như sau:
Hình 4: Phương thức init()
Phương thức Service(): là phương thức chính để thực hiện tác
vụ thực sự Nơi chứa servlet gọi phương thức service() để xử lýcác yêu cầu từ Client và viết phản hồi đã được định dạng trở lạiClient đó
Minh họa phương thức service() như sau:
Trang 20Hình 5: Phương thức service()
Phương thức doGet(): Một yêu cầu Get, là kết quả từ một yêu
cầu chuẩn cho URL hoặc từ một HTML form, mà không cóphương thức nào được xác định và nó nên được xử lý bởiphương thức doGet()
Hình 6: phương thức doGet()
Phương thức doPost(): là kết quả từ một HTML form mà liệt kê
POST như là phương thức, và nên được xử lý bởi phương thứcdoPost();
Hình 7: Phương thức request
Phương thức destroy(): chỉ được gọi một lần ở giai đoạn cuối
trong vòng đời Servlet Phương thức này giúp đóng các kết nốiDatabase, dừng thread, viết các danh sách cookie,……
Hình 8: phương thức destroy()
Trang 21Thông tin được gửi đến Client từ server.
- Dữ liệu text, image…
Trang 222.6.3 Đọc Form Data bởi sử dụng Servlet
JSP xử lý Form Data bằng việc parse một cách tự động bởi sử dụng cácphương thức sau tùy thuộc vào từng tình huống:
- getParameter(): Chúng ta gọi phương thức
request.getParameter() để nhận giá trị của tham số Form
- getParameterValues(): Chúng ta gọi phương thức này nếu
parameter xuất hiện nhiều hơn một lần và trả về nhiều giá trị, ví
dụ checkbox
- getParameterNames(): Chúng ta gọi phương thức này nếu như
muốn một danh sách đầy đủ của tất cả các parameter trong yêucầu hiện tại
2.7 Cookie trong Servlet
Cookie là các text file được lưu giữ trên máy tính client và chúng đượcgiữ cho mục đích theo dõi các thông tin đa dạng JSP hỗ trợ các HTTP cookiebởi sử dụng công nghệ Servlet ở tầng dưới
Có 3 bước liên quan trong việc nhận diện việc phản hồi người dùng:
- Server scrip gửi một tập hợp các Cookie tới trình duyệt.
- Trình duyệt lưu giữ thông tin này trên thiết bị nội bộ để sử dụng
trong thời gian tới
- Trong lần tới, trình duyệt gửi bất kì yêu cầu nào tới webserver,
thì nó gửi những thông tin Cookie này tới Server và Server này
sử dụng thông tin đó dể nhận diện người dùng
2.8 Upload File trong Servlet
Những điểm quan trọng cần ghi nhớ:
Thuộc tính Phương thức của thẻ form nên được thiết lập
là phương thức POST và phương thức GET không thể
được sử dụng
Thuộc tính enctype của thẻ form nên được thiết lập là
multipart/form-data.
Trang 23 Thuộc tính action trong thẻ form nên được thiết lập là một
JSP file mà sẽ xử lý việc upload file tại Backend Server
Để upload một file đơn, nên sử dụng một thẻ <input />
đơn với thuộc tính là type=”file” Để cho phép uploadnhiều file lên, sử dụng nhiều thẻ input với các giá trị thuộctính khác nhau
2.9 M t s ph ột số phương thức khác ố phương thức khác ương thức khác ng th c khác ức khác
Redirect Page: được sử dụng khi một tài liệu di chuyển tới một
địa chỉ mới và chúng ta cần gửi Client tới vị trí mới này hoặc cóthể vì cân bằng tải (load balancing) hoặc do ngẫu nhiên
Hit Counter: Nhiều khi chúng ta quan tâm đến tổng lượt click
trên một trang cụ thể trong website Tính toán những lượt Clicknày bởi sủ dụng một Servlet, bởi vì vòng đời được điều khiển bởiContainer, mà nso chạy trong đó
Auto Refresh: Cung cấp một kĩ thuật giúp bạn refresh trang web
một cách tự động sau một khoảng thời gian đã cho Sử dụng
phương thức setIntHeader() của đối tượng Response.
Gửi Email: cần cài đặt javaMail API và Java Activation
Framework (JAF)
Package: Cấu trúc web application bao gồm các thư mục phụ
WEB-INF là chuẩn với tất cả các Java Web Application và xácđịnh bởi Servlet API
3 Tìm hiểu về JSP
3.1 JSP là gì?
JSP là một công nghệ để phát triển các webpage mà hỗ trợ nội dungđộng, giúp các lập trình viên chèn java code vào trong các HTML page bằngviệc sử dụng các JSP tag đặc biệt, hầu hết bắt đầu với <% và kết thúc với %>
Trang 24- Là 1 tài liệu text có thể trả về cả static và dynamic content cho
trình duyệt
- Static content và dynamic content có thể được phép lẫn với nhau.
- Static content: HTML, XML, Text.
- Dynamic content:
+ Mã java, các thẻ Custom tags
+ Các thuộc tính hiển thị của javabean
- JSP là mở rộng của Servlet, trong thực tế JSP và Servlet được sử
dụng đồng thời để phát triển ứng dụng
- Trong mô hình MVC, thì JSP xử lý phần view, Servlet xử lý
phần controller
3.2 Ưu điểm của JSP
Tách biệt nội dung và cách trình bày
Đơn giản hóa việc phát triển ứng dụng web với JSP, Javabean
Hỗ trợ tái sử dụng phần mềm qua các components (javabean,custom tags)
Tự động biên dịch lại các trang JSP khi có sự thay đổi
Trang 25 Khởi tạo: Khi một container tải một JSP, nó gọi phương thức
jspInit() trước khi phục vụ bất kì yêu cầu nào Nếu cần thực hiện
sự khởi tạo JSP riêng, ghi đè phương thức jspInit()
Thực thi: Giai đoạn này trong vòng đời JSP biểu diễn tất cả các
tương tác với Request tới khi JSP đó bị hủy Bất cứ khi nào mộttrình duyệt yêu cầu một JSP và trang đã được tải và được khởitạo thì JSP engine triệu hồi phương thức _jspService() Phươngthức _jspService() nhận một HttpServletRequest và mộtHttpServletResponse
Hủy JSP: Giai đoạn hủy JSP trong vòng đời JSP biểu thị khi nào
thì một JSP bị gỡ bỏ khỏi một container
Trang 26Phương thức jspDestroy() trong JSP là phương thức hủy tương đươngvới trong Servlet Ghi đè phương thức jspDestroy() khi cần thực hiện bất kìquá trình hủy nào, ví dụ như giải phóng kết nối với Database, hoặc đóng file.
3.4 Trình tự làm việc của JSP
Hình 10: Trình tự làm việc của JSP
3.5 Các bước xử lý trang JSP
Hình 11: Các bước xử lý trang JSP
Trang 273.6 Client Request trong JSP
Khi một trình duyệt yêu cầu một Webpage, nó gửi nhiều thông tin tớiweb server, mà không thể được đọc một cách trực tiếp bởi vì thông tin này làmột phần trong Header của HTTP request
Đối tượng HttpServletRequest trong JSP: là một minh họa của một đốitượng javax.servlet.http.HttpServletRequest Mỗi khi một Client yêu cầu mộttrang, tì JSP engine tạo một đối tượng mới để biểu diễn yêu cầu đó
Đối tượng request cung cấp các phương thức để nhận thông tin Httpheader gồm Form data, cookie, phương thức Http……
3.7 Server Response trong JSP
Khi một Webserver phản hồi một Http Request tới trình duyệt, phảnhồi đặc trưng bao gồm một dòng Status, một số trường Header, một dòngtrống, và tài liệu
Đối tượng HttpServletResponse trong JSP là một minh họa của đốitượng javax.servlet.http.HttpServletResponse Ngay khi server tạo đối tượngrequest, nó cũng tạo một đối tượng để bieru diễn phản hồi tới Client
Đối tượng Response cũng định nghĩa các Interface mà thực hiện việctạo các HTTP header mới Thông qua đối tượng này, chúng ta có thể thêm cácCookie mới hoặc Date, HTTP Status code……
Có kích cỡ giới hạn: 1024 ký tự trong một chuỗi yêu cầu
Trang 28Thông tin này được truyền bởi sử dụng QUERY_STRING header và sẽ
có thể truy cập thông qua bến môi trường QUERY_STRING mà có thể được
xử lý bởi sử dụng phương thức getQueryString() và getParameter() của đốitượng Request trong JSP
3.8.3 Đọc Form Data bởi sử dụng JSP
JSP xử lý Form Data bằng việc parse một cách tự động bởi sử dụng cácphương thức sau tùy thuộc vào từng tình huống:
getParameter(): Chúng ta gọi phương thức
request.getParameter() để nhận giá trị của tham số Form
getParameterValues(): Chúng ta gọi phương thức này nếu
parameter xuất hiện nhiều hơn một lần và trả về nhiều giá trị, ví
dụ checkbox
getParameterNames(): Chúng ta gọi phương thức này nếu như
muốn một danh sách đầy đủ của tất cả các parameter trong yêucầu hiện tại
getInputStream(): Gọi đến phương thức này để đọc luồng dữ
liệu nhị phân tới từ Client
3.9 Đối tượng ẩn (Implicit) trong JSP
Request Đây là đối tượng HttpServletRequest mà liên kết với
Trang 29Response Đây là đối tượng HttpServletResponse mà liên kết với
Response tới Client
Out Đây là đối tượng PrintWriter được sử dụng để gửi output tới
Client
Session Đây là đối tượng HttpSession mà liên kết với Request
Application Đây là đối tượng ServletContext mà liên kết với application
context
Confi
g
Đây là đối tượng ServletConfig mà liên kết với page
PageContext Sự gói gọn này sử dụng các đặc trưng Server-Spcific giống
như hiệu năng cao jspWriters
Page Được sử dụng để gọi các phương thức được định nghĩa bởi
lớp Servlet đã được phiên dịch
Exception Đối tượng Exception cho phép dữ liệu exception để được
truy cập bởi JSP đã chỉ rõ
3.10 Cookie trong JSP
Cookie là các text file được lưu giữ trên máy tính client và chúng đượcgiữ cho mục đích theo dõi các thông tin đa dạng JSP hỗ trợ các HTTP cookiebởi sử dụng công nghệ Servlet ở tầng dưới
Có 3 bước liên quan trong việc nhận diện việc phản hồi người dùng:
Server scrip gửi một tập hợp các Cookie tới trình duyệt
Trình duyệt lưu giữ thông tin này trên thiết bị nội bộ để sửdụng trong thời gian tới
Trong lần tới, trình duyệt gửi bất kì yêu cầu nào tớiwebserver, thì nó gửi những thông tin Cookie này tớiServer và Server này sử dụng thông tin đó dể nhận diệnngười dùng
3.11 Upload File trong JSP
Những điểm quan trọng cần ghi nhớ:
Trang 30- Thuộc tính Phương thức của thẻ form nên được thiết lập là
phương thức POST và phương thức GET không thể được sử
dụng
- Thuộc tính enctype của thẻ form nên được thiết lập là multipart/form-data.
- Thuộc tính action trong thẻ form nên được thiết lập là một JSP
file mà sẽ xử lý việc upload file tại Backend Server
- Để upload một file đơn, nên sử dụng một thẻ <input /> đơn với
thuộc tính là type=”file” Để cho phép upload nhiều file lên, sửdụng nhiều thẻ input với các giá trị thuộc tính khác nhau
3.12 Một số phương thức khác
Redirect Page: được sử dụng khi một tài liệu di chuyển tới một
địa chỉ mới và chúng ta cần gửi Client tới vị trí mới này hoặc cóthể vì cân bằng tải (load balancing) hoặc do ngẫu nhiên
Hit Counter: cho chúng ta biết về lượng khách truy cập trên 1
trang cụ thể trong website Triển khai một Hit Counter, có thể sửdụng đối tượng ẩn application và đượ liên kết với phương thức
getAttribute() và setAttribute().
Auto Refresh: Cung cấp một kĩ thuật giúp bạn refresh trang web
một cách tự động sau một khoảng thời gian đã cho Sử dụng
phương thức setIntHeader() của đối tượng Response.
Gửi Email: cần cài đặt javaMail API và Java Activation
Framework (JAF)
Trang 31B XÂY DỰNG ỨNG DỤNG
I ĐẶC TẢ YÊU CẦU PHẦN MỀM
1.1 Giới thiệu chung
Ngôn ngữ lập trình Java được biết đến từ năm 1991 Là một trongnhững ngôn ngữ lập trình phổ biến nhất với các lập trình viên và nó được sửdụng để tạo ra các ứng dụng web, phần mềm tùy chỉnh, cổng thông tin điện
tử, bao gồm các giải pháp thương mại điện tử trên web và di động
Ngày nay, dưới sự phát triển của công nghệ thông tin, đặc biệt là tronglĩnh vực thương mại điện tử đã giúp các cá nhân, doanh nghiệp có mặt hàng
dễ dàng tiếp cận được với người tiêu dùng Việc Internet phát triển quá nhanhcũng làm thay đổi mọi thói quen mua hàng của người tiêu dùng, thay vì họphải đến tận nơi để lựa chọn mặt hàng như trước, thì giờ đây họ có thể chọnhàng và thanh toán ở bất cứ nơi nào mà họ có thể kết nối với internet
1.1.2 Phạm vi
Website được xây dựng lên nhằm phục vụ hai đối tượng chính là nhàquản trị và khách hàng Người quản trị sẽ quản lý các thông tin về sản phẩm,đăng sản phẩm mới cũng như quản lí tài khoản người dùng Còn khách hàng
sẽ xem được thông tin sản phẩm, đăng kí, đăng nhập tài khoản và đặt hàngqua mạng
Là cơ sở giao tiếp của các thành viên tác động lên website, là căn cứ để
Trang 321.1.3 Các môi trường nền tảng cần sử dụng
Trình soạn thảo code Eclipse:
Eclipse là phần mềm miễn phí, được các nhà phát triển sử dụng để xâydựng những ứng dụng J2EE, sử dụng Eclipse nhà phát triển có thể tích hợpnhiều công cụ hỗ trợ khác để có được một bộ công cụ hoàn chỉnh mà khôngcần dùng đến phần mềm riêng nào khác Eclipse SDK bao gồm 3 phần chính:Platform, Java Development Toolkit (JDT), Plug-in Development Enviroment(PDE)
Apache Tomcat: Phiên bản cài đặt 8.5.28
Apache Tomcat là một Java Servlet được phát triển bởi ApacheSoftware Foundation (ASF) Tomcat thi hành các ứng dụng Java Servlet vàJSP Từ Sun Microsystems, và cung cấp một máy chủ HTTP cho ngôn ngữJava thuần túy để thực thi các chương trình lệnh viết bằng ngôn ngữ Java
Tomcat không được hiểu nhầm với các máy chủ HTTP Apache.Apache Tomcat cung cấp các công cụ cho việc cấu hình và quản lý, nhưngcũng có thể được cấu hình bởi việc soạn thảo các file cấu hình viết bằngXML
Tomcat gồm các thành phần như: Jasper (một thiết kế lại của bộ công
cụ JSP), Catalina (thiết kế lại của bộ Servlet), và Coyote (một trình kết nốiHTTP)
JDBC
JDBC là chuẩn kết nối CSDL, cung cấp các interface & class nhằm tạo
cơ sở cho các ứng dụng Java tương tác với các hệ quản trị CSDL
Tập hợp các lớp thực thi theo chuẩn JDBC để tương tác với 1 CSDL,
Trang 33+ Định nghĩa Connection URL.
+ Kết nối CSDL bằng đối tượng Connection
+ Tạo dối tượng Statement
+ Thi hành câu truy vấn
1.2 Mô tả khái quát
Mục đích của sản phẩm: Xây dựng lên một website thương
mại, bán điện thoại và phụ kiện
Trang 34 Ràng buộc về dữ liệu đầu vào so với dữ liệu trong CSDL: sản phẩm
mà khách hàng lựa chọn, được nhập mã của sản phẩm đó phải trùngkhớp với sản phẩm trong CSDL
Ràng buộc bởi yêu cầu của khách hàng: khi khách hàng muốn tìmkiếm sản phẩm theo từng tiêu trí, hoặc là muốn thanh toán hóa đơncác sản phẩm đã đặt mua,… thì hệ thống phải đáp ứng được các tiêutrí đó
Ràng buộc với ứng dụng bên ngoài: khi khách hàng muốn gửi phảnhồi với website thì hệ thống sẽ liên kết với hộp thư Gmail
Ràng buộc bởi hiệu suất xử lí về thời gian
Các đặc điểm cơ bản của người sử dụng
Đối với khách hàng:
o Có quyền đăng kí một tài khoản riêng
o Tra cứu được thông tin chi tiết của từng sản phẩm
o Lựa chọn hình thức thanh toán
o Gửi phản hồi tới website
Đối với quản trị viên:
o Có khả năng đăng nhập vào hệ thống, truy xuấtCSDL
o Thêm, xóa, sửa thông tin sản phẩm
o Quản lý tài khoản của người dùng
o Quản lý các đơn đặt hàng
Trang 351.3 Đặc tả yêu cầu
1.3.1 Chức năng của phần mềm
Chức năng phía frontend
1 Xem hàng Người xem có thể xem thông tin chi tiết về các
sản phẩm: tên sản phẩm, hãng sản xuất, giá,tình trạng hàng còn hay đã hết
2 Tìm kiếm sản phẩm Khách hàng nhập thông tin vào thanh tìm kiếm
5 Thống kê truy cập Đếm số lượng người đã ghé thăm website
6 Xem sản phẩm mới Hiển thị các sản phẩm mới nhất cho người
8 Đăng kí, đăng nhập Khi người dùng muốn tạo mới tài khoản hoặc
đăng nhập vào hệ thống để tiến hành đặt hàngthì sẽ chuyển sang giao diện đăng nhập hoặcđăng kí
Mô tả chi tiết các chức năng phía frontend
Xem hàng: Khách hàng truy cập vào địa chỉ của website,
và chọn vào các page trên site để xem thông tin
- Đầu vào : Thông tin khách hàng yêu cầu sản phẩm.
Trang 36- Xử lý: Khách hàng nhấn vào một sản phẩm bất kì, thông tin
khách hàng gửi sẽ được xử lý, hệ thống sẽ tiếp nhận và lấy dữliệu từ cơ sở dữ liệu sau đó gửi trả lại cho khách hàng xem
- Đầu ra: Thông tin về sản phẩm bao gồm tên điện thoại, hãng sản
xuất, giá, tình trạng hàng…
Tìm kiếm sản phẩm: Sẽ tiết kiệm thời gian cho khách
hàng nếu như sử dụng chức năng tìm kiếm sản phẩm trênthanh tìm kiếm của website
- Đầu vào: Tên sản phẩm mà khách hàng muốn tìm kiếm.
- Xử lý: Khách hàng nhập vào yêu cầu về sản phẩm mà họ muốn
tìm kiếm, hệ thống sẽ so sánh các yêu cầu đó với dữ liệu trongDatabase Nếu như có trong kho dữ liệu thì sẽ trả kết quả tìmkiếm về cho người dùng, còn nếu không thấy thì sẽ hiển thịthông báo “Không tìm thấy sản phẩm”
- Đầu ra : Hệ thống gửi lại kết quả tìm kiếm.
Đặt hàng: Khách hàng xem thông tin sản phẩm, và duyệt
sản phẩm Khi khách hàng gửi thông tin đặt hàng thì mặthàng đó sẽ được gửi đến giỏ hàng
- Đầu vào: Thông tin chi tiết về sản phẩm mà khách hàng muốn
mua
- Xử lý: Khi khách hàng chọn sản phẩm muốn mua, nếu là sản
phẩm đầu tiên thì giỏ hàng sẽ khởi tạo số lượng là 1 Còn nếu đã
có sản phẩm đó trong giỏ hàng rồi thì số lượng sẽ tăng dần lên
- Đầu ra: Lưu thông tin mặt hàng đó trong giỏ hàng.
Trang 37+ Khi khách hàng thay đổi số lượng sản phẩm, và cập nhập lạithì số lượng của sản phẩm đó phải được cập nhập lại, giá tiền cũngphải được tính lại.
+ Khi khách hàng chọn xóa sản phẩm thì sản phẩm đó không cònxuất hiện trong giỏ hàng nữa Nếu xóa hết sản phẩm trong giỏ hàngthì phải thông báo không còn sản phẩm nào trong giỏ hàng
+ Nếu chọn mua tiếp thì sẽ chuyển sang trang chủ
- Đầu ra: Thông tin về sản phẩm, số lượng, giá…
Thống kê truy cập: Số lượng khách hàng đã ghé thăm
website
- Đầu vào: Thông tin số lượng người dùng đã vào trang web.
- Xử lý: Mỗi lần người dùng load trang sẽ đếm và tăng số lượng
lên 1 lần Có thể ghi số lượng đếm được ra file txt
- Đầu ra: Số lượng người dùng truy cập website.
Xem sản phẩm mới: Khách hàng có thể xem thông tin
sản phẩm mới nhất của cửa hàng
- Đầu vào: Thông tin của sản phẩm.
- Xử lý: Hệ thống sẽ thống kê những sản phẩm mới nhất được
người quản trị đăng lên, rồi sẽ trả lại kết quả hiển thị cho kháchhàng xem
- Đầu ra: Thông tin của sản phẩm mới nhất.
Xem sản phẩm bán chạy: Hiển thị lên thông tin các sản
phẩm được mua nhiều nhất
- Đầu vào : Thông tin về sản phẩm
- Xử lý: Hệ thống sẽ thống kê những sản phẩm được bán với số
lượng nhiều nhất để trả lại kết quả và hiển thị cho khách hàng
- Đầu ra: Thông tin các sản phẩm bán chạy
Trang 38 Đăng kí, đăng nhập: Khi người dùng muốn tạo mới tài
khoản hoặc đăng nhập vào hệ thống để tiến hành đặt hàngthì sẽ chuyển sang giao diện đăng nhập hoặc đăng kí
- Đầu vào: Khách hàng nhập thông tin cá nhân cần thiết.
- Xử lý:
+ Nếu là đăng kí mới: Nếu nhập đầy đủ thông tin cần thiết mà hệthống yêu cầu, hệ thống sẽ lưu thông tin tài khoản của khách hàngvào kho dữ liệu Và thông báo là đăng kí thành công
+ Nếu là đăng nhập: sau khi khách hàng đăng nhập bằng tàikhoản đã đăng kí trước đó, hệ thống sẽ kiểm tra thông tin tài khoản,nếu tài khoản tồn tại thì thông báo “đăng nhập thành công”, còn nếuchưa từng tồn tại tài khoản đó thì sẽ hiển thị thông báo “đăng nhậpkhông thành công”
- Đầu ra:
+ Nếu là đăng nhập: đăng nhập thành công hoặc không thành công
+ Nếu là đăng kí: đăng kí thành công hoặc không thành công
Chức năng cho quản trị (backend)
1 Quản lý người dùng Thêm mới, sửa, xóa thông tin người dùng
2 Quản lý sản phẩm Quản lý thông tin của sản phẩm về tên,
hãng sản xuất, giá cả, hình ảnh của sảnphẩm, trong đó người quản trị có thể đănghình ảnh, nhập thông tin mô tả, số lượng,giá cả về sản phẩm
3 Quản lý danh mục
sản phẩm
Người quản trị quản lý thông tin danh mụcsản phẩm có chức năng thêm mới, xóa, sửadanh mục
4 Quản lý đơn đặt hàng Người quản trị quản lý về tình trạng đơn
đặt hàng: Chi tiết đơn đặt hàng, tình trạng
đã giao hàng hay chưa giao hàng, thống kê
Trang 39 Chi tiết các chức năng phía backend
Quản lý người dùng: Quản lý thông tin người dùng gồm
tên, tài khoản, mật khẩu, và các chức năng thêm mới, sửa,xóa
- Đầu vào: Thông tin về tên, tài khoản và mật khẩu.
- Xử lý: Quản trị viên sẽ chọn các chức năng thêm, sửa, hoặc xóa
người dùng và yêu cầu đó sẽ được hệ thống chuyển xuốngdatabase thực hiện
- Đầu ra: Thông tin về người dùng.
Quản lý sản phẩm: thông tin của sản phẩm sẽ bao gồm:
Tên, nhà sản xuất, giá, màu sắc, số lượng, kích thước, …Chức năng thêm mới, sửa, xóa thông tin sản phẩm
- Đầu vào: thông tin về : tên, hãng sản xuất, giá, màu sắc, số
lượng, tình trạng, hệ điều hành, pin, bảo hành, cổng kết nối,trọng lượng, kích thước màn hình…
- Xử lý:
+ Chức năng thêm mới: Quản trị viên chọn chức năng thêm sảnphẩm, hệ thống sẽ chuyển sang trang thêm sản phẩm Tại đó, quảntrị viên sẽ nhập toàn bộ thông tin về sản phẩm Sau đó gửi lên hệthống
+ Chức năng sửa thông tin: Quản trị viên chọn chức năng sửathông tin sản phẩm, hệ thống sẽ chuyển sang trang sửa Tại đó, quản
Trang 40trị viên sẽ nhập vào nội dung cần chỉnh sửa Sau đó gửi lên hệthống.
+ Chức năng xóa: Quản trị viên sẽ chọn sản phẩm mà mìnhmuốn xóa Sau đó hệ thống gửi yêu cầu về database, và sản phẩm sẽđược xóa tại database
- Đầu ra: Thông tin sản phẩm.
Quản lý danh mục sản phẩm: Thêm, sửa, xóa danh mục
sản phẩm
- Đầu vào: Thông tin danh mục sản phẩm.
- Xử lý: Quản trị viên sẽ chọn các chức năng mà mình cần thực
hiện như thêm, sửa, xóa thông tin về danh mục sản phẩm Và cậpnhật lại trong database
- Đầu ra: Thông tin sản phẩm.
Quản lý đơn đặt hàng: Người quản trị quản lý về tình
trạng đơn đặt hàng: Chi tiết đơn đặt hàng, tình trạng đãgiao hàng hay chưa giao hàng, thống kê đơn đặt hàng củakhách
- Đầu vào: Đơn hàng gồm các thông tin: Tên khách hàng, thời
gian đặt hàng, địa chỉ nơi nhận, tình trạng đơn hàng
- Xử lý: Hệ thống lấy thông tin từ cơ sở dữ liệu rồi hiển thị lên
trang đơn đặt hàng
+ Nếu chọn xem chi tiết thì sẽ chuyển sang trang chi tiết đơn đặthàng
+ Nếu hủy đơn h
àng thì hệ thống sẽ hủy thông tin đơn hàng đó tại database
- Đầu ra: Giá trị đơn hàng, Tên khách hàng, Tình trạng đơn hàng.
Thông tin chi tiết đơn hàng: Hiển thị thông tin của đơn
đặt hàng bao gồm: thông tin của khách hàng, thông tin các