UBND TỈNH QUẢNG NAM TRƢỜNG ĐẠI HỌC QUẢNG NAM KHOA: CÔNG NGHỆ THÔNG TIN ----- ----- VÕ VĂN HIỆP TÌM HIỂU SPRING MVC VÀ ỨNG DỤNG ĐỂ XÂY DỤNG WEBSITE BÁN HÀNG ĐIỆN TỬ DÂN DỤNG KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC Quảng Nam, tháng 04 năm 2019 UBND TỈNH QUẢNG NAM TRƢỜNG ĐẠI HỌC QUẢNG NAM KHOA: CÔNG NGHỆ THÔNG TIN ----- ----- KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC TÌM HIỂU SPRING MVC V À ỨNG DỤNG ĐỂ XÂY DỤNG WEBSITE BÁN HÀNG ĐIỆN TỬ DÂN DỤNG SINH VIÊN THỰC HIỆN VÕ VĂN HIỆP MSSV: 2115031014 CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN KHÓA 2015 – 2019 CÁN BỘ HƢỚNG DẪN TH S NGUYỄN THỊ MINH CHÂU Quảng Nam, tháng 04 năm 2 019 L Ờ I C ẢM ƠN L ời đầ u tiên, em xin g ở i l ờ i c ảm ơn chân thành đến giáo viên hƣớ ng d ẫ n Th s Nguy ễ n Th ị Minh Châu Trong su ố t th ờ i gian h ọc và làm đồ án t ố t nghi ệp, cô đã dành r ấ t nhi ề u th ời gian quý báu để b ận tình hƣớ ng d ẫn, định hƣớ ng cho em trong vi ệ c nghiên c ứ u và th ự c hi ện đề tài Trên th ự c t ế không có thành công nào mà không g ắ n li ề n v ớ i s ự h ỗ tr ợ , giúp đỡ dù ít hay nhi ề u, dù tr ự c ti ế p hay gián ti ế p t ừ ngƣờ i khác Th ậ t v ậ y! Trong su ố t th ờ i gian th ự c hi ện đề tài khóa lu ậ n c ủ a mình, tôi luôn nh ận đƣợ c s ự quan tâm hƣớ ng d ẫ n, ch ỉ b ả o t ậ n tình c ủ a cô giáo, Th S Nguy ễ n Th ị Minh Châu để có th ể hoàn thành t ố t báo cáo th ự c này Tôi xin g ửi đế n cô m ộ t l ờ i c ảm ơn chân thành và sâu s ắ c nh ấ t! Tôi cũng xin chân thành cảm ơn quý thầ y, cô khoa Công ngh ệ thông tin, trƣờ ng Đạ i h ọ c Qu ảng Nam đã tậ n tình truy ền đạ t ki ế n th ứ c cho tôi trong su ố t b ố n năm họ c t ại trƣờ ng V ớ i v ố n ki ế n th ức đƣợ c ti ế p thu trong quá trình h ọ c t ậ p không ch ỉ là n ề n t ả ng cho quá trình nghiên c ứ u khóa lu ậ n này mà còn là hành trang quý báu để tôi bƣớ c vào đờ i m ộ t cách v ữ ng ch ắ c và t ự tin Tôi cũng thầ m bi ết ơn sự ủ ng h ộ c ủa gia đình, bạ n bè và nh ững ngƣờ i thân yêu luôn là ch ỗ d ự a tinh th ầ n v ữ ng ch ắ c cho tôi Và tôi cũng xin chân thành cảm ơn quý thầ y cô c ủa trƣờng Đạ i h ọ c Qu ả ng Nam đã tạ o nh ững điề u ki ệ n thu ậ n l ợ i trong quá trình rèn luy ệ n và h ọ c t ậ p t ạ i trƣờ ng 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 tránh kh ỏ i nh ữ ng sai sót Vì v ậ y em mong quý th ầ y, cô thông c ả m và góp ý để em có th ể hoàn thi ện đề tài Nh ữ ng l ờ i góp ý đó giúp em có thể tránh đƣợ c nh ữ ng sai l ầ m sau này Cu ố i cùng, tôi xin kính chúc quý th ầy, cô cùng gia đình dồ i dào s ứ c kh ỏ e và thành công trong s ự nghi ệ p tr ồng ngƣờ i cao quý Em xin chân thành c ảm ơn! Tam K ỳ , ngày 19 tháng 4 năm 2019 Sinh viên th ự c hi ệ n Võ Văn Hiệ p M Ụ C L Ụ C LỜI CẢM ƠN 1 PHẦN 1 MỞ ĐẦU 1 1 1 Lý do chọn đề tài 1 1 2 Mục tiêu của đề tài 2 1 3 Đối tƣợng và phạm vi nghiên cứu 2 1 4 Phƣơng pháp nghiên cứu 2 1 5 Cấu trúc đề tài 2 PHẦN 2 NỘI DUNG NGHIÊN CỨU 3 CHƢƠNG 1: CƠ SỞ LÝ THUYẾT VÀ NỀN TẢNG ĐỂ XÂY DỤNG WEBSITE 3 1 1 Tổng quan về thƣơng mại điện tử 3 1 1 1 Khái niệm thương mại điện tử (TMĐT) 3 1 1 2 Lợi ích của việc sử dụng thương mại điện tử 3 1 2 Tổng quan về ngôn ngữ java 4 1 2 1 Nguồn gốc của ngôn ngữ java 4 1 2 2 Đặc điểm của ngôn ngữ java 4 1 2 3 Ưu điểm ngôn ngữ java 5 1 2 4 Hoạt động của một website viết bằng java 6 1 3 Tổng quan về SQLServer và Tomcat 6 1 3 1 Tổng quan về SQLServer 6 1 3 2 Các thành phần cơ bản trong SQL Server 7 1 3 3 Giới thiệu Tomcat 9 1 4 Mô tả hệ thống bán hàng điện tử dân dụng 9 CHƢƠNG 2: TÌM HIỂU VỀ SPRING MVC 12 2 1 Spring Framework 12 2 1 1 Giới thiệu 12 2 1 2 Các module chính 12 2 1 3 Lý do sử dụng Spring 14 2 2 Spring MVC 14 2 2 1 Mô hình MVC 14 2 3 Ƣu điểm của spring mvc 15 2 4 Một số thành phần liên quan 15 2 4 1 Inversion of Control Container (IoC container) 15 2 4 2 Bean 16 2 4 3 Dependency Injection (DI) 16 2 4 4 Setter Injection 16 2 4 5 Constuctor injection 17 2 4 6 Application Context 17 2 4 7 Cơ chế xử lý Request -Respone 18 2 4 8 Giải thích sơ đồ luồng dữ liệu 18 2 4 9 Configuring DispatcherServlet 18 2 4 10 Configuring a context loader 19 2 4 11 Building the controller 20 2 4 12 Introducing ModelAndView 20 2 4 13 Configuring the controller bean 21 2 4 14 Truy xuất dữ liệu trong Spring MVC 21 CHƢƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 22 3 1 Xác định Actor và vai trò của Actor (trong hệ thống) 22 3 2 Sơ đồ Use Case 22 3 3 Biểu đồ tuần tự 29 3 3 1 Biểu đồ tuần tự “đăng nhập” 29 Biểu đồ tuần tự “quản lý hàng hóa” 30 3 3 2 Biểu đồ tuần tự “Mua bán hàng hóa” 30 3 3 3 Biểu đồ “Quản lý nhân viên” 31 3 3 4 Biểu đồ tuần tự báo cáo thống kê 31 3 3 5 Biểu đồ tuần tự “Thanh toán đơn hàng” 32 3 3 6 Biểu đồ tuần tự “Quản lý khách hàng” 32 3 4 Sơ đồ hoạt động 33 3 4 1 Đặc tả sơ đồ hoạt động đăng nhập 33 3 4 2 Đặc tả sơ đồ hoạt động đăng ký 33 3 4 3 Đặc tả sơ đồ hoạt động đặt hàng 34 3 4 4 Đặc tả sơ đồ hoạt động tìm kiếm 35 3 4 5 Đặc tả sơ đồ hoạt động quản lý thêm mới của admin 35 3 4 6 Đặc tả sơ đồ hoạt động quản lý xóa của admin 36 3 4 7 Đặc tả sơ đồ hoạt động quản lý sửa của admin 37 3 5 Đặc tả cơ sở dữ liệu 37 3 5 1 Sơ đồ lớp 38 3 5 2 Thiết kế cơ sở dữ liệu 39 CHƢƠNG 4: DEMO VÀ HƢỚNG DẪN CÀI ĐẶT CHƢƠNG TRÌNH 44 4 1 Cài đặt chƣơng trình 44 4 2 Giới thiệu trang web 44 4 2 1 Phần dành cho ngƣời sử dụng 44 4 2 2 Phần dành cho nhà quản trị - Administration Tool 57 PHẦN 3 KẾT LUẬN VÀ KIẾN NGHỊ 63 Phần 4 TÀI LIỆU THAM KHẢO 64 DANH MỤC HÌNH ẢNH Hình 1: Tomcat 9 Hình 2: Mô hình MVC 14 Hình 3: Sơ đồ Use Case 22 Hình 4: Biểu đồ tuần tự “đăng nhập” 29 Hình 5: Biểu đồ tuần tự “quản lý hàng hóa” 30 Hình 6: Biểu đồ tuần tự mua bán hàng hóa 30 Hình 7: Biểu đồ tuần tự quản lý nhân viên 31 Hình 8: Biểu đồ tuần tự báo cáo thống kê 31 Hình 9: Biểu đồ tuần tự thanh toán đơn hàng 32 Hình 10: Biểu đồ tuần tự quản lý khách hàng 32 Hình 11: Sơ đồ hoạt động đăng nhập 33 Hình 12: Sơ đồ hoạt động đăng ký 33 Hình 13: Sơ đồ hoạt động đặt hàng 34 Hình 14: Sơ đồ hoạt động tìm kiếm 35 Hình 15: Sơ đồ hoạt động thêm mới của admin 35 Hình 16: Sơ đồ hoạt động xóa của admin 36 Hình 17: Sơ đồ hoạt động sửa của admin 37 Hinh 18: Sơ đồ lớp 38 Hình 19: Mô hình quan hệ mức vật lý 43 Hình 20: Trang chủ 44 Hình 21: Header và menu 45 Hình 22: Sản phẩm 45 Hình 23: Footer 46 Hình 24: Xem nhanh Giỏ hàng 46 Hình 25: Tìm kiếm hàng 46 Hình 26: Chi tiết hàng hóa 46 Hình 27: Chi tiết sản phẩm 47 Hình 28: Các mặt hàng lên quan và gởi hàng cho bạn 48 Hình 29: Phóng to ảnh 48 Hình 30: Sản phẩm yêu thích 49 Hình 31: Chọn Hàng 49 Hình 32: Quản lý giỏ hàng 49 Hình 33: Đăng ký thành viên 50 Hình 34: Đăng ký thành viên sai 51 Hình 35: Menu khi chƣa đăng nhập và đã đăng nhập thành công 51 Hình 36: Hộp thoại đăng nhậ p 51 Hình 37:Hộp thoại quên mật khẩu 52 Hình 38:Đặt mua hàng 52 Hình 39: Giỏ hàng 52 Hình 40: Danh sách đơn hàng 53 Hình 41: Đổi mật khẩu 53 Hình 42: Cập nhật hồ sơ 54 Hình 43: Quản lý đơn hàng 54 Hình 44: Thông tin đơn hàng 54 Hình 45: Danh sách các đơn hàng đã mua 55 Hình 46 :Liên hệ 55 Hình 47: Góp ý 56 Hình 48: Login admin 57 Hình 49: Quản lý hàng hóa 58 Hình 50: Danh sách hàng hóa 59 Hình 51:Thống kê 59 Hình 52: Chọn thời gian thống kê 60 Hình 53: Kết quả thống kê 60 Hình 54: Phân quyền 61 Hình 55: quản lý vai trò 62 Hình 56:Phân vai trò 62 Hình 57: Phân quyền sử dụng 62 DANH MỤC CÁC BẢNG Bảng 1: Bảng User 39 Bảng 2: Bảng Use rRoles 39 Bảng 3: Bảng Role 39 Bảng 4: Bảng Permission 39 Bảng 5: Bảng Actio ns 40 Bảng 6: Bảng Customers 40 Bảng 7: Bảng Orders 40 Bảng 8: Bảng OrderDet ails 41 Bảng 9: Bảng Product 42 Bảng 10: Bảng Suppliers 42 Bảng 11: Bảng Cat egories 42 1 PHẦN 1 MỞ ĐẦU 1 1 Lý do chọn đề tài Ngày nay , công nghệ thông tin đã có những bƣớc phát triển mạnh mẽ theo cả chiều rộng và sâu Máy tính điện tử không còn là một thứ phƣơng tiện quý hiếm mà đang ngày càng trở thành một công cụ làm việc và giải trí thông dụng của con ngƣời, không chỉ ở nơi làm việc mà còn ngay cả trong gia đình Đặc biệt là công nghệ thông tin đƣợc áp dụng trên mọi lĩnh vực kinh tế, c hính trị, xã hội Ứng dụng công nghệ thông tin và tin học hóa đƣợc xem là một trong yếu tố mang tính quyết định trong hoạt động của quốc gia, tổ chức và trong cả các cửa hàng Nó đóng vai trò hết sức quan trọng và có thể tạo nên bƣớc đột phá mạnh mẽ Mạng INTERNET là một trong những sản phẩm có giá trị hết sức lớn lao và ngày càng trở nên một công cụ không thể thiếu, là nền tảng để truyền tải, trao đổi thông tin trên toàn cầu Bằng INTERNET, chúng ta đã thực hiện đƣợc những công việc với tốc độ nhanh hơn, chi phí thấp hơn nhiều so với cách thức truyền thống Chính điều này, đã thúc đẩy sự khai sinh và phát triển của thƣơng mại điện tử trên khắp thế giới, làm biến đổi đáng kể bộ mặt văn hóa, nâng cao đời sống con ngƣời Trong hoạt động sản xuất, kinh doanh, thƣơng mại điện tử đã khẳng định đƣợc xúc tiến và thúc đẩy sự phát triển của doanh nghiệp Đối với một cửa hàng, việc quảng bá và giới thiệu sản phẩm đến khách hàng đáp ứng nhu cầu mua sắm ngày càng cao của khách hàng sẽ là cần thiết Hiện nay để xây dựng một Website bán hàng online thì chúng ta có thể sử dụng nhiều Framework khác nhau của nhiều ngôn ngữ Tuy nhiên để xây dựng các website và các ứng dụng web phức tạp, có thể sẽ mất quá nhiều thời gian và rắc rối nếu cứ xây dựng ứng dụng từ đầu, vì thế cần đến một cách tự nhiên hơn để xây dựng sản phẩm Spring MVC ra đời và cung cấp cho các nhà phát triển với một giải pháp thỏa đáng cho điều đó Spring MVC là một cấu trúc dùng để xây dựng chƣơng trình ứng dụng mã nguồn mở dành cho ngôn ngữ lập trình Java MVC là một framework nhẹ Nó có thể đƣợc dùng nhƣ một framework của frameworks vì nó cung cấp hỗ trợ khác nhau fr ameworks nhƣ Struts , Hibernate, Tapestry, EJB, JSF vv … Spring MVC framework đƣợc sử dụng cho phát triển ứng dụng web rất dễ dàng với việc hỗ trợ rất tốt các tính năng web services, json,… M VC mang tính chất 2 chuyên nghiệp trong lập trình web vì nó mang tính logic cao nhƣng đơn giản, phân tách rõ ràng các chức năng cần làm của một ứng dụng, qua đó nhiều ngƣời có thể làm chung dự án, phát hiện và sửa lỗi, dễ nâng cấp tính năng đồng thời khi bảo trì cũng rất dễ dàng Với những lý do trên, nên tôi đã quyết định chọn đề tài “ Tìm hiểu Spring MVC và ứng dụng để xây dụng website bán hàng điện tử dân dụng ” 1 2 Mục tiêu của đề tài - Tìm hiểu spring web mvc Tìm hiểu về java, jsp Tìm hiểu về SQLServer trong java, Tomcat Tìm hiểu hệ thống bán hàng điện tử - Từ những tìm hiểu trên để từ đó xây dựng đƣợc website bán hàng điện tử dân dụng 1 3 Đối tƣợng và phạm vi nghiên cứu Xây dựng trang web ứng dụng bán hàng dân dụng nhƣ tủ lạnh, điện thoại, tivi, máy giặt và một số linh kiện khác… Trong thởi đại Thƣơng mai điện tử phát triển, việc ứng dụng vào hoạt động “Website bán hàng” đã mang lại nhiều ý nghĩa lớn 1 4 Phƣơng pháp nghiên cứu - Phƣơng pháp lý luận : + Tìm hiểu kỹ thuật lập trình, tìm hiểu cách thức hoạt động và các đối tƣợng trong spring mvc thông qua sách, tài liệu Internet - Phƣơng pháp thực tiễn : + Viết ứng dụng xây dựng website bán hàng điện tử dân dụng - Ngoài ra còn sử dụng các phƣơng pháp khác nhƣ : logic, phân tích, tổng hợp, thống kê,… 1 5 Cấu trúc đề tài Nội dung khóa luận gồm có 4 chƣơng: Chƣơng 1: CƠ SỞ LÝ THUYẾT VÀ NỀN TẢNG ĐỂ XÂY DỤNG WEBSITE Chƣơng 2: TÌM HIỂU VỀ SPRING MVC C hƣơng 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG Chƣơng 4: DEMO VÀ HƢỚNG DẪN CÀI ĐẶT CHƢƠNG TRÌNH 3 PHẦN 2 NỘI DUNG NGHIÊN CỨU CHƢƠNG 1: CƠ SỞ LÝ THUYẾT VÀ NỀN TẢNG ĐỂ XÂY DỤNG WEBSITE 1 1 Tổng quan về thƣơng mại điện tử 1 1 1 Khái niệm thương mại điện tử (TMĐT) TMĐT càng đƣợc biết tới nhƣ một phƣơng thức kinh doanh hiệu quả từ khi Internet hình t hành và phát triển Chính vì vậy , nhiều ngƣời hiểu TMĐT theo nghĩa cụ thể hơn là giao dịch thƣơng mại, mua sắm qua Internet và mạng (ví dụ mạng Internet của doanh nghiệp) “Thuật ng ữ Thƣơng mại cần đƣợc diễn giải theo nghĩa rộng để bao quát các vấn đề phát sinh từ mọi quan hệ mang tính chất thƣơng mại dù có hay không có hợp đồng Các quan hệ mang tính thƣơng mại bao gồm các giao dịch sau đây: bất cứ giao dịch nào về thƣơng mại nào về cung cấp hoặc trao đổi hàng hóa hoặc dịch vụ; thỏa thuận phân phối; đại diện hoặc đại lý thƣơng mại, ủy t hác hoa hồng; cho thuê dài hạn; xây dựng các công trình; tƣ vấn; kỹ thuật công trình; đầu tƣ; cấp vốn; ngân hàng; bảo hiểm; thỏa thuận khai thác hoặc tô nhƣợng; liên doanh các hình thức khác về hợp tác công nghiệp hoặc kinh doanh; chuyên chở hàng hóa hay hành khách bằng đƣờng biển, đƣờng không, đƣờng sắt hoặc đƣờng bộ ” Nhƣ vậy, có thể thấy rằng phạm vi của Thƣơng mại điện tử rất rộng, bao quát hầu hết các lĩnh vực hoạt động kinh tế, việc mua bán hàng hóa và dịch vụ chỉ là một trong hàng ngàn lĩnh vực áp dụng của Thƣơng mại điện tử Theo nghĩa hẹp thƣơng mại điện tử chỉ gồm các hoạt động thƣơng mại đƣợc tiến hành trên mạng máy tính mở nhƣ Internet Trên thực tế, chính các hoạt động thƣơng mại thông qua mạng Internet đã làm phát sinh thuật ngữ Thƣơng mại điện tử 1 1 2 Lợi ích của việc sử dụng thương mại điện tử Lợi ích lớn nhất mà TMĐT đem lại chính là sự tiết kiệm chi phí và tạo thuận lợi cho các bên giao dịch Giao dịch bằng phƣơng tiện điện tử nhanh hơn so với giao dịch truyền thống, ví dụ gửi fax hay thƣ điện tử thì nội dung thông tin đến tay ngƣời nhận nhanh hơn gửi thƣ Các giao dịch qua Internet có chi phí rất rẻ, một doanh nghiệp có thể gửi thƣ tiếp thị, chào hàng đến hàng loạt khách hàng chỉ với chi phí giống nhƣ gửi cho một khách hàng Với TMĐT, các bên có thể tiến hành giao dịch khi ở cách xa nhau, giữa thành phố với nông thôn, từ nƣớc này sang nƣớc kia, hay 4 nói cách khác là không bị giới hạn bởi không gian địa lý Điều này cho phép các doanh nghiệp tiết kiệm chi phí đi lại, thời gian gặp mặt trong khi mua bán Với ngƣời tiêu dùng, họ có thể ngồi tại nhà để đặt hàng, mua sắm nhiều loại hàng hóa, dịch vụ thật nhanh chóng Những lợi ích nhƣ trên chỉ có đƣợc với những doanh nghiệp thực sự nhận thức đƣợc giá trị của TMĐT Vì vậy, TMĐT góp phần thúc đẩy sự cạnh tranh giữa các doanh nghiệp để thu đƣợc nhiều lợi ích nhất Điều này đặc biệt quan trọng trong bối cảnh hội nhập kinh tế quốc tế, khi các doanh nghiệp trong nƣớc phải cạnh tranh một cách bình đẳng với các doanh nghiệp nƣớc ngoài 1 2 Tổng quan về ngôn ngữ java 1 2 1 Nguồn gốc của ngôn ngữ java Thập kỷ 90 chứng kiến một sự phát triển nhƣ vũ bão của mạng Internet, kèm theo đó là vô vàn các ứng dụng trên các môi t rƣờng, hệ điều hành (OS) và các hệ xử lý (CPU) khác nhau Tuy nhiên có một điểm hạn chế lớn là ngƣời lập trình phải rất vất vả khi chuyển đổi các ứng dụng của mình để các hệ thống khác có thể sử dụng đƣợc Ngày 23/5/1995, công ty máy tính Sun Microsystems đã giới thiệu một công cụ lập trình mới - ngôn ngữ Java - nhằm khắc phục những khó khăn đó Đặc điểm nổi bật nhất của Java là nó không phụ thuộc vào hệ điều hành và bộ xử lý Điều này cho phép một ứng dụng viết bằng Java có thể đƣợc thực hiện trên bất kỳ h ệ điều hành và hệ xử lý nào có hỗ trợ Java Do vậy, ngƣời lập trình chỉ cần viết ứng dụng bằng Java đúng một lần, sau đó có thể sử dụng ứng dụng này trên các hệ điều hành khác nhau nhƣ Windows95, WindowsNT, Mac OS, Unix,… theo phƣơng châm: “viết một lần, s ử dụng ở bất kỳ đâu” 1 2 2 Đặc điểm của ngôn ngữ java Java là ngôn ngữ lập trình hƣớng đối tƣợng nên nó cũng có 4 đặc điểm chung của các ngôn ngữ hƣớng đối tƣợng : Tính trừu tƣợng (Abstraction): là tiến trình xác định và nhóm các thuộc tính, các hành động liên quan đến một thực thể đặc thù, xét trong mối tƣơng quan với ứng dụng đang phát triển Tính đa hình (Polymorphism): cho phép một phƣơng thức có các tác động khác nhau trên nhiều loại đối tƣợng khác nhau Với tính đa hình, nếu cùng một phƣơng 5 thức ứng dụng cho các đối tƣợng thuộc các lớp khác nhau thì nó đƣa đến những kết quả khác nhau Bản chất của sự việc chính là phƣơng thức này bao gồm cùng một số lƣợng các tham số Tính kế thừa (Inheritance): Điều này cho phép các đối tƣợng chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩa lại Tính đóng gói (Encapsulation): là tiến trình che giấu việc thực thi những chi tiết của một đối tƣợng đối với ngƣời sử dụng đối tƣợng ấy Bên cạnh đó Java còn có một số đặc tính khác nhƣ: Có thể định nghĩa một cách chính xác hơn về Java: “là ngôn ngữ lập trình hƣớng đối tƣợng, đƣợc thiết kế độc lập với hệ điều hành, cho phép ngƣời lập trình viết chƣơng trình một lần và có thể sử dụng tại bất kỳ đâu” Không chỉ giới thiệu ngôn ngữ lập trình, Sun Microsystems còn đƣa ra hàng loạt công cụ hỗ trợ ngƣời lập trình phát triển các ứng dụng bằng Java, nhƣ Java Developer Kit, JavaBeans, HotJava… Ngôn ngữ Java có cú pháp rất giống với ngô n ngữ C/C ++ (là một ngôn ngữ rất mạnh đƣợc dùng phổ biến hiện nay), tuy nhiên nó đã đƣợc thay đổi khá nhiều để đáp ứng khả năng độc lập với hệ điều hành Nền tảng của ngôn ngữ Java là các class Các class đóng vai trò nhƣ những đối tƣợng, ngƣời lập trình khi xây dựng ứng dụng sẽ sử dụng một số class chuẩn của hệ thống, đồng thời có thể tự mình xây dựng class khác đáp ứng yêu cầu công việc Java là ngôn ngữ dễ học, nó lƣợc bớt những lệnh thừa và rƣờm rà của C/C ++ để ngƣời lập trình chú trọng vào việc viết c hƣơng trình Đồng thời, nó còn hạn chế ngƣời lập trình không can thiệp quá sâu vào hệ thống Hiện nay Java đƣợc ứng dụng rất rộng rãi, chủ yếu là các ứng dụng đƣợc viết trên Internet nhằm khai thác tối đa khả nă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 đơn lẻ Hiện tại các ứng dụng viết bằng Java khi thực hiện còn chậm hơn so với các ứng dụng đƣợc xây dựng thông thƣờng, tuy nhiên hầu hết các nhà phát triển phần mềm đều cho rằng tốc độ sẽ đƣợc cải thiện và Java sẽ là ngôn ngữ lậ p trình của tƣơng lai 1 2 3 Ưu điểm ngôn ngữ java Đơn giản, hƣớng đối tƣợng và quen thuộc - Mạnh mẽ và an toàn 6 - Kiến trúc trung lập và di động - Thực thi với hiệu suất cao - Dịch ra bytecode, phân luồng và năng động - Dễ sử dụng cho ngƣời dùng Java 1 2 4 H oạt động của một website viết bằng java Chƣơng trình xây dựng bằng Java đƣợc chia làm các loại sau: - Java Applet là các đối tƣợng đƣợc thực hiện trên trình duyệt Web Khi thực hiện trên các trình duyệt Web, Java Applet cũng tạo ra các hiệu ứng nhƣ một ứng dụng bình thƣờng, tuy nhiên các thông tin cho phép Java Applet thực hiện lại đƣợc đƣa từ các trang Web Ngƣời sử dụng dùng trình duyệt Web (browser) để xem các trang thông tin, trong đó có nhúng đối tƣợng Java Applet Khi trình duyệt Web truy cập đến tran g thông tin này, Java Applet sẽ đƣợc tải về trình duyệt Web và đƣợc thực hiện thông qua một cơ cấu gọi là Java Virtual Machine (JVM) đã đƣợc cài sẵn trong trình duyệt - Java Application (Java App) là những ứng dụng độc lập, tƣơng tự nhƣ những chƣơng trình có đuôi EXE hay đuôi COM thông thƣờng Việc thực hiện Java App đơn giản hơn Java Applet vì chúng không cần phải thông qua trình duyệt Web - Java Virtual Machine (JVM) đóng vai trò rất quan trọng để các ứng dụng Java có thể thực hiện đƣợc Nó hoạt động nhƣ một máy tính ảo, cũng có bộ lệnh, cấu trúc dữ liệu, bộ nhớ,… Khi các ứng dụng Java (sau khi dịch, các ứng dụng viết bằng Java sẽ có phần mở rộng là class) thực hiện, JVM tiến hành phân tích mã trong class đó thành bộ lệnh của JVM rồi thực hiện giống nh ƣ máy tính PC thao tác với các ứng dụng thông thƣờng Bởi vậy, các class sau khi dịch có thể đƣợc thực hiện trên bất kỳ hệ điều hành nào thông qua máy tính ảo JVM Hiện tại, JVM đƣợc xây dựng cho hầu hết các hệ điều hành và hệ xử lý hiện có, điều này có ng hĩa là các ứng dụng viết bằng Java có đầy đủ điều kiện để phát triển 1 3 Tổng quan về SQLServer và Tomcat 1 3 1 Tổng quan về SQLServer SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ (Relational Dat abase Management System (RDBMS)) sử dụng câu lệnh SQL ( Transact - SQL) để trao đổi 7 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 user SQL Server có thể kết hợp “ăn ý” với các server khác nhƣ Microsoft Internet Information Server (IIS), E - Commerce Server, Proxy Server… 1 3 2 Các thành phần cơ bản trong SQL Server SQL Server đƣợc cấu tạo bởi nhiều thành phần nhƣ Database Engine, Reporting Services, Notification Services, Integration Services, Full Text Search Service… Các thành phần này khi phối hợp với nhau tạo thành một giải pháp hoàn chỉ nh giúp cho việc lƣu trữ và phân tích dữ liệu một cách dễ dàng Database Engine - Cốt lõi của SQL Server: Ðây là một engine có khả năng chứa data ở các quy mô khác nhau dƣới dạng table và support tất cả các kiểu kết nối (data connection) thông dụng của Mi crosoft nhƣ : ActiveX D ata Objects (ADO), OLE DB, and Open Database Connectivity (ODBC) Ngoài ra nó còn có khả năng tự điều chỉnh (tune up) ví dụ nhƣ sử dụng thêm các tài nguyên (resource) của máy khi cần và trả lại tài nguyên cho hệ điều hành khi một user log off Replication - Cơ chế tạo bản sao (Replica): Giả sử ta có một database dùng để chứa dữ liệu đƣợc các ứng dụng thƣờng xuyên cập nhật Một ngày đẹp trời bạn muốn có một cái database giống y hệt nhƣ thế trên một server khác để chạy báo cáo (report da tabase) (cách làm này thƣờng dùng để tránh ảnh hƣởng đến performance của server chính) Vấn đề là report server của ta cũng cần phải đƣợc cập nhật thƣờng xuyên để đảm bảo tính chính xác của các báo cáo Ta không thể dùng cơ chế back up and restore trong tr ƣờng hợp này Thế thì ta phải làm sao? Lúc đó cơ chế replication của SQL Server sẽ đƣợc sử dụng để bảo đảm cho dữ liệu ở 2 databa se đƣợc đồng bộ (synchronized) Integration Services (DTS) 8 - Integration Services là một tập hợp các công cụ đồ họa và các đối tƣợng lập trình cho việc di chuyển, sao chép và chuyển đổi dữ liệu Nếu ta làm việc trong một công ty lớn trong đó data đƣợc chứa trong nhiều nơi khác nhau và ở các dạng khác nhau cụ thể nhƣ chứa trong Oracle, DB2 (của IBM), SQL Server, Microsoft Access… Ta chắc chắn sẽ có nhu cầu di chuyển data giữa các server này (migrate hay transfer) và không chỉ di chuyển bạn còn muốn định dạng (format) nó trƣớc khi lƣu vào database khác, khi đó bạn sẽ thấy DTS giúp bạn giải quyết công việc trên dễ dàng Analysis Serv ices - Một dịch vụ phân tích dữ liệu rất hay của Microsoft Dữ liệu (Data) chứa trong database sẽ chẳng có ý nghĩa gì nhiều nếu nhƣ bạn không thể lấy đƣợc những thông tin (Information) bổ ích từ đó Do đó Microsoft cung cấp cho bạn một công cụ rất mạnh giúp cho việc phân tích dữ liệu trở nên dễ dàng và hiệu quả bằng cách dùng khái niệm hình khối nhiều chiều (multi - dimension cubes) và kỹ thuật “khai phá dữ liệu” (data mining) Notification Services Dịch vụ thông báo Notification Services là nền tảng cho sự ph át triển và triển khai các ứng dụng tạo và gửi thông báo Notification Services có thể gửi thông báo theo đồng thời đến hàng ngàn ngƣời đăng ký sử dụng nhiều loại thiết bị khác nhau Reporting Services Reporting Services bao gồm các thành phần server và c lient cho việc tạo, quản lý và triển khai các báo cáo Reporting Services cũng là nền tảng cho việc phát triển và xây dựng các ứng dụng báo cáo Full Text Search Service Dịch vụ SQL Server Full Text Search là một dịch vụ đặc biệt cho đánh chỉ mục và truy v ấn cho dữ liệu văn bản không cấu trúc đƣợc lƣu trữ trong các CSDL SQL Server Đánh chỉ mục với Full Text Search có thể dduwowcj tạo trên bất kỳ cột dựa trên dữ liệu văn bản Nó sẽ rất hiệu quả cho việc tìm các sử dụng toán tử LIKE trong SQL với trƣờng hợp tìm văn bản Service Broker Đƣợc sử dụng bên trong mỗi Instance, là môi trƣờng lập trình cho việc các ứng dụng nhảy qua các Instance Service Broker giao tiếp qua giao thức TCP/IP và cho 9 phép các component khác nhau có thể đƣợc đồng bộ cùng nhau theo hƣớn g trao đổi các message Service Broker chạy nhƣ một phần của bộ máy cơ sở dữ liệu, cung cấp một nền tảng truyền message tin cậy và theo hàng đợi cho các ứng dụng SQL Server 1 3 3 Giới thiệu T omcat Tomcat là một ứng dụng chủ (Application Server), là một phần mềm mã nguồn mở đƣợc cung cấp bởi Apache Tomcat nổi tiếng vì gọn nhẹ nó thƣờng đƣợc sử dụng trong quá trình phát triển một ứng Web trên nền tảng Java Servlet Hình 1: Tomcat Bạn cũng có thể sử dụng Tomcat để triển khai các ứng dụng Java Web trên thực tế và hoàn toàn có thể tin tƣởng vào sự ổn định của nó 1 4 Mô tả hệ thống bán hàng điện tử dân dụng Đây là một website nhằm bán và giới thiệu rộng rãi các mặt hàng điện tử dân dụng đến ngƣời tiêu dùng với các chi tiết mặt hàng cũng nhƣ giá cả một cách chính xác nhất Website nhằm: - Về hoạt động khách hàng: Khi khách đã quyết định tham gia vào hoạt động mua hàng của cửa hàng thì mỗi khách hàng đƣợc cung cấp một giỏ hàng tƣơng ứng Khách hàng tự do lựa chọn loại hàng hóa nào mà mình thích vào giỏ hàng của mình + Tìm kiếm và lựa chọn từ xa sản phẩm mình cần: Khách hàng khi truy cập vào trang web thƣơng mại thƣờng tìm kiếm các mặt hàng hay các sản phẩm mà họ cần và muốn mua Nhƣng đôi khi cũng có nhiều khách hàng vào website này mà không có ý định mua hay không biết mua gì thì yêu cầu đặt ra cho hệ thống là làm thế nào để khách hàng dễ bị bắt mắt và hấp dẫn với sản phẩm đó, đồng thời có thể tìm kiếm nhanh và hiệu quả các sản phẩm mà họ cần tìm Vì vậy, thông qua chức năng tìm kiếm của website thì khách hàng có thể tìm đƣợc nhanh chóng những mặt 10 hàng mà mình muốn mua một cách nhanh nhất Khi đã chọn đƣợc mặt hàng ƣng ý thì khách hàng có thể thêm hàng vào giỏ hàng + Đặt mua hàng: Sau khi khách hàng lựa chọn xong những mặt hàng cần đặt mua thì đơn đặt hàng sẽ đƣợc hiển thị, khách hàng có thể cập nhật lại mặt hàng có trong giỏ hàng nhƣ thay đổi số lƣợng và có thể xóa bớt đi mặt hàng trong giỏ hàng mà m ình không muốn mua nữa +Trƣờng hợp khách hàng chƣa đăng ký tài khoản: Khi chƣa đăng ký tài khoản thì khách hàng vẫn có thể lựa chọn những mặt hàng mình yêu thích thêm vào trong giỏ hàng Khi đặt hàng thì sẽ đƣợc hiển thị thông báo vui lòng đăng nhập và chọn hàng + Trƣờng hợp Khách hàng đã đăng ký tài khoản thì có thể: Mua hàng: Khi tiến hành đặt hàng thì khách hàng cần nhập những thông tin cần thiết để cửa hàng có thể giao hàng tận nơi cho khách: Tên - Địa chỉ - Số điện thoại - Ngày nhận hàng… Theo dõi đơn hàng của mình Gửi ý kiến đóng góp - Về hoạt động của nhà quản trị : + Trƣớc hết để vào website quản lý thì nhà quản trị phải đăng nhập vào hệ thống + Nhà quản lý có một username và một password để truy cập vào hệ thống Khi đã đăng nhập thành công thì nhà quản trị có thể quản lý và làm chủ mọi hoạt động của hệ thống trang web nhằm thực hiện các chức năng sau: + Quản lý các sản phẩm một cách dễ dàng: Nhà quản trị có thể Thêm, xoá, sửa thông tin sản phẩm, nhà cung cấp, hóa đơn, khách hàng vào cơ sở dữ liệu + Nhà quản trị có thể kiểm kê hàng tồn kho để có thể biết đƣợc mặt hàng nào đang bán chạy hoặc đang còn tồn kho + Thống kê doanh số bán hàng: Nhà quản trị có thể thống kê doanh số bán hàng: o Theo từng mặt hàng o Theo từng loại hàng o Theo từng hãng o Theo từng khách hàng 11 o Theo từng năm o Theo từng quý o Theo từng tháng + Phân quyền ngƣời dùng: admin đƣợc toàn quyền còn user sẽ đƣợc phân chi tiết cho từng trang + Kiểm tra và xử lý đơn đặt hàng + Quản lý thông tin khách hàng 12 CHƢƠNG 2: TÌM HIỂU VỀ SPRING MV C 2 1 Spring Framework 2 1 1 Giới thiệu Spring Framework, hay ngắn hơn là Spring, là một framework mã nguồn mở đƣợc viết bằng Java Nó đƣợc xem nhƣ là một giải pháp kiến trúc tốt nhất của Java EE hiện nay Theo thiết kế, bộ khung hình này giải phóng lập trình viên dùng Java, cho phép họ nhiều quyền tự do hơn Đồng thời cung cấp một giải pháp tiện lợi, đầy đủ dẫn chứng bằng tài liệu, dễ dàng sử dụng, phù hợp với những thực hành thông dụng trong công nghệ phần mềm 2 1 2 Các module chính Spring đóng vai trò là tầng busine ss 2 1 2 1 Core Container Core package là phần cơ bản nhất của framework, cung cấp những đặc tính IoC (Inversion of Control: Khung chứa đảo ngƣợc khống chế) và Dependency Injection Cài đặt factory pattern cho phép bạn móc nối sự phụ thuộc giữa các đối tƣợng tron g file cấu hình 2 1 2 2 Spring Context/Application Context Phía trên của Core package là Context package - cung cấp cách để truy cập đối tƣợng Context package kết thừa các đặc tính từ bean package và thêm vào chức năng đa ngôn ngữ (I18N), truyền sự kiện, resourc e-loading, 2 1 2 3 Spring AOP (Aspect Oriented programming) Spring AOP module tích hợp chức năng lập trình hƣớng khía cạnh vào Spring framework thông qua cấu hình của nó Spring AOP module cung cấp các dịch vụ quản lý giao dịch cho các đối tƣợng trong bất kỳ ứng dụng nào sử dụng Spring Với 3 Spring AOP chúng ta có thể tích hợp quản lý giao dịch (declarative transaction management) vào trong ứng dụng mà không cần dựa vào EJB component Spring AOP module cũng đƣa lập trình metadata vào trong Spring Sử dụng cái n ày chúng 13 ta có thể thêm annotation (chú thích) vào source code để hƣớng dẫn Spring và làm thế nào để liên hệ với aspect (khía cạnh khác) 2 1 2 4 Spring DAO (hay Repository) DAO package cung cấp cho tầng JDBC, bỏ bớt những coding dài dòng của JDBC và chuyển đổi mã lỗi đƣợc xác định bởi nhà cung cấp cơ cở dữ liệu ( database vendor) JDBC package cung cấp cách lập trình tốt nhƣ declarative transaction management (quản lý giao dịch khai báo) Tầng JDBC và DAO đƣa ra một cây phân cấp exception để quản lý kết nối đến da tabase, điều khiển exception và thông báo lỗi đƣợc ném bởi vendor của database Tầng exception đơn giản điều khiển lỗi và giảm khối lƣợng code mà chúng ta cần viết nhƣ mở và đóng kết nối Module này cũng cung cấp các dịch vụ quản lý giao dịch cho các đối tƣợng trong ứng dụng Spring 2 1 2 5 Spring ORM ORM package cung cấp tầng tích hợp với object -relational mapping API bao gồm: JDO, Hibernate, iBatis Sử dụng ORM package bạn có thể sử dụng tất cả các object -relational mapping đó kết hợp với tất cả các đặc tính của Spring nhƣ declarative transaction management 2 1 2 6 Spring Web Module Spring Web package cung cấp đặc tính của web nhƣ: chức năng file -upload, khởi tạo IoC container sử dụng trình lắng nghe serlvet và web -oriented application context (ứng dụng ngữ cảnh) Nằm trên application context module, cung cấp context cho các ứng dụng web Spring cũng hỗ trợ tích hợp với Struts, JSF và Webwork Web module cũng làm giảm bớt các 4 công việc điều khiển nhiều request và gắn các tham số của request vào các đối tƣợng domain 2 1 2 7 Spring MVC Framework Spring Framework là một ứng dụng mã nguồn mở phổ biến cho Java EE phát triển dễ dàng hơn Nó bao gồm một container, một framework cho các thành phần quản lý, và một bộ các snap - in dịch vụ cho các giao diện ngƣời dùn g web, giao dịch,… Một phần của Spring Framework là Spring Web MVC, một mô hình MVC mở rộng để tạo các ứng dụng web 14 MVC Framework thì cài đặt đầy đủ đặc tính của MVC pattern để xây dựng các ứng dụng Web MVC framework thì cấu hình thông qua giao diện và chứa đƣợc một số kỹ thuật view bao gồm: JSP, Velocity, Tiles và ge neration of PDF và Excel file Spring MVC framework cung cấp sự phân biệt rõ ràng giữa domain model và web form 2 1 3 Lý do sử dụng Spring Tất cả các framework đã đƣợc tích hợp rất tốt vào Spring Hoạt động rất tốt khi áp dụng theo kiến trúc MVC Sử dụng cơ chế plug -in Kết hợp rất tốt với các O/R (object - relational) Mapping frameworks nhƣ là Hibernate Dễ Testing ứng dụng Ít phức tạp hơn so với các framework khác Cộng đồng ngƣời sử dụng rất nhiều, nhiều sách mới đƣợc xuất bản 2 2 Spring MVC 2 2 1 Mô hình MVC Hình 2: Mô hình MVC 2 2 1 1 Model (Mô hình) Mô hình gồm các lớp java có nhiệm vụ: - Biểu diễn data và cho phép truy cập tới để get và set data trong (JAVABEAN), t hƣờng thì phần layer này mô phỏng 1 cách đầy đủ đối tƣợng từ thế giới thực - Nhận các yêu cầu từ khung nhìn - Thi hành các yêu cầu đó (tính toán, kết nối CSDL …) - Trả về các giá trị tính toán theo yêu cầu của Controller 15 2 2 1 2 View (Khung nhìn) Bao gồm các mã tƣơng tự nhƣ JSP, HTML, CSS, XML, Javascript, JSON… để hiển thị giao diện ngƣời dùng, các dữ liệu trả về từ Model thông qua Controller… 2 2 1 3 Controller (Bộ điều khiển) Đồng bộ hoá giữa Khung nhìn và Mô hình Tức là với một trang JSP này thì sẽ tƣơng ứng với lớp java nào để xử lý nó và ngƣợc lại, kết quả sẽ trả về trang jsp nào Nó đóng vai trò điều tiết giữa View và Model Nhƣ vậy, chúng ta có thể tách biệt đƣợc các mã java ra khỏi mã html Do vậy, nó đã giải quyết đƣợc các khó khăn đã nêu ra trong Mô hình 1 Ngƣời thiết kế giao diện và ngƣời lập trình java có thể mang tính chất độc lập tƣơng đối Việc debug hay bảo trì sẽ dễ dàng hơn, việc thay đổi các theme của trang web cũng dễ 2 3 Ƣu điểm của sprin g mvc Framework Spring nhƣ thùng chứa nhẹ và hỗ trợ nhiều framework và các thƣ viện Nó cho phép các nhà phát triển trộn và kết hợp nhiều framework khi phát triển và triển khai các ứng dụng Các Spring MVC có những lợi thế từ Spring framework và cung cấp một lần tốt nhất cho framework và hiệu quả cho sự phát triển của các ứng dụng web Các MVC Spring là một framework phát triển web dựa trên các mẫu thiết kế MVC (Model View Controller) Các tính năng của framework Spring MVC là Pluggable công nghệ View và Injection dịch vụ vào điều khiển 2 4 M ột số thành phần liên quan 2 4 1 Inversion of Control Container (IoC container) Hai gói: org springframework beans và org spring framework context cung cấp IoC Container cho Spring framework Giao tiếp BeanFactory cung cấp kỹ thuật cấu hình nâng cao, có khả năng quản lý các đối tƣợng Giao tiếp ApplicationContext kế thừa từ BeanFactory và thêm một vài chức năng khác nhƣ tích hợp với đặc tính Spring AOP, truyền sự kiện, application context nhƣ WebApplicationContext sử dụng trong ứng dụng web 16 Hiệu chỉnh các thành phần ( components) của chƣơng trình và quản lý vòng đời (lifecycle) của các đối tƣợng Java 2 4 2 Bean Các đối tƣợng trong ứng dụng đƣợc quản lý bởi IoC container đƣợc gọi là các bean Một bean thì đơn giản là một đối tƣợng đƣợc khởi tạo, phân phát và đƣợc quản lý bởi IoC container Sự phụ thuộc giữa chúng đƣợc phản ánh trong configuration metadata đƣợc sử dụng bởi container Giao tiếp org springframework beans factory BeanFactory là IoC container chịu trách nhiệm chứa, khởi tạo, quản lý và móc nối sự phụ thuộc giữa các bean Một cài đặt (kế thừa) của BeanFactory là XmlBeanFactory - nhận XML configuration metadata và sử dụng nó để cấu hình cho ứng dụng Configuration metadata có định dạng XML (hoặc properties), đƣợc sử dụng để viết các bean definitions cho các bean mà bạn muốn IoC container quản lý Ở mức cơ bản nhất thì cấu hình IoC container phải chứa ít nhất một bean mà container đó phải quản lý Khi sử dụng XML - based configuration metadata, các bean này đƣợc cấu hình nhƣ một hoặc nhiều element bên trong element Các bean này tƣơng ứng với các đối tƣợng đƣợc tạo trong ứng dụng 2 4 3 Dependency Injection (DI) Kiểm soát ứng dụng, liên kết các đối tƣợng lại với nhau Tất cả thông tin ứng dụng đƣợc cấu hình trong một file x ml do dó dễ dàng thay đổi, mở rộng ứng dụng nhƣ là một kiến trúc plug -in Là các đối tƣợng định nghĩa sự phụ thuộc của chúng thông qua tham số của phƣơng thức khởi tạo (constructor) hoặc các thuộc tính đƣợc thiết lập trên thể hiện (instance) sau khi nó đƣợc khởi tạo hoặc trả về từ phƣơng thức factory Sau đó là công việc của container, nó sẽ đảo ngƣợc sự phụ thuộc đó khi nó tạo bean Do đó nó có tên là Inversion of Control (IoC) Có hai biến thể chính của DI là: Setter Injection và Constructor Injection 2 4 4 Setter Injection Cho đoạn code sau : 17 my@email address Đoạn code trên tƣơng ứng với đoạn code sau : Person person = new Person(); person setEmail(“my@email address”); Khởi tạo đối tƣợng Person và gán giá trị email cho nó Đƣợc nhận ra bởi phƣơng thức setter trên bean sau khi triệu gọi phƣơng thức khởi tạo không tham số hoặc phƣơng thức static factory không tham số để khởi tạo bean 2 4 5 Constuctor injection Đƣợc nhận ra bằng cách triệu gọi một phƣơng thức khởi tạo với một số tham số Một biến thể khác thay thế cho constructor là sử dụng phƣơng thức static factory để trả về thể hiện của đối tƣợng 2 4 6 Application Context Trong khi Bean Factory đƣợc sử dụng cho các ứng dụng đơn giản, thì Application Context là một container nâng cao của Spring Giống nhƣ BeanFactory, nó có thể đƣợc sử dụng để load các định nghĩa bean, gắn các bean với n hau và phân phát các bean theo yêu cầu Có 3 cách sử dụng cài đặt Application Context: ClassPathXmlApplicationContext Nó load định nghĩa context từ file XML đƣợc đặt trong classpath, xem các định nghĩa context nhƣ các tài nguyên của classpath Application context thì đƣợc load từ classpath của ứng dụng nhƣ sau: ApplicationContext context= new ClassPathXmlApplicationContext("bean xml"); FileSystemXmlApplicationContext Nó load định nghĩa context từ file XML trong từ hệ thống file Application Context đƣợc load từ hệ thống file nhƣ sau: XmlWebApplicationContext n ó sẽ load các định nghĩa context từ file XML trong ứng dụng web 18 2 4 7 Cơ chế xử lý Request -Respone Cũng giống nhƣ các java - base MVC FrameWork khác Spring MVC cũng phải requests thông qua một front controller servlet Một bộ front controller servlet đại diện duy nhất chịu trách nhiệm về yêu cầu các thành phần khác của một ứng dụng để thực hiện việc xử lý thực tế Trong trƣờng hợp của Spring MVC, DispatcherServlet là bộ điều khiển phía trƣớc Một Request đƣợc gửi bởi DispatcherServlet đến điều khiển (đƣợc chọn thông qua một bản đồ xử lý) Một khi điều khiển kết thúc, yêu cầu sau đó đƣợc gửi để xem (đó là lựa chọn thông qua ViewResolver) để làm cho đầu ra 2 4 8 Giải thích sơ đồ luồng dữ liệu Request đƣợc gửi đến DispatcherServlet DispatcherServlet gửi yêu cầu đến Handler Ma pping ( Một bản đồ cấu hình URL ) để xác định controller nào sẻ xử lý yêu cầu này DispatcherServlet gửi yêu cầu đến Controller sau khi biết đƣợc Controller nào sẽ xử lý yêu cầu Nếu yêu cầu đó cần truy xuất cơ sở dữ liệu thì Controller sẽ ủy nhiệm cho một business logic hay nhiều hơn một service Objects (MODEL) để lấy thông tin và gửi dữ liệu về cho Controller lúc này Controller đóng gói mô hình dữ liệu và tên của một view sẽ đƣợc tải lên thành đối tƣợng ModelAndView Gói ModelAndView đƣợc gửi trả về DispatcherServlet DispatcherServlet gửi gói ModelAndView cho ViewResolver để tìm xem trang web (JSP) nào sẻ đƣợc load lên DispatcherServlet load trang web đó lên cùng với dữ liệu của nó 2 4 9 Configuring DispatcherServlet DispatcherServlet đóng vai trò nhƣ trái tim của Spring MVC Một servlet có chức năng giống nhƣ Spring MVC‟s front controller Giống nhƣ bất kỳ servlet nào, DispatcherServlet phải dƣợc cấu hình trong web xml file 19 Theo mặc địn h, khi DispatcherServlet đƣợc nạp, nó sẽ tải các ứng dụng Spring context từ file XML có tên dựa vào tên của servlet Trong trƣờng hợp này, vì servlet có tên roadrantz, DispatcherServlet sẽ cố gắng để tải các ứng dụng context từ một file có tên roadrantz -servlet xml Sau đó, bạn phải chỉ ra những gì các URL sẽ đƣợc xử lý bởi các DispatcherServlet Thêm sau đây vào web xml để cho DispatcherServlet xử lý tất cả các URL mà kết thúc bằng “ html”: roadrantz * htm 2 4 10 Configuring a context loader Để đảm bảo rằng tất cả các file cấu hình đƣợc nạp, bạn sẽ cần phải cấu hình một Context Loader trong tập tin web xml của bạn Một bộ Context Loader cấu hình Ngoài các tập tin trong DispatcherServlet Việc phổ biến nhất Context Loader đƣợc sử dụng là một servlet listener gọi là servlet ContextLoaderListener đƣợc cấu hình trong web xml nhƣ sau: < listener> org springframework web context ContextLoaderListener Với ContextLoaderListener khi cấu hình, bạn sẽ cần phải nói cho nó vị trí của Spring cấu hình files để tải Nếu không quy định khác, các bối cảnh bộ nạp sẽ t ìm một file cấu hình Spring ở / WEB- INF/applicationContext xml Nhƣng vị trí nà y không thích hợp để chia nhỏ các ngữ cảnh ứng dụng trên lớp ứng dụng D o đó, có thể bạn sẽ muốn ghi đè mặc định này Bạn có thể chỉ định một hoặc nhiều file cấu hình Sp ring cho bộ nạp ngữ cảnh để tải, bằng cách thiết lập các thông số contextConfigLocation trong bối cảnh servlet: 20 Các tham số contextConfigLocation đƣợc quy định nhƣ một danh sách các đƣờng dẫn (liên quan đến ứng dụng web gốc) Khi cấu hình ở đây, bộ tải bối cảnh sẽ sử dụng contextConfigLocation để tải tập tin cấu hình ba bối cảnh, một cho Security Layer, một cho các tầng dịch vụ(Service Layer), và một cho các lớp dữ liệu (data layer) DispatcherServlet bây giờ là cấu hình và sẵn sàng để gửi yêu cầu đến lớp ứng dụng web của bạn Nhƣng lớp web đã chƣa đƣợc xây dựng! Đừng băn khoăn Chúng tôi sẽ xây dựng nhiều lớp web trong chƣơng này Hãy bắt đầu bằng cách c ảm nhận đƣợc một cái nhìn tổng quanlàm thế nào tất cả các mảnh của Spring MVC đƣợc lắp ráp để sản xuất các chức năng web 2 4 11 Building the controller HomePageController lấy một danh sách các rants gần đây để hiển thị trên trang chủ Trƣờng hợp Spring MVC điều khiển khác nhau từ một servlet hay một hành động Struts là nó cấu hình nhƣ một JavaBean chỉ trong bối cảnh ứng dụng Spring Điều này có nghĩa là bạn có thể tận dụng đầy đủ các dependency injection (DI) và Spring AOP với một controller class giống nhƣ bạn làm với bất kỳ Bean khác Trong trƣờng hợp của HomePageController, DI đƣợc sử dụng để bao bọc trong một RantService HomePageController delegates trách nhiệm để lấy danh sách các rants gần đây các RantService 2 4 12 Introducing ModelAndView Một khi các logic nghiệp vụ đã đƣợc hoàn thành bởi các đối tƣợng dịch vụ, đó là thời gian cho bộ điều khiển để gửi kết quả trở lại trình duyệt Các ModelAndView lớp đại diện cho một khái niệm quan trọng trong Spring MVC Trong thực tế, mọi điều khiển thực hiện phƣơng thức phải trả về ModelAndView Các đối tƣợng ModelAndView đƣợc xây dựng nhƣ sau: new ModelAndView("home", "rants", recentRants); Hai thông số “home” và recentRants sẽ đƣợc chuyển choView Hai thông số tạo thành tên của mô hình đối tƣợng một tham số thứ ba Trong trƣờng hợp này, danh sách rants trong biến recentRants sẽ đƣợc chuyển đến View với một tên là ”rants” 21 2 4 13 Configuring the controller bean Bây giờ HomePageController đã đƣợc viết, đó là thời gian để cấu hình nó trong DispatcherServlet contex của tập tin cấu hình (đó là roadrant -servlet xml cho các ứng dụng RoadRantz) Các đoạn sau đây của XML cấu hình cho HomePageController 2 4 14 Truy xuất dữ liệu trong Spring MVC Spring cung cấp một template JDBC để bạn có thể quản lý những kết nối của ta Một ví dụ đơn giản để bạn có thể kết nối đến một datasource : ProductManagerDaoJdbc implements ProductManagerDao { public void setDataSource(DataSource ds) { this ds = ds; } Không cần thay đổi code java khi thay đổi datasource : 22 CHƢƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 3 1 Xác định Actor và vai trò của Actor (trong hệ thống) Từ mô tả hệ thống ở mục 1 4 chƣơng 1 ta có: Khách hàng: Tìm hàng, xem hàng, đặt hàng, thanh toán - đối với khách hàng chỉ ghé thăm web thì không cần tài khoản - Khách hàng cần đăng nhập trƣớc khi tiến hành thanh toán - Nếu chƣa có tài khoản thì khách hàng có thể đăng ký một tài khoản mới và tiếp tục đăng nhập để tiếp tục thanh toán hàng đã có trong giỏ hàng N hân viên: Cần đăng nhập trƣớc, kiểm tra thông tin khách hàng, quản lý việc thanh toán cho khách hàng, quản lý khách hàng và thống kê hàng hóa - Thống kê hàng hóa: thống kê hàng tồn, thống kê danh số hàng hóa Admin: Admin có đầy đủ các chức năng của nhân viên và có thêm các chức năng khác nhƣ: - Quản lý hàng hóa - Quản lý thể loại - Quản lý nhà cung cấp - Quản lý khách hàng - Quản lý hóa đơn - Quản lý tài khoản (Nhân viên) - Phân quyền truy cập 3 2 Sơ đồ Use Case Hình 3 : Sơ đồ Use Case 23 Đặt tả các Use Case có trong hệ thống Tác nhân ch nh: nhân viên quản lý Chức năng Đăng nh p : Mô tả: B1: Chọn chức năng đăng nhập vào hệ thống B2: Hệ thống hiển thị form đăng nhập và yêu cầu quản lý nhập usename và password B3: Quản lý nhập usename và password sau đó nhấn đăng nhập B 4: Hệ thống kiểm tra thông tin quản lý vừa nhập và xác nhận thông tin hợp l ệ - Nếu sai thì quay lại B3 - Nếu đúng thì tiến hành B5 B5: Hệ thống thông báo đăng nhập thành công B6: Quản lý thoát khỏi chức năng đăng nhập Ri (Các thao tác) : R1 1: Khởi động hệ thống R1 2: Chọn chức năng đăng nhập R1 3: Nhập user và password vào nhấn đăng nhập R1 4: Cơ sở dữ liệu kiểm tra thông tin đăng nhập hợp lệ hay không R1 4 1: Nếu thông tin đúng, hệ thống thông báo đăng nhập thành cô ng R1 4 2: Nếu sai, hệ thông báo đăng nhập lỗi và yêu cầu nhập lại R1 5: Quản lý làm việc với hệ thống Chức năng quản lý sản phẩm: Mô tả B1: Đăng nhập hệ thống B2: Xem danh sách sản phẩm B3: Chỉnh sửa: thêm hàng hóa, sửa hàng hóa, xóa hàng hóa B4: Đăng xuất khỏi hệ thống Ri (Các thao tác) : R3 1: Quản lý khởi động hệ thống R3 2: Quản lý yêu cầu khung đăng nhập R3 3: Quản lý nhập user và password vào khung đăng nhập R3 4: Cơ sở dữ liệu kiểm tra thông tin đăng nhập hợp lệ hay không 24 R3 4 1: Nếu thông tin đúng, hệ thống thông báo đăng nhập thành công R3 4 2: Nếu sai, hệ thông báo đăng nhập lỗi và yêu cầu nhập lại R3 5: Hiển thị hệ thống R3 6: Quản lý khởi động giao diện chỉnh sửa và làm việc R3 6 1: Nhập hàng hóa R3 6 2: Sửa hàng hóa R3 6 3: Xóa hàng hóa R3 7: Cơ sở dữ liệu lƣu thông tin đã chỉnh sửa R3 8: Hệ thống thông báo cập nhật dữ liệu thành công Chức năng quản lý tài khoản: Mô tả B1: Đăng nhập hệ thống B2: Xem danh sách tài khoản B3: Chỉnh sửa: thêm tài khoản, sửa tài khoản, xóa tài khoản, phần quyền sử dụng, phân vai trò tài khoản B4: Đăng xuất khỏi hệ thống Ri (Các thao tác) : R3 1: Quản lý khởi động hệ thống R3 2: Quản lý yêu cầu khung đăng nhập R4 3: Quản lý nhập user và password vào khung đăng nhập R4 4: Cơ sở dữ liệu kiểm tra thông tin đăng nhập hợp lệ hay không R4 4 1: Nếu thông tin đúng, hệ thống thông báo đăng nhập thành công R4 4 2: Nếu sai, hệ thông báo đăng nhập lỗi và yêu cầu nhập lại R4 5: Hiển thị hệ thống R4 6: Quản lý khởi động giao diện chỉnh sửa và làm việc R4 6 1: Nhập tài khoản R4 6 2: Sửa tài khoản R4 6 3: Xóa tài khoản R4 6 4: Phân quyền sử dụng R4 7 5: Phân vai trò R4 7: Cơ sở dữ liệu lƣu thông tin đã chỉnh sửa R4 8: Hệ thống thông báo cập nhật dữ liệu thành công 25 Chức năng thống kê Mô tả B1: Đăng nhập hệ thống B2: Xem danh sách hàng hóa B3: Thống kê: thống kê hàng hóa: theo loại, theo hãng, thống kê doanh số: theo từng mặt hàng, theo từng hãng, theo từng khách hàng, theo từng năm, theo từng quí, theo từng tháng B4: Đăng xuất khỏi hệ thống Ri (Các thao tác) : R5 1: Quản lý khởi động hệ thống R5 2: Quản lý yêu cầu khung đăng nhập R5 3: Quản lý nhập user và password vào khung đăng nhập R5 4: Cơ sở dữ liệu kiểm tra thông tin đăng nhập hợp lệ hay không R5 4 1: Nếu thông tin đúng, hệ thống thông báo đăng nhập thành công R5 4 2: Nếu sai, hệ thông báo đăng nhập lỗi và yêu cầu nhập lại R5 5: Cơ sở dữ liệu lƣu thông tin đăng nhập R5 6: Hiển thị hệ thống R5 7: Quản lý khởi động giao diện thống kê và làm việc Chức năng quản lý khách hàng Mô tả B1: Đăng nhập hệ thống B2: Xem danh sách khách hàng B3: Chỉnh sửa: thêm khách hàng, sửa chi tiết thông tin khách hàng, xóa thông tin khách hàng B4: Đăng xuất khỏi hệ thống Ri (Các thao tác) : R6 1: Quản lý khởi động hệ thống R6 2: Quản lý yêu cầu khung đăng nhập R6 3: Quản lý nhập user và password vào khung đăng nhập R6 4: Cơ sở dữ liệu kiểm tra thông tin đăng nhập hợp lệ hay không? R6 4 1: Nếu thông tin đúng, hệ thống thông báo đăng nhập thành công R6 4 2: Nếu sai, hệ thông báo đăng nhập lỗi và yêu cầu nhập lại 26 R6 5: Hiển thị hệ thống R6 6: Quản lý khởi động giao diện chỉnh sửa và làm việc R6 6 1: Xem thông tin khách hàng R6 6 2: Sửa thông tin khách hàng R6 6 3: Xóa khách hàng R6 7: Cơ sở dữ liệu lƣu thông tin đã chỉnh sửa R6 8: Hệ thống thông báo cập nhật dữ liệu thành công Tác nhân ch nh: Nhân viên Ch c năng Đăng nh p Mô tả: B1: Chọn chức năng đăng nhập vào hệ thống B2: Hệ thống hiển thị form đăng nhập và yêu cầu nhân viên nhập usename và password B3: Nhân viên nhập usename và password sau đó nhấn đăng nhập B4: Hệ thống kiểm tra thông tin quản lý vừa nhập và xác nhận thông tin hợp lệ - Nếu sai thì quay lại B3 - Nếu đúng thì tiến hành B5 B5: Hệ thống thông báo đăng nhập thành c ông B6: Nhân viên thoát khỏi chức năng đăng nhập Ri (Các thao tác) : R1 1: Khởi động hệ thống R1 2: Chọn chức năng đăng nhập R1 3: Nhập user và password vào nhấn đăng nhập R1 4: Cơ sở dữ liệu kiểm tra thông tin đăng nhập hợp lệ hay không R1 4 1: Nếu thông tin đúng, hệ thống thông báo đăng nhập thành công R1 4 2: Nếu sai, hệ thông báo đăng nhập lỗi và yêu cầu nhập lại R1 5: Quản lý làm việc với hệ thống Chức năng quản lý sản phẩm: Mô tả B1: Đăng nhập hệ thống B2: Xem danh sách sản phẩm 27 B3: Chỉnh sửa: thêm hàng hóa B4: Đăng xuất khỏi hệ thống Ri (Các thao tác) : R3 1: Nhân viên khởi động hệ thống R3 2: Nhân viên yêu cầu khung đăng nhập R3 3: Nhân viên nhập user và password vào khung đăng nhập R 3 4: Cơ sở dữ liệu kiểm tra thông tin đăng nhập hợp lệ hay không R3 4 1: Nếu thông tin đúng, hệ thống thông báo đăng nhập thành công R3 4 2: Nếu sai, hệ thông báo đăng nhập lỗi và yêu cầu nhập lại R3 5: Hiển thị hệ thống R3 6: Nhân viên khởi động giao diện chỉnh sửa và làm việc R3 6 1: Nhập hàng hóa R3 7: Cơ sở dữ liệu lƣu thông tin đã chỉnh sửa R3 8: Hệ thống thông báo cập nhật dữ liệu thành công Chức năng Thống kê Mô tả B1: Đăng nhập hệ thống B 2: Xem danh sách hàng hóa B3: Thống kê: thống kê hàng hóa: theo loại, theo hãng, thống kê doanh số: theo từng mặt hàng, theo từng hãng, theo từng khách hàng, theo từng năm, theo từng quí, theo từng tháng B4: Đăng xuất khỏi hệ thống Ri (Các thao tác) : R5 1: Nhân viên khởi động hệ thống R5 2: Nhân viên yêu cầu khung đăng nhập R5 3: Nhân viên nhập user và password vào khung đăng nhập R5 4: Cơ sở dữ liệu kiểm tra thông tin đăng nhập hợp lệ hay không R5 4 1: Nếu thông tin đúng, hệ thống thông báo đăng nhập thành công R5 4 2: Nếu sai, hệ thông báo đăng nhập lỗi và yêu cầu nhập lại R5 5: Cơ sở dữ liệu lƣu thông tin đăng nhập R5 6: Hiển thị hệ thống R5 7: Nhân viên khởi động giao diện thống kê và làm việc 28 Chức năng quản lý khách hàng Mô tả B1: Đăng nhập hệ thống B2: Xem danh sách khách hàng B3: Chỉnh sửa: thêm khách hàng, sửa chi tiết thông tin khách hàng, xóa thông tin khách hàng B4: Đăng xuất khỏi hệ thống Ri (Các thao tác) : R6 1: Nhân viên khởi động hệ thống R6 2: Nhân viên yêu cầu khung đăng nhập R6 3: Nhân viên nhập user và password vào khung đăng nhập R6 4: Cơ sở dữ liệu kiểm tra thông tin đăng nhập hợp lệ hay không? R6 4 1: Nếu thông tin đúng, hệ thống thông báo đăng nhập thành công R6 4 2: Nếu sai, hệ thông báo đăng nhập lỗi và yêu cầu nhập lại R6 5: Hiển thị hệ thống R6 6: Nhân viên khởi động giao diện chỉnh sửa và làm việc R6 6 1: Xem thông tin khách hàng R6 6 2: Sửa thông tin khách hàng R6 6 3: Xóa khách hàng R6 7: Cơ sở dữ liệu lƣu thông tin đã chỉnh sửa R6 8: Hệ thống thông báo cập nhật dữ liệu thành công Quản lý bán hàng: Tác nhân chính: Khách hàng Mô tả : B1: Khách hàng truy cập vào hệ thống B2: Khách hàng tìm kiếm hàng hóa cần tìm B3: Khách hàng xem thông tin chi tiết hàng hóa B4: Khách hàng đặt mua hàng hóa B5: Khách hàng kiểm tra hàng trong giỏ hàng B6: Khách hàng thêm, xóa , sửa hàng hóa trong giỏ hàng B7: Khách hàng tiến hành đăng nhập vào hệ thống để tiếp tục đặt hàng B8 : Khách hàng nhập thông tin đặt hàng 29 B9 : Khách hàng tiến hành đặt hàng Ri (Các thao tác) : R2 1: Bắt đầu làm việc với hệ thống R2 2: Tìm kiếm s ả n ph ẩ m R2 3: Xem thông tin chi tiết s ả n ph ẩ m R2 4: Ch ọ n và Thêm s ả n ph ẩ m vào giỏ hàng R2 5: Thêm, s ử a, xóa s ả n ph ẩ m có trong giỏ hàng R2 6: Xem thông tin trong giỏ hà
NỘI DUNG NGHIÊN CỨU
WEBSITE 1.1 Tổng quan về thương mại điện tử
1.1.1 Khái niệm thương mại điện tử (TMĐT)
TMĐT càng được biết tới như một phương thức kinh doanh hiệu quả từ khi Internet hình thành và phát triển Chính vì vậy, nhiều người hiểu TMĐT theo nghĩa cụ thể hơn là giao dịch thương mại, mua sắm qua Internet và mạng (ví dụ mạng Internet của doanh nghiệp)
“Thuật ngữ Thương mại cần được diễn giải theo nghĩa rộng để bao quát các vấn đề phát sinh từ mọi quan hệ mang tính chất thương mại dù có hay không có hợp đồng Các quan hệ mang tính thương mại bao gồm các giao dịch sau đây: bất cứ giao dịch nào về thương mại nào về cung cấp hoặc trao đổi hàng hóa hoặc dịch vụ; thỏa thuận phân phối; đại diện hoặc đại lý thương mại, ủy thác hoa hồng; cho thuê dài hạn; xây dựng các công trình; tƣ vấn; kỹ thuật công trình; đầu tƣ; cấp vốn; ngân hàng; bảo hiểm; thỏa thuận khai thác hoặc tô nhƣợng; liên doanh các hình thức khác về hợp tác công nghiệp hoặc kinh doanh; chuyên chở hàng hóa hay hành khách bằng đường biển, đường không, đường sắt hoặc đường bộ.”
Như vậy, có thể thấy rằng phạm vi của Thương mại điện tử rất rộng, bao quát hầu hết các lĩnh vực hoạt động kinh tế, việc mua bán hàng hóa và dịch vụ chỉ là một trong hàng ngàn lĩnh vực áp dụng của Thương mại điện tử Theo nghĩa hẹp thương mại điện tử chỉ gồm các hoạt động thương mại được tiến hành trên mạng máy tính mở như Internet Trên thực tế, chính các hoạt động thương mại thông qua mạng Internet đã làm phát sinh thuật ngữ Thương mại điện tử
1.1.2 Lợi ích của việc sử dụng thương mại điện tử
Lợi ích lớn nhất mà TMĐT đem lại chính là sự tiết kiệm chi phí và tạo thuận lợi cho các bên giao dịch Giao dịch bằng phương tiện điện tử nhanh hơn so với giao dịch truyền thống, ví dụ gửi fax hay thư điện tử thì nội dung thông tin đến tay người nhận nhanh hơn gửi thƣ Các giao dịch qua Internet có chi phí rất rẻ, một doanh nghiệp có thể gửi thƣ tiếp thị, chào hàng đến hàng loạt khách hàng chỉ với chi phí giống nhƣ gửi cho một khách hàng Với TMĐT, các bên có thể tiến hành giao dịch khi ở cách xa nhau, giữa thành phố với nông thôn, từ nước này sang nước kia, hay
CƠ SỞ LÝ THUYẾT VÀ NỀN TẢNG ĐỂ XÂY DỤNG WEBSITE 3 1.1 Tổng quan về thương mại điện tử
Khái niệm thương mại điện tử (TMĐT)
TMĐT càng được biết tới như một phương thức kinh doanh hiệu quả từ khi Internet hình thành và phát triển Chính vì vậy, nhiều người hiểu TMĐT theo nghĩa cụ thể hơn là giao dịch thương mại, mua sắm qua Internet và mạng (ví dụ mạng Internet của doanh nghiệp)
“Thuật ngữ Thương mại cần được diễn giải theo nghĩa rộng để bao quát các vấn đề phát sinh từ mọi quan hệ mang tính chất thương mại dù có hay không có hợp đồng Các quan hệ mang tính thương mại bao gồm các giao dịch sau đây: bất cứ giao dịch nào về thương mại nào về cung cấp hoặc trao đổi hàng hóa hoặc dịch vụ; thỏa thuận phân phối; đại diện hoặc đại lý thương mại, ủy thác hoa hồng; cho thuê dài hạn; xây dựng các công trình; tƣ vấn; kỹ thuật công trình; đầu tƣ; cấp vốn; ngân hàng; bảo hiểm; thỏa thuận khai thác hoặc tô nhƣợng; liên doanh các hình thức khác về hợp tác công nghiệp hoặc kinh doanh; chuyên chở hàng hóa hay hành khách bằng đường biển, đường không, đường sắt hoặc đường bộ.”
Như vậy, có thể thấy rằng phạm vi của Thương mại điện tử rất rộng, bao quát hầu hết các lĩnh vực hoạt động kinh tế, việc mua bán hàng hóa và dịch vụ chỉ là một trong hàng ngàn lĩnh vực áp dụng của Thương mại điện tử Theo nghĩa hẹp thương mại điện tử chỉ gồm các hoạt động thương mại được tiến hành trên mạng máy tính mở như Internet Trên thực tế, chính các hoạt động thương mại thông qua mạng Internet đã làm phát sinh thuật ngữ Thương mại điện tử.
Lợi ích của việc sử dụng thương mại điện tử
Lợi ích lớn nhất mà TMĐT đem lại chính là sự tiết kiệm chi phí và tạo thuận lợi cho các bên giao dịch Giao dịch bằng phương tiện điện tử nhanh hơn so với giao dịch truyền thống, ví dụ gửi fax hay thư điện tử thì nội dung thông tin đến tay người nhận nhanh hơn gửi thƣ Các giao dịch qua Internet có chi phí rất rẻ, một doanh nghiệp có thể gửi thƣ tiếp thị, chào hàng đến hàng loạt khách hàng chỉ với chi phí giống nhƣ gửi cho một khách hàng Với TMĐT, các bên có thể tiến hành giao dịch khi ở cách xa nhau, giữa thành phố với nông thôn, từ nước này sang nước kia, hay
4 nói cách khác là không bị giới hạn bởi không gian địa lý Điều này cho phép các doanh nghiệp tiết kiệm chi phí đi lại, thời gian gặp mặt trong khi mua bán Với người tiêu dùng, họ có thể ngồi tại nhà để đặt hàng, mua sắm nhiều loại hàng hóa, dịch vụ thật nhanh chóng
Những lợi ích nhƣ trên chỉ có đƣợc với những doanh nghiệp thực sự nhận thức đƣợc giá trị của TMĐT Vì vậy, TMĐT góp phần thúc đẩy sự cạnh tranh giữa các doanh nghiệp để thu đƣợc nhiều lợi ích nhất Điều này đặc biệt quan trọng trong bối cảnh hội nhập kinh tế quốc tế, khi các doanh nghiệp trong nước phải cạnh tranh một cách bình đẳng với các doanh nghiệp nước ngoài.
Tổng quan về ngôn ngữ java
1.2.1 Nguồn gốc của ngôn ngữ java
Thập kỷ 90 chứng kiến một sự phát triển nhƣ vũ bão của mạng Internet, kèm theo đó là vô vàn các ứng dụng trên các môi trường, hệ điều hành (OS) và các hệ xử lý (CPU) khác nhau Tuy nhiên có một điểm hạn chế lớn là người lập trình phải rất vất vả khi chuyển đổi các ứng dụng của mình để các hệ thống khác có thể sử dụng đƣợc
Ngày 23/5/1995, công ty máy tính Sun Microsystems đã giới thiệu một công cụ lập trình mới - ngôn ngữ Java - nhằm khắc phục những khó khăn đó Đặc điểm nổi bật nhất của Java là nó không phụ thuộc vào hệ điều hành và bộ xử lý Điều này cho phép một ứng dụng viết bằng Java có thể đƣợc thực hiện trên bất kỳ hệ điều hành và hệ xử lý nào có hỗ trợ Java Do vậy, người lập trình chỉ cần viết ứng dụng bằng Java đúng một lần, sau đó có thể sử dụng ứng dụng này trên các hệ điều hành khác nhau như Windows95, WindowsNT, Mac OS, Unix,… theo phương châm: “viết một lần, sử dụng ở bất kỳ đâu”
1.2.2 Đặc điểm của ngôn ngữ java
Java là ngôn ngữ lập trình hướng đối tượng nên nó cũng có 4 đặc điểm chung của các ngôn ngữ hướng đối tượng:
Tính trừu tƣợng (Abstraction): là tiến trình xác định và nhóm các thuộc tính, các hành động liên quan đến một thực thể đặc thù, xét trong mối tương quan với ứng dụng đang phát triển
Tính đa hình (Polymorphism): cho phép một phương thức có các tác động khác nhau trên nhiều loại đối tượng khác nhau Với tính đa hình, nếu cùng một phương
5 thức ứng dụng cho các đối tƣợng thuộc các lớp khác nhau thì nó đƣa đến những kết quả khác nhau Bản chất của sự việc chính là phương thức này bao gồm cùng một số lƣợng các tham số
Tính kế thừa (Inheritance): Điều này cho phép các đối tƣợng chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩa lại
Tính đóng gói (Encapsulation): là tiến trình che giấu việc thực thi những chi tiết của một đối tượng đối với người sử dụng đối tượng ấy
Bên cạnh đó Java còn có một số đặc tính khác nhƣ:
Có thể định nghĩa một cách chính xác hơn về Java: “là ngôn ngữ lập trình hướng đối tượng, được thiết kế độc lập với hệ điều hành, cho phép người lập trình viết chương trình một lần và có thể sử dụng tại bất kỳ đâu”
Không chỉ giới thiệu ngôn ngữ lập trình, Sun Microsystems còn đƣa ra hàng loạt công cụ hỗ trợ người lập trình phát triển các ứng dụng bằng Java, như Java Developer Kit, JavaBeans, HotJava…
Ngôn ngữ Java có cú pháp rất giống với ngôn ngữ C/C++ (là một ngôn ngữ rất mạnh đƣợc dùng phổ biến hiện nay), tuy nhiên nó đã đƣợc thay đổi khá nhiều để đáp ứng khả năng độc lập với hệ điều hành Nền tảng của ngôn ngữ Java là các class Các class đóng vai trò như những đối tượng, người lập trình khi xây dựng ứng dụng sẽ sử dụng một số class chuẩn của hệ thống, đồng thời có thể tự mình xây dựng class khác đáp ứng yêu cầu công việc
Java là ngôn ngữ dễ học, nó lược bớt những lệnh thừa và rườm rà của C/C++ để người lập trình chú trọng vào việc viết chương trình Đồng thời, nó còn hạn chế người lập trình không can thiệp quá sâu vào hệ thống
Hiện nay Java đƣợc ứng dụng rất rộng rãi, chủ yếu là các ứng dụng đƣợc viết trên Internet nhằm khai thác tối đa khả nă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 đơn lẻ Hiện tại các ứng dụng viết bằng Java khi thực hiện còn chậm hơn so với các ứng dụng được xây dựng thông thường, tuy nhiên hầu hết các nhà phát triển phần mềm đều cho rằng tốc độ sẽ đƣợc cải thiện và Java sẽ là ngôn ngữ lập trình của tương lai
1.2.3 Ưu điểm ngôn ngữ java Đơn giản, hướng đối tượng và quen thuộc
- Mạnh mẽ và an toàn
- Kiến trúc trung lập và di động
- Thực thi với hiệu suất cao
- Dịch ra bytecode, phân luồng và năng động
- Dễ sử dụng cho người dùng Java
1.2.4 Hoạt động của một website viết bằng java
Chương trình xây dựng bằng Java được chia làm các loại sau:
- Java Applet là các đối tƣợng đƣợc thực hiện trên trình duyệt Web Khi thực hiện trên các trình duyệt Web, Java Applet cũng tạo ra các hiệu ứng nhƣ một ứng dụng bình thường, tuy nhiên các thông tin cho phép Java Applet thực hiện lại được đƣa từ các trang Web
Người sử dụng dùng trình duyệt Web (browser) để xem các trang thông tin, trong đó có nhúng đối tƣợng Java Applet Khi trình duyệt Web truy cập đến trang thông tin này, Java Applet sẽ đƣợc tải về trình duyệt Web và đƣợc thực hiện thông qua một cơ cấu gọi là Java Virtual Machine (JVM) đã đƣợc cài sẵn trong trình duyệt
- Java Application (Java App) là những ứng dụng độc lập, tương tự như những chương trình có đuôi EXE hay đuôi COM thông thường Việc thực hiện Java App đơn giản hơn Java Applet vì chúng không cần phải thông qua trình duyệt Web
- Java Virtual Machine (JVM) đóng vai trò rất quan trọng để các ứng dụng Java có thể thực hiện đƣợc Nó hoạt động nhƣ một máy tính ảo, cũng có bộ lệnh, cấu trúc dữ liệu, bộ nhớ,… Khi các ứng dụng Java (sau khi dịch, các ứng dụng viết bằng Java sẽ có phần mở rộng là class) thực hiện, JVM tiến hành phân tích mã trong class đó thành bộ lệnh của JVM rồi thực hiện giống nhƣ máy tính PC thao tác với các ứng dụng thông thường
Bởi vậy, các class sau khi dịch có thể đƣợc thực hiện trên bất kỳ hệ điều hành nào thông qua máy tính ảo JVM
Hiện tại, JVM đƣợc xây dựng cho hầu hết các hệ điều hành và hệ xử lý hiện có, điều này có nghĩa là các ứng dụng viết bằng Java có đầy đủ điều kiện để phát triển.
Tổng quan về SQLServer và Tomcat
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
7 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 user SQL Server có thể kết hợp “ăn ý” với các server khác nhƣ Microsoft Internet Information Server (IIS), E-Commerce Server, Proxy Server…
1.3.2 Các thành phần cơ bản trong SQL Server
SQL Server đƣợc cấu tạo bởi nhiều thành phần nhƣ Database Engine, Reporting Services, Notification Services, Integration Services, Full Text Search Service… Các thành phần này khi phối hợp với nhau tạo thành một giải pháp hoàn chỉnh giúp cho việc lưu trữ và phân tích dữ liệu một cách dễ dàng
- Cốt lõi của SQL Server: Ðây là một engine có khả năng chứa data ở các quy mô khác nhau dưới dạng table và support tất cả các kiểu kết nối (data connection) thông dụng của Microsoft nhƣ: ActiveX Data Objects (ADO), OLE DB, and Open Database Connectivity (ODBC)
Ngoài ra nó còn có khả năng tự điều chỉnh (tune up) ví dụ nhƣ sử dụng thêm các tài nguyên (resource) của máy khi cần và trả lại tài nguyên cho hệ điều hành khi một user log off
- Cơ chế tạo bản sao (Replica):
Giả sử ta có một database dùng để chứa dữ liệu được các ứng dụng thường xuyên cập nhật Một ngày đẹp trời bạn muốn có một cái database giống y hệt nhƣ thế trên một server khác để chạy báo cáo (report database) (cách làm này thường dùng để tránh ảnh hưởng đến performance của server chính) Vấn đề là report server của ta cũng cần phải được cập nhật thường xuyên để đảm bảo tính chính xác của các báo cáo Ta không thể dùng cơ chế back up and restore trong trường hợp này Thế thì ta phải làm sao? Lúc đó cơ chế replication của SQL Server sẽ đƣợc sử dụng để bảo đảm cho dữ liệu ở 2 database đƣợc đồng bộ (synchronized)
- Integration Services là một tập hợp các công cụ đồ họa và các đối tƣợng lập trình cho việc di chuyển, sao chép và chuyển đổi dữ liệu
Nếu ta làm việc trong một công ty lớn trong đó data đƣợc chứa trong nhiều nơi khác nhau và ở các dạng khác nhau cụ thể nhƣ chứa trong Oracle, DB2 (của IBM), SQL Server, Microsoft Access… Ta chắc chắn sẽ có nhu cầu di chuyển data giữa các server này (migrate hay transfer) và không chỉ di chuyển bạn còn muốn định dạng (format) nó trước khi lưu vào database khác, khi đó bạn sẽ thấy DTS giúp bạn giải quyết công việc trên dễ dàng
- Một dịch vụ phân tích dữ liệu rất hay của Microsoft
Dữ liệu (Data) chứa trong database sẽ chẳng có ý nghĩa gì nhiều nếu nhƣ bạn không thể lấy đƣợc những thông tin (Information) bổ ích từ đó Do đó Microsoft cung cấp cho bạn một công cụ rất mạnh giúp cho việc phân tích dữ liệu trở nên dễ dàng và hiệu quả bằng cách dùng khái niệm hình khối nhiều chiều (multi-dimension cubes) và kỹ thuật “khai phá dữ liệu” (data mining)
Dịch vụ thông báo Notification Services là nền tảng cho sự phát triển và triển khai các ứng dụng tạo và gửi thông báo Notification Services có thể gửi thông báo theo đồng thời đến hàng ngàn người đăng ký sử dụng nhiều loại thiết bị khác nhau
Reporting Services bao gồm các thành phần server và client cho việc tạo, quản lý và triển khai các báo cáo Reporting Services cũng là nền tảng cho việc phát triển và xây dựng các ứng dụng báo cáo
Dịch vụ SQL Server Full Text Search là một dịch vụ đặc biệt cho đánh chỉ mục và truy vấn cho dữ liệu văn bản không cấu trúc được lưu trữ trong các CSDL SQL Server Đánh chỉ mục với Full Text Search có thể dduwowcj tạo trên bất kỳ cột dựa trên dữ liệu văn bản Nó sẽ rất hiệu quả cho việc tìm các sử dụng toán tử LIKE trong SQL với trường hợp tìm văn bản
Service Broker Được sử dụng bên trong mỗi Instance, là môi trường lập trình cho việc các ứng dụng nhảy qua các Instance Service Broker giao tiếp qua giao thức TCP/IP và cho
9 phép các component khác nhau có thể được đồng bộ cùng nhau theo hướng trao đổi các message Service Broker chạy nhƣ một phần của bộ máy cơ sở dữ liệu, cung cấp một nền tảng truyền message tin cậy và theo hàng đợi cho các ứng dụng SQL Server
Tomcat là một ứng dụng chủ (Application Server), là một phần mềm mã nguồn mở được cung cấp bởi Apache Tomcat nổi tiếng vì gọn nhẹ nó thường được sử dụng trong quá trình phát triển một ứng Web trên nền tảng Java Servlet
Hình 1: Tomcat Bạn cũng có thể sử dụng Tomcat để triển khai các ứng dụng Java Web trên thực tế và hoàn toàn có thể tin tưởng vào sự ổn định của nó.
Mô tả hệ thống bán hàng điện tử dân dụng
Đây là một website nhằm bán và giới thiệu rộng rãi các mặt hàng điện tử dân dụng đến người tiêu dùng với các chi tiết mặt hàng cũng như giá cả một cách chính xác nhất Website nhằm:
- Về hoạt động khách hàng:
Khi khách đã quyết định tham gia vào hoạt động mua hàng của cửa hàng thì mỗi khách hàng được cung cấp một giỏ hàng tương ứng Khách hàng tự do lựa chọn loại hàng hóa nào mà mình thích vào giỏ hàng của mình
+ Tìm kiếm và lựa chọn từ xa sản phẩm mình cần: Khách hàng khi truy cập vào trang web thương mại thường tìm kiếm các mặt hàng hay các sản phẩm mà họ cần và muốn mua Nhƣng đôi khi cũng có nhiều khách hàng vào website này mà không có ý định mua hay không biết mua gì thì yêu cầu đặt ra cho hệ thống là làm thế nào để khách hàng dễ bị bắt mắt và hấp dẫn với sản phẩm đó, đồng thời có thể tìm kiếm nhanh và hiệu quả các sản phẩm mà họ cần tìm Vì vậy, thông qua chức năng tìm kiếm của website thì khách hàng có thể tìm đƣợc nhanh chóng những mặt
10 hàng mà mình muốn mua một cách nhanh nhất Khi đã chọn đƣợc mặt hàng ƣng ý thì khách hàng có thể thêm hàng vào giỏ hàng
+ Đặt mua hàng: Sau khi khách hàng lựa chọn xong những mặt hàng cần đặt mua thì đơn đặt hàng sẽ đƣợc hiển thị, khách hàng có thể cập nhật lại mặt hàng có trong giỏ hàng nhƣ thay đổi số lƣợng và có thể xóa bớt đi mặt hàng trong giỏ hàng mà mình không muốn mua nữa
+Trường hợp khách hàng chưa đăng ký tài khoản: Khi chưa đăng ký tài khoản thì khách hàng vẫn có thể lựa chọn những mặt hàng mình yêu thích thêm vào trong giỏ hàng Khi đặt hàng thì sẽ đƣợc hiển thị thông báo vui lòng đăng nhập và chọn hàng
+ Trường hợp Khách hàng đã đăng ký tài khoản thì có thể:
Mua hàng: Khi tiến hành đặt hàng thì khách hàng cần nhập những thông tin cần thiết để cửa hàng có thể giao hàng tận nơi cho khách: Tên - Địa chỉ - Số điện thoại - Ngày nhận hàng…
Theo dõi đơn hàng của mình
- Về hoạt động của nhà quản trị:
+ Trước hết để vào website quản lý thì nhà quản trị phải đăng nhập vào hệ thống
+ Nhà quản lý có một username và một password để truy cập vào hệ thống Khi đã đăng nhập thành công thì nhà quản trị có thể quản lý và làm chủ mọi hoạt động của hệ thống trang web nhằm thực hiện các chức năng sau:
+ Quản lý các sản phẩm một cách dễ dàng: Nhà quản trị có thể Thêm, xoá, sửa thông tin sản phẩm, nhà cung cấp, hóa đơn, khách hàng vào cơ sở dữ liệu
+ Nhà quản trị có thể kiểm kê hàng tồn kho để có thể biết đƣợc mặt hàng nào đang bán chạy hoặc đang còn tồn kho
+ Thống kê doanh số bán hàng: Nhà quản trị có thể thống kê doanh số bán hàng: o Theo từng mặt hàng o Theo từng loại hàng o Theo từng hãng o Theo từng khách hàng
11 o Theo từng năm o Theo từng quý o Theo từng tháng
+ Phân quyền người dùng: admin được toàn quyền còn user sẽ được phân chi tiết cho từng trang
+ Kiểm tra và xử lý đơn đặt hàng
+ Quản lý thông tin khách hàng
TÌM HIỂU VỀ SPRING MVC
Spring Framework
Spring Framework, hay ngắn hơn là Spring, là một framework mã nguồn mở đƣợc viết bằng Java Nó đƣợc xem nhƣ là một giải pháp kiến trúc tốt nhất của Java
Theo thiết kế, bộ khung hình này giải phóng lập trình viên dùng Java, cho phép họ nhiều quyền tự do hơn Đồng thời cung cấp một giải pháp tiện lợi, đầy đủ dẫn chứng bằng tài liệu, dễ dàng sử dụng, phù hợp với những thực hành thông dụng trong công nghệ phần mềm
Spring đóng vai trò là tầng business
Core package là phần cơ bản nhất của framework, cung cấp những đặc tính IoC (Inversion of Control: Khung chứa đảo ngƣợc khống chế) và Dependency Injection
Cài đặt factory pattern cho phép bạn móc nối sự phụ thuộc giữa các đối tƣợng trong file cấu hình
Phía trên của Core package là Context package - cung cấp cách để truy cập đối tƣợng
Context package kết thừa các đặc tính từ bean package và thêm vào chức năng đa ngôn ngữ (I18N), truyền sự kiện, resource-loading,
2.1.2.3 Spring AOP (Aspect Oriented programming)
Spring AOP module tích hợp chức năng lập trình hướng khía cạnh vào Spring framework thông qua cấu hình của nó Spring AOP module cung cấp các dịch vụ quản lý giao dịch cho các đối tƣợng trong bất kỳ ứng dụng nào sử dụng Spring Với
3 Spring AOP chúng ta có thể tích hợp quản lý giao dịch (declarative transaction management) vào trong ứng dụng mà không cần dựa vào EJB component Spring AOP module cũng đƣa lập trình metadata vào trong Spring Sử dụng cái này chúng
13 ta có thể thêm annotation (chú thích) vào source code để hướng dẫn Spring và làm thế nào để liên hệ với aspect (khía cạnh khác)
DAO package cung cấp cho tầng JDBC, bỏ bớt những coding dài dòng của JDBC và chuyển đổi mã lỗi đƣợc xác định bởi nhà cung cấp cơ cở dữ liệu (database vendor) JDBC package cung cấp cách lập trình tốt nhƣ declarative transaction management (quản lý giao dịch khai báo)
Tầng JDBC và DAO đƣa ra một cây phân cấp exception để quản lý kết nối đến database, điều khiển exception và thông báo lỗi đƣợc ném bởi vendor của database Tầng exception đơn giản điều khiển lỗi và giảm khối lƣợng code mà chúng ta cần viết nhƣ mở và đóng kết nối Module này cũng cung cấp các dịch vụ quản lý giao dịch cho các đối tƣợng trong ứng dụng Spring
ORM package cung cấp tầng tích hợp với object-relational mapping API bao gồm: JDO, Hibernate, iBatis
Sử dụng ORM package bạn có thể sử dụng tất cả các object-relational mapping đó kết hợp với tất cả các đặc tính của Spring nhƣ declarative transaction management
Spring Web package cung cấp đặc tính của web nhƣ: chức năng file-upload, khởi tạo IoC container sử dụng trình lắng nghe serlvet và web-oriented application context (ứng dụng ngữ cảnh)
Nằm trên application context module, cung cấp context cho các ứng dụng web Spring cũng hỗ trợ tích hợp với Struts, JSF và Webwork Web module cũng làm giảm bớt các 4 công việc điều khiển nhiều request và gắn các tham số của request vào các đối tƣợng domain
Spring Framework là một ứng dụng mã nguồn mở phổ biến cho Java EE phát triển dễ dàng hơn Nó bao gồm một container, một framework cho các thành phần quản lý, và một bộ các snap-in dịch vụ cho các giao diện người dùng web, giao dịch,… Một phần của Spring Framework là Spring Web MVC, một mô hình MVC mở rộng để tạo các ứng dụng web
MVC Framework thì cài đặt đầy đủ đặc tính của MVC pattern để xây dựng các ứng dụng Web MVC framework thì cấu hình thông qua giao diện và chứa đƣợc một số kỹ thuật view bao gồm: JSP, Velocity, Tiles và generation of PDF và Excel file Spring MVC framework cung cấp sự phân biệt rõ ràng giữa domain model và web form
2.1.3 Lý do sử dụng Spring
Tất cả các framework đã đƣợc tích hợp rất tốt vào Spring
Hoạt động rất tốt khi áp dụng theo kiến trúc MVC
Sử dụng cơ chế plug-in
Kết hợp rất tốt với các O/R (object-relational) Mapping frameworks nhƣ là Hibernate
Dễ Testing ứng dụng Ít phức tạp hơn so với các framework khác
Cộng đồng người sử dụng rất nhiều, nhiều sách mới được xuất bản.
Spring MVC
Mô hình gồm các lớp java có nhiệm vụ:
- Biểu diễn data và cho phép truy cập tới để get và set data trong (JAVABEAN), thường thì phần layer này mô phỏng 1 cách đầy đủ đối tượng từ thế giới thực
- Nhận các yêu cầu từ khung nhìn
- Thi hành các yêu cầu đó (tính toán, kết nối CSDL …)
- Trả về các giá trị tính toán theo yêu cầu của Controller
Bao gồm các mã tương tự như JSP, HTML, CSS, XML, Javascript, JSON… để hiển thị giao diện người dùng, các dữ liệu trả về từ Model thông qua Controller…
2.2.1.3 Controller (Bộ điều khiển) Đồng bộ hoá giữa Khung nhìn và Mô hình Tức là với một trang JSP này thì sẽ tương ứng với lớp java nào để xử lý nó và ngược lại, kết quả sẽ trả về trang jsp nào
Nó đóng vai trò điều tiết giữa View và Model
Nhƣ vậy, chúng ta có thể tách biệt đƣợc các mã java ra khỏi mã html Do vậy, nó đã giải quyết được các khó khăn đã nêu ra trong Mô hình 1 Người thiết kế giao diện và người lập trình java có thể mang tính chất độc lập tương đối
Việc debug hay bảo trì sẽ dễ dàng hơn, việc thay đổi các theme của trang web cũng dễ
2.3 Ƣu điểm của spring mvc
Framework Spring nhƣ thùng chứa nhẹ và hỗ trợ nhiều framework và các thƣ viện Nó cho phép các nhà phát triển trộn và kết hợp nhiều framework khi phát triển và triển khai các ứng dụng Các Spring MVC có những lợi thế từ Spring framework và cung cấp một lần tốt nhất cho framework và hiệu quả cho sự phát triển của các ứng dụng web
Các MVC Spring là một framework phát triển web dựa trên các mẫu thiết kế MVC (Model View Controller) Các tính năng của framework Spring MVC là Pluggable công nghệ View và Injection dịch vụ vào điều khiển
2.4 Một số thành phần liên quan
2.4.1 Inversion of Control Container (IoC container)
Hai gói: org.springframework.beans và org.springframework.context cung cấp IoC Container cho Spring framework
Giao tiếp BeanFactory cung cấp kỹ thuật cấu hình nâng cao, có khả năng quản lý các đối tƣợng
Giao tiếp ApplicationContext kế thừa từ BeanFactory và thêm một vài chức năng khác nhƣ tích hợp với đặc tính Spring AOP, truyền sự kiện, application context nhƣ WebApplicationContext sử dụng trong ứng dụng web
Hiệu chỉnh các thành phần (components) của chương trình và quản lý vòng đời (lifecycle) của các đối tƣợng Java
Các đối tƣợng trong ứng dụng đƣợc quản lý bởi IoC container đƣợc gọi là các bean Một bean thì đơn giản là một đối tƣợng đƣợc khởi tạo, phân phát và đƣợc quản lý bởi IoC container Sự phụ thuộc giữa chúng đƣợc phản ánh trong configuration metadata đƣợc sử dụng bởi container
Giao tiếp org.springframework.beans.factory.BeanFactory là IoC container chịu trách nhiệm chứa, khởi tạo, quản lý và móc nối sự phụ thuộc giữa các bean Một cài đặt (kế thừa) của BeanFactory là XmlBeanFactory - nhận XML configuration metadata và sử dụng nó để cấu hình cho ứng dụng
Configuration metadata có định dạng XML (hoặc properties), đƣợc sử dụng để viết các bean definitions cho các bean mà bạn muốn IoC container quản lý Ở mức cơ bản nhất thì cấu hình IoC container phải chứa ít nhất một bean mà container đó phải quản lý Khi sử dụng XML - based configuration metadata, các bean này đƣợc cấu hình nhƣ một hoặc nhiều element bên trong element Các bean này tương ứng với các đối tượng được tạo trong ứng dụng
Kiểm soát ứng dụng, liên kết các đối tƣợng lại với nhau
Tất cả thông tin ứng dụng đƣợc cấu hình trong một file xml do dó dễ dàng thay đổi, mở rộng ứng dụng nhƣ là một kiến trúc plug-in
Là các đối tƣợng định nghĩa sự phụ thuộc của chúng thông qua tham số của phương thức khởi tạo (constructor) hoặc các thuộc tính được thiết lập trên thể hiện (instance) sau khi nó được khởi tạo hoặc trả về từ phương thức factory Sau đó là công việc của container, nó sẽ đảo ngƣợc sự phụ thuộc đó khi nó tạo bean Do đó nó có tên là Inversion of Control (IoC)
Có hai biến thể chính của DI là: Setter Injection và Constructor Injection
my@email.address
Đoạn code trên tương ứng với đoạn code sau : Person person = new Person(); person.setEmail(“my@email.address”);
Khởi tạo đối tƣợng Person và gán giá trị email cho nó Đƣợc nhận ra bởi phương thức setter trên bean sau khi triệu gọi phương thức khởi tạo không tham số hoặc phương thức static factory không tham số để khởi tạo bean
2.4.5 Constuctor injection Được nhận ra bằng cách triệu gọi một phương thức khởi tạo với một số tham số Một biến thể khác thay thế cho constructor là sử dụng phương thức static factory để trả về thể hiện của đối tƣợng
Trong khi Bean Factory đƣợc sử dụng cho các ứng dụng đơn giản, thì Application Context là một container nâng cao của Spring Giống nhƣ BeanFactory, nó có thể đƣợc sử dụng để load các định nghĩa bean, gắn các bean với nhau và phân phát các bean theo yêu cầu
Có 3 cách sử dụng cài đặt Application Context:
Một số thành phần liên quan
2.4.1 Inversion of Control Container (IoC container)
Hai gói: org.springframework.beans và org.springframework.context cung cấp IoC Container cho Spring framework
Giao tiếp BeanFactory cung cấp kỹ thuật cấu hình nâng cao, có khả năng quản lý các đối tƣợng
Giao tiếp ApplicationContext kế thừa từ BeanFactory và thêm một vài chức năng khác nhƣ tích hợp với đặc tính Spring AOP, truyền sự kiện, application context nhƣ WebApplicationContext sử dụng trong ứng dụng web
Hiệu chỉnh các thành phần (components) của chương trình và quản lý vòng đời (lifecycle) của các đối tƣợng Java
Các đối tƣợng trong ứng dụng đƣợc quản lý bởi IoC container đƣợc gọi là các bean Một bean thì đơn giản là một đối tƣợng đƣợc khởi tạo, phân phát và đƣợc quản lý bởi IoC container Sự phụ thuộc giữa chúng đƣợc phản ánh trong configuration metadata đƣợc sử dụng bởi container
Giao tiếp org.springframework.beans.factory.BeanFactory là IoC container chịu trách nhiệm chứa, khởi tạo, quản lý và móc nối sự phụ thuộc giữa các bean Một cài đặt (kế thừa) của BeanFactory là XmlBeanFactory - nhận XML configuration metadata và sử dụng nó để cấu hình cho ứng dụng
Configuration metadata có định dạng XML (hoặc properties), đƣợc sử dụng để viết các bean definitions cho các bean mà bạn muốn IoC container quản lý Ở mức cơ bản nhất thì cấu hình IoC container phải chứa ít nhất một bean mà container đó phải quản lý Khi sử dụng XML - based configuration metadata, các bean này đƣợc cấu hình nhƣ một hoặc nhiều element bên trong element Các bean này tương ứng với các đối tượng được tạo trong ứng dụng
Kiểm soát ứng dụng, liên kết các đối tƣợng lại với nhau
Tất cả thông tin ứng dụng đƣợc cấu hình trong một file xml do dó dễ dàng thay đổi, mở rộng ứng dụng nhƣ là một kiến trúc plug-in
Là các đối tƣợng định nghĩa sự phụ thuộc của chúng thông qua tham số của phương thức khởi tạo (constructor) hoặc các thuộc tính được thiết lập trên thể hiện (instance) sau khi nó được khởi tạo hoặc trả về từ phương thức factory Sau đó là công việc của container, nó sẽ đảo ngƣợc sự phụ thuộc đó khi nó tạo bean Do đó nó có tên là Inversion of Control (IoC)
Có hai biến thể chính của DI là: Setter Injection và Constructor Injection
my@email.address
Đoạn code trên tương ứng với đoạn code sau : Person person = new Person(); person.setEmail(“my@email.address”);
Khởi tạo đối tƣợng Person và gán giá trị email cho nó Đƣợc nhận ra bởi phương thức setter trên bean sau khi triệu gọi phương thức khởi tạo không tham số hoặc phương thức static factory không tham số để khởi tạo bean
2.4.5 Constuctor injection Được nhận ra bằng cách triệu gọi một phương thức khởi tạo với một số tham số Một biến thể khác thay thế cho constructor là sử dụng phương thức static factory để trả về thể hiện của đối tƣợng
Trong khi Bean Factory đƣợc sử dụng cho các ứng dụng đơn giản, thì Application Context là một container nâng cao của Spring Giống nhƣ BeanFactory, nó có thể đƣợc sử dụng để load các định nghĩa bean, gắn các bean với nhau và phân phát các bean theo yêu cầu
Có 3 cách sử dụng cài đặt Application Context:
Nó load định nghĩa context từ file XML đƣợc đặt trong classpath, xem các định nghĩa context nhƣ các tài nguyên của classpath Application context thì đƣợc load từ classpath của ứng dụng nhƣ sau:
ApplicationContext context new ClassPathXmlApplicationContext("bean.xml"); FileSystemXmlApplicationContext
Nó load định nghĩa context từ file XML trong từ hệ thống file Application Context đƣợc load từ hệ thống file nhƣ sau:
XmlWebApplicationContext nó sẽ load các định nghĩa context từ file XML trong ứng dụng web
2.4.7 Cơ chế xử lý Request-Respone
Cũng giống nhƣ các java-base MVC FrameWork khác Spring MVC cũng phải requests thông qua một front controller servlet Một bộ front controller servlet đại diện duy nhất chịu trách nhiệm về yêu cầu các thành phần khác của một ứng dụng để thực hiện việc xử lý thực tế Trong trường hợp của Spring MVC, DispatcherServlet là bộ điều khiển phía trước
Một Request đƣợc gửi bởi DispatcherServlet đến điều khiển (đƣợc chọn thông qua một bản đồ xử lý) Một khi điều khiển kết thúc, yêu cầu sau đó đƣợc gửi để xem (đó là lựa chọn thông qua ViewResolver) để làm cho đầu ra
2.4.8 Giải thích sơ đồ luồng dữ liệu
Request đƣợc gửi đến DispatcherServlet
DispatcherServlet gửi yêu cầu đến Handler Mapping (Một bản đồ cấu hình URL) để xác định controller nào sẻ xử lý yêu cầu này
DispatcherServlet gửi yêu cầu đến Controller sau khi biết đƣợc Controller nào sẽ xử lý yêu cầu Nếu yêu cầu đó cần truy xuất cơ sở dữ liệu thì Controller sẽ ủy nhiệm cho một business logic hay nhiều hơn một service Objects (MODEL) để lấy thông tin và gửi dữ liệu về cho Controller lúc này Controller đóng gói mô hình dữ liệu và tên của một view sẽ đƣợc tải lên thành đối tƣợng ModelAndView
Gói ModelAndView đƣợc gửi trả về DispatcherServlet
DispatcherServlet gửi gói ModelAndView cho ViewResolver để tìm xem trang web (JSP) nào sẻ đƣợc load lên DispatcherServlet load trang web đó lên cùng với dữ liệu của nó
DispatcherServlet đóng vai trò nhƣ trái tim của Spring MVC Một servlet có chức năng giống nhƣ Spring MVC‟s front controller Giống nhƣ bất kỳ servlet nào, DispatcherServlet phải dƣợc cấu hình trong web.xml file
Theo mặc định, khi DispatcherServlet đƣợc nạp, nó sẽ tải các ứng dụng Spring context từ file XML có tên dựa vào tên của servlet
Trong trường hợp này, vì servlet có tên roadrantz, DispatcherServlet sẽ cố gắng để tải các ứng dụng context từ một file có tên roadrantz-servlet.xml
Sau đó, bạn phải chỉ ra những gì các URL sẽ đƣợc xử lý bởi các DispatcherServlet Thêm sau đây vào web.xml để cho DispatcherServlet xử lý tất cả các URL mà kết thúc bằng “.html”:
roadrantz
*.htm
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
Xác định Actor và vai trò của Actor (trong hệ thống)
Từ mô tả hệ thống ở mục 1.4 chương 1 ta có:
Khách hàng: Tìm hàng, xem hàng, đặt hàng, thanh toán
- đối với khách hàng chỉ ghé thăm web thì không cần tài khoản
- Khách hàng cần đăng nhập trước khi tiến hành thanh toán
- Nếu chƣa có tài khoản thì khách hàng có thể đăng ký một tài khoản mới và tiếp tục đăng nhập để tiếp tục thanh toán hàng đã có trong giỏ hàng
Nhân viên: Cần đăng nhập trước, kiểm tra thông tin khách hàng, quản lý việc thanh toán cho khách hàng, quản lý khách hàng và thống kê hàng hóa
- Thống kê hàng hóa: thống kê hàng tồn, thống kê danh số hàng hóa
Admin: Admin có đầy đủ các chức năng của nhân viên và có thêm các chức năng khác nhƣ:
- Quản lý nhà cung cấp
- Quản lý tài khoản (Nhân viên)
Sơ đồ Use Case
Hình 3: Sơ đồ Use Case
23 Đặt tả các Use Case có trong hệ thống
Tác nhân ch nh: nhân viên quản lý
B1: Chọn chức năng đăng nhập vào hệ thống
B2: Hệ thống hiển thị form đăng nhập và yêu cầu quản lý nhập usename và password
B3: Quản lý nhập usename và password sau đó nhấn đăng nhập
B4: Hệ thống kiểm tra thông tin quản lý vừa nhập và xác nhận thông tin hợp lệ
- Nếu sai thì quay lại B3
- Nếu đúng thì tiến hành B5
B5: Hệ thống thông báo đăng nhập thành công
B6: Quản lý thoát khỏi chức năng đăng nhập
R1.2: Chọn chức năng đăng nhập
R1.3: Nhập user và password vào nhấn đăng nhập
R1.4: Cơ sở dữ liệu kiểm tra thông tin đăng nhập hợp lệ hay không
R1.4.1: Nếu thông tin đúng, hệ thống thông báo đăng nhập thành công
R1.4.2: Nếu sai, hệ thông báo đăng nhập lỗi và yêu cầu nhập lại
R1.5: Quản lý làm việc với hệ thống
Chức năng quản lý sản phẩm:
B2: Xem danh sách sản phẩm
B3: Chỉnh sửa: thêm hàng hóa, sửa hàng hóa, xóa hàng hóa
B4: Đăng xuất khỏi hệ thống
R3.1: Quản lý khởi động hệ thống
R3.2: Quản lý yêu cầu khung đăng nhập
R3.3: Quản lý nhập user và password vào khung đăng nhập
R3.4: Cơ sở dữ liệu kiểm tra thông tin đăng nhập hợp lệ hay không
R3.4.1: Nếu thông tin đúng, hệ thống thông báo đăng nhập thành công R3.4.2: Nếu sai, hệ thông báo đăng nhập lỗi và yêu cầu nhập lại
R3.6: Quản lý khởi động giao diện chỉnh sửa và làm việc
R3.7: Cơ sở dữ liệu lưu thông tin đã chỉnh sửa
R3.8: Hệ thống thông báo cập nhật dữ liệu thành công
Chức năng quản lý tài khoản:
B2: Xem danh sách tài khoản
B3: Chỉnh sửa: thêm tài khoản, sửa tài khoản, xóa tài khoản, phần quyền sử dụng, phân vai trò tài khoản
B4: Đăng xuất khỏi hệ thống
R3.1: Quản lý khởi động hệ thống
R3.2: Quản lý yêu cầu khung đăng nhập
R4.3: Quản lý nhập user và password vào khung đăng nhập
R4.4: Cơ sở dữ liệu kiểm tra thông tin đăng nhập hợp lệ hay không
R4.4.1: Nếu thông tin đúng, hệ thống thông báo đăng nhập thành công R4.4.2: Nếu sai, hệ thông báo đăng nhập lỗi và yêu cầu nhập lại
R4.6: Quản lý khởi động giao diện chỉnh sửa và làm việc
R4.7: Cơ sở dữ liệu lưu thông tin đã chỉnh sửa
R4.8: Hệ thống thông báo cập nhật dữ liệu thành công
B2: Xem danh sách hàng hóa
B3: Thống kê: thống kê hàng hóa: theo loại, theo hãng, thống kê doanh số: theo từng mặt hàng, theo từng hãng, theo từng khách hàng, theo từng năm, theo từng quí, theo từng tháng
B4: Đăng xuất khỏi hệ thống
R5.1: Quản lý khởi động hệ thống
R5.2: Quản lý yêu cầu khung đăng nhập
R5.3: Quản lý nhập user và password vào khung đăng nhập
R5.4: Cơ sở dữ liệu kiểm tra thông tin đăng nhập hợp lệ hay không
R5.4.1: Nếu thông tin đúng, hệ thống thông báo đăng nhập thành công R5.4.2: Nếu sai, hệ thông báo đăng nhập lỗi và yêu cầu nhập lại
R5.5: Cơ sở dữ liệu lưu thông tin đăng nhập
R5.7: Quản lý khởi động giao diện thống kê và làm việc
Chức năng quản lý khách hàng
B2: Xem danh sách khách hàng
B3: Chỉnh sửa: thêm khách hàng, sửa chi tiết thông tin khách hàng, xóa thông tin khách hàng
B4: Đăng xuất khỏi hệ thống
R6.1: Quản lý khởi động hệ thống
R6.2: Quản lý yêu cầu khung đăng nhập
R6.3: Quản lý nhập user và password vào khung đăng nhập
R6.4: Cơ sở dữ liệu kiểm tra thông tin đăng nhập hợp lệ hay không?
R6.4.1: Nếu thông tin đúng, hệ thống thông báo đăng nhập thành công R6.4.2: Nếu sai, hệ thông báo đăng nhập lỗi và yêu cầu nhập lại
R6.6: Quản lý khởi động giao diện chỉnh sửa và làm việc
R6.6.1: Xem thông tin khách hàng
R6.6.2: Sửa thông tin khách hàng
R6.7: Cơ sở dữ liệu lưu thông tin đã chỉnh sửa
R6.8: Hệ thống thông báo cập nhật dữ liệu thành công
Tác nhân ch nh: Nhân viên
B1: Chọn chức năng đăng nhập vào hệ thống
B2: Hệ thống hiển thị form đăng nhập và yêu cầu nhân viên nhập usename và password
B3: Nhân viên nhập usename và password sau đó nhấn đăng nhập
B4: Hệ thống kiểm tra thông tin quản lý vừa nhập và xác nhận thông tin hợp lệ
- Nếu sai thì quay lại B3
- Nếu đúng thì tiến hành B5
B5: Hệ thống thông báo đăng nhập thành công
B6: Nhân viên thoát khỏi chức năng đăng nhập
R1.2: Chọn chức năng đăng nhập
R1.3: Nhập user và password vào nhấn đăng nhập
R1.4: Cơ sở dữ liệu kiểm tra thông tin đăng nhập hợp lệ hay không
R1.4.1: Nếu thông tin đúng, hệ thống thông báo đăng nhập thành công
R1.4.2: Nếu sai, hệ thông báo đăng nhập lỗi và yêu cầu nhập lại
R1.5: Quản lý làm việc với hệ thống
Chức năng quản lý sản phẩm:
B2: Xem danh sách sản phẩm
B3: Chỉnh sửa: thêm hàng hóa
B4: Đăng xuất khỏi hệ thống
R3.1: Nhân viên khởi động hệ thống
R3.2: Nhân viên yêu cầu khung đăng nhập
R3.3: Nhân viên nhập user và password vào khung đăng nhập
R3.4: Cơ sở dữ liệu kiểm tra thông tin đăng nhập hợp lệ hay không
R3.4.1: Nếu thông tin đúng, hệ thống thông báo đăng nhập thành công R3.4.2: Nếu sai, hệ thông báo đăng nhập lỗi và yêu cầu nhập lại
R3.6: Nhân viên khởi động giao diện chỉnh sửa và làm việc
R3.7: Cơ sở dữ liệu lưu thông tin đã chỉnh sửa
R3.8: Hệ thống thông báo cập nhật dữ liệu thành công
B2: Xem danh sách hàng hóa
B3: Thống kê: thống kê hàng hóa: theo loại, theo hãng, thống kê doanh số: theo từng mặt hàng, theo từng hãng, theo từng khách hàng, theo từng năm, theo từng quí, theo từng tháng
B4: Đăng xuất khỏi hệ thống
R5.1: Nhân viên khởi động hệ thống
R5.2: Nhân viên yêu cầu khung đăng nhập
R5.3: Nhân viên nhập user và password vào khung đăng nhập
R5.4: Cơ sở dữ liệu kiểm tra thông tin đăng nhập hợp lệ hay không
R5.4.1: Nếu thông tin đúng, hệ thống thông báo đăng nhập thành công R5.4.2: Nếu sai, hệ thông báo đăng nhập lỗi và yêu cầu nhập lại
R5.5: Cơ sở dữ liệu lưu thông tin đăng nhập
R5.7: Nhân viên khởi động giao diện thống kê và làm việc
Chức năng quản lý khách hàng
B2: Xem danh sách khách hàng
B3: Chỉnh sửa: thêm khách hàng, sửa chi tiết thông tin khách hàng, xóa thông tin khách hàng
B4: Đăng xuất khỏi hệ thống
R6.1: Nhân viên khởi động hệ thống
R6.2: Nhân viên yêu cầu khung đăng nhập
R6.3: Nhân viên nhập user và password vào khung đăng nhập
R6.4: Cơ sở dữ liệu kiểm tra thông tin đăng nhập hợp lệ hay không?
R6.4.1: Nếu thông tin đúng, hệ thống thông báo đăng nhập thành công R6.4.2: Nếu sai, hệ thông báo đăng nhập lỗi và yêu cầu nhập lại
R6.6: Nhân viên khởi động giao diện chỉnh sửa và làm việc
R6.6.1: Xem thông tin khách hàng
R6.6.2: Sửa thông tin khách hàng
R6.7: Cơ sở dữ liệu lưu thông tin đã chỉnh sửa
R6.8: Hệ thống thông báo cập nhật dữ liệu thành công
Tác nhân chính: Khách hàng
B1: Khách hàng truy cập vào hệ thống
B2: Khách hàng tìm kiếm hàng hóa cần tìm
B3: Khách hàng xem thông tin chi tiết hàng hóa
B4: Khách hàng đặt mua hàng hóa
B5: Khách hàng kiểm tra hàng trong giỏ hàng
B6: Khách hàng thêm, xóa, sửa hàng hóa trong giỏ hàng
B7: Khách hàng tiến hành đăng nhập vào hệ thống để tiếp tục đặt hàng
B8: Khách hàng nhập thông tin đặt hàng
B9: Khách hàng tiến hành đặt hàng
R2.1: Bắt đầu làm việc với hệ thống
R2.3: Xem thông tin chi tiết sản phẩm
R2.4: Chọn và Thêm sản phẩm vào giỏ hàng
R2.5: Thêm, sửa, xóa sản phẩm có trong giỏ hàng
R2.6: Xem thông tin trong giỏ hàng
R2.7: Chỉnh sửa thông tin trong giỏ hàng
R2.8: Xác nhận thông tin trong giỏ hàng
R2.9: Đăng nhập vào hệ thống để tiến hành đặt hàng
R2.10: Hệ thống kiểm tra xem khách hàng đã có tài khoản hay chƣa
R2.10.1: Nếu chƣa có tài khoản thì tiến hàng đăng ký tài khoản R2.10.2: Nếu đã có tài khoản thì tiến hành R2.11
R2.11 Khách hàng tiến hành nhập thông tin để mua hàng
R2.12: Cơ sở dữ liệu lưu thông tin giỏ hàng cùng với thông tin khách hàng R2.13: Thông báo đặt hàng thành công.
Biểu đồ tuần tự
3.3.1 Biểu đồ tuần tự “đăng nhập”
Hình 4: Biểu đồ tuần tự “đăng nhập”
Biểu đồ tuần tự “quản lý hàng hóa”
Hình 5: Biểu đồ tuần tự “quản lý hàng hóa”
3.3.2 Biểu đồ tuần tự “Mua bán hàng hóa”
Hình 6: Biểu đồ tuần tự mua bán hàng hóa
3.3.3 Biểu đồ “Quản lý nhân viên”
Hình 7: Biểu đồ tuần tự quản lý nhân viên
3.3.4 Biểu đồ tuần tự báo cáo thống kê
Hình 8: Biểu đồ tuần tự báo cáo thống kê
3.3.5 Biểu đồ tuần tự “Thanh toán đơn hàng”
Hình 9: Biểu đồ tuần tự thanh toán đơn hàng
3.3.6 Biểu đồ tuần tự “Quản lý khách hàng”
Hình 10: Biểu đồ tuần tự quản lý khách hàng
Sơ đồ hoạt động
3.4.1 Đặc tả sơ đồ hoạt động đăng nhập
Hình 11: Sơ đồ hoạt động đăng nhập
* Đặc tả quy trình hoạt động đăng nhập:
- Người dùng gởi yêu cầu để đăng nhập hệ thống
- Hệ thống kiểm tra thông tin đăng nhập nếu đúng hệ thống lưu lại tài khoản chấp nhận thông tin nếu sai yêu cầu tác nhân thực hiện nhập lại thông tin
+ Nếu người dùng không thực hiện nhập lại thông tin thì kết thúc tiến trình
3.4.2 Đặc tả sơ đồ hoạt động đăng ký
Hình 12: Sơ đồ hoạt động đăng ký
* Đặc tả quy trình hoạt động đăng ký:
- Người dùng yêu cầu đăng ký tài khoản
- Hệ thống sẽ yêu cầu người dùng cung cấp thông tin để tạo một tài khoản mới
- Sau khi tác nhân bấm đăng ký, hệ thống kiểm tra thông tin và trả lại kết quả thành công nếu hợp lệ và yêu cầu nhập lại nếu có lỗi
+ Nếu không thực hiện đăng ký tiếp thì kết thúc tiến trình
3.4.3 Đặc tả sơ đồ hoạt động đặt hàng
Hình 13: Sơ đồ hoạt động đặt hàng
* Đặc tả quy trình hoạt động đặt hàng
- Người dùng yêu cầu đặt hàng
- Hệ thống sẽ hiển thị giao diện đặt hàng
- Sau đó hệ thống yêu cầu người dùng nhập thông tin đặt hàng
- Tác nhân cung cấp thông tin hệ thống kiểm tra nếu giỏ hàng trống yêu cầu chọn hàng
+ Nếu tác nhân đã chọn hàng thực hiện lại đặt hàng hệ thống kiểm tra thông tin đặt hàng nếu đúng thông báo thành công và kết thúc tiến trình nếu lỗi yêu cầu nhập lại
+ Nếu tác nhân hủy bỏ thao tác thì kết thúc tiến trình
3.4.4 Đặc tả sơ đồ hoạt động tìm kiếm
Hình 14: Sơ đồ hoạt động tìm kiếm
* Đặc tả quy trình hoạt động tìm kiếm:
- Người dùng yêu cầu tìm sản phẩm
- Lúc này tác nhân sẽ tương tác việc tìm kiếm thông qua giao diện của hệ thống
- Hệ thống hiển thị giao diện tìm kiếm và yêu cầu tác nhân nhập thông tin muốn tìm kiếm
- Việc tìm kiếm đƣợc thực hiện Hệ thống căn cứ vào từ khóa tìm kiếm của tác nhân để thao tác trong cơ sở dữ liệu
- Kết quả trả ra theo yêu cầu tìm kiếm của tác nhân qua giao diện
- Kết thúc quy trình kiếm kiếm
3.4.5 Đặc tả sơ đồ hoạt động quản lý thêm mới của admin
Hình 15: Sơ đồ hoạt động thêm mới của admin
* Đặc tả quy trình hoạt động thêm mới của admin
- Tác nhân yêu cầu thêm mới
- Hệ thống sẽ hiển thị giao diện thêm mới
- Sau đó hệ thống yêu cầu người dùng nhập thông tin cần thêm
- Tác nhân cung cấp thông tin hệ thống kiểm tra nếu thông tin đúng thực hiện lưu mới dữ liệu, hiển thị lại dữ liệu Nếu lỗi hệ thống yêu cầu nhập lại
+ Nếu tác nhân thực hiện nhập lại đúng hệ thống lưu mới dữ liệu và thông báo thành công kết thúc tiến trình
+ Nếu tác nhân hủy bỏ thao tác thì kết thúc tiến trình
3.4.6 Đặc tả sơ đồ hoạt động quản lý xóa của admin
Hình 16: Sơ đồ hoạt động xóa của admin
* Đặc tả quy trình hoạt động xóa của admin
- Tác nhân yêu cầu xóa
- Hệ thống sẽ hiển thị giao diện xóa dữ liệu
- Sau đó hệ thống yêu cầu chọn dữ liệu cần xóa bỏ
- Tác nhân cung cấp thông tin hệ thống kiểm tra nếu thông tin đúng thực hiện xóa bỏ dữ liệu, hiển thị lại dữ liệu Nếu lỗi hệ thống yêu cầu thực hiện lại
+ Nếu tác nhân thực hiện lại đúng hệ thống xóa dữ liệu và thông báo thành công kết thúc tiến trình
+ Nếu tác nhân hủy bỏ thao tác thì kết thúc tiến trình
3.4.7 Đặc tả sơ đồ hoạt động quản lý sửa của admin
Hình 17: Sơ đồ hoạt động sửa của admin
* Đặc tả quy trình hoạt động sửa của admin
- Tác nhân yêu cầu sửa đổi
- Hệ thống sẽ hiển thị giao diện sửa đổi
- Sau đó hệ thống yêu cầu người dùng nhập thông tin cần thay đổi
- Tác nhân cung cấp thông tin hệ thống kiểm tra nếu thông tin đúng thực hiện lưu dữ liệu, hiển thị lại dữ liệu Nếu lỗi hệ thống yêu cầu nhập lại
+ Nếu tác nhân thực hiện nhập lại đúng hệ thống lưu dữ liệu và thông báo thành công kết thúc tiến trình
+ Nếu tác nhân hủy bỏ thao tác thì kết thúc tiến trình.
Đặc tả cơ sở dữ liệu
Dựa vào bảng phân tích thiết kế hệ thống đã xây dựng thì các bảng trong cơ sở dữ liệu chính nhƣ sau:
UserRole(Id, UserId, RoleId, Allow)
Permission(Id, RoleId, ActionId, Allow)
Customers(Id, Password, Fullname, Email, Photo, Activated)
Orders(Id, CustomerId, OrderDate, RequireDate, Receiver, Address, Description, Amount)
OrderDetails(Id, OrderId, ProductId, UnitPrice, Quantity, Discount)
Product(Id, Name, UnitBrief, UnitPrice, Image, ProductDate, Available, Description, CategoryId, SupplierId, Quantity, Discount, Special, Latest, Views)
Suppliers(Id, Name, Logo, Email, Phone)
3.5.2 Thiết kế cơ sở dữ liệu
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
Id nvarchar(50) Khóa chính, không đƣợc phép rỗng
Password nvarchar(50) Không đƣợc phép rỗng Mật khẩu
Email nvarchar(50) Không đƣợc phép rỗng Email
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
Id int Khóa chính, không đƣợc phép rỗng
UserId nvarchar(50) Khóa ngoại, Không đƣợc phép rỗng
RoleId nvarchar(50) Không đƣợc phép rỗng Mã vai trò
Allow bit Không đƣợc phép rỗng Cho phép
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
Id nvarchar(50) Khóa chính, không đƣợc phép rỗng
Name nvarchar(50) Không đƣợc phép rỗng Tên vai trò
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
Id int Khóa chính, không đƣợc phép rỗng Mã giấy phép
RoleId nvarchar(50) Khóa ngoại, Không đƣợc phép rỗng Mã vai trò ActionId int Khóa ngoại, Không đƣợc phép rỗng Mã hoạt động
Allow bit Không đƣợc phép rỗng Cho phép
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
Id int Khóa chính, không đƣợc phép rỗng
Name nvarchar(50) Không đƣợc phép rỗng Tên
Description nvarchar(50) Không đƣợc phép rỗng Mô tả
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
Id nvarchar(20) Khóa chính, không đƣợc phép rỗng
Password nvarchar(50) Không đƣợc phép rỗng Mật khẩu Fullname nvarchar(50) Không đƣợc phép rỗng Tên đầy đủ
Email nvarchar(50) Không đƣợc phép rỗng Email
Photo nvarchar(50) Không đƣợc phép rỗng Ảnh
Activated bit Không đƣợc phép rỗng Kích hoạt
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
Id int Khóa chính, không đƣợc phép rỗng
CustomerId nvarchar(20) Khóa ngoại, không đƣợc phép rỗng
OrderDate datetime Không đƣợc phép rỗng Ngày đặt hàng RequireDate datetime Không đƣợc phép rỗng Ngày yêu cầu Receiver nvarchar(50) Không được phép rỗng Người nhận Address nvarchar(60) Không đƣợc phép rỗng Địa chỉ nhà Description nvarchar(1000) Đƣợc phép rỗng Mô tả
Amount float Không đƣợc phép rỗng
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
Id int Khóa chính, không đƣợc phép rỗng
Mã chi tiết đơn hàng
OrderId int Khóa ngoại, không đƣợc phép rỗng
ProductId int Khóa ngoại, Không đƣợc phép rỗng
UnitPrice float Không đƣợc phép rỗng Đơn giá
Quantity int Không đƣợc phép rỗng Số lƣợng
Discount float Không đƣợc phép rỗng Giảm giá
Kiểu dữ liệu Ràng buộc Mô tả
Id int Khóa chính, không đƣợc phép rỗng
Name nvarchar(40) Không đƣợc phép rỗng Tên sản phẩm UnitBrief nvarchar(50) Không đƣợc phép rỗng Đơn vị
UnitPrice float Không đƣợc phép rỗng Đơn giá
Image nvarchar(50) Không đƣợc phép rỗng Hình ảnh
ProductDat e datetime Không đƣợc phép rỗng Ngày sản xuất
Available bit Không đƣợc phép rỗng Có sẵn
Description nvarchar(2000) Đƣợc phép rỗng Mô tả
CategoryId int Khóa ngoại, không đƣợc phép rỗng
SupplierId nvarchar(50) Khóa ngoại, không đƣợc phép rỗng
Quantity int Không đƣợc phép rỗng Số lƣợng
Discount float Không đƣợc phép rỗng Giảm giá
Special bit Không đƣợc phép rỗng Sản phẩm đặt biệt
Latest bit Không đƣợc phép rỗng Muộn nhất
Views int Không đƣợc phép rỗng Số lƣợt xem
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
Id nvarchar(50) Khóa chính, không đƣợc phép rỗng
Name nvarchar(50) Không đƣợc phép rỗng Tên nhà cung cấp
Logo nvarchar(50) Không đƣợc phép rỗng Logo
Email nvarchar(50) Không đƣợc phép rỗng Email nhà cung cấp Phone nvarchar(50) Không đƣợc phép rỗng Số điện thọa
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
Id int Khóa chính, không đƣợc phép rỗng
NameVN nvarchar(50) Không đƣợc phép rỗng Tên Việt Nam Name nvarchar(50) Không đƣợc phép rỗng Tên tiếng anh
3.5.2.2 Mô hình quan hệ m c v t lý
Từ việc đặc tả dữ liệu thì ta có mô hình quan hệ mức vật lý giữa các bảng nhƣ sau:
Hình 19: Mô hình quan hệ mức vật lý
DEMO VÀ HƯỚNG DẪN CÀI ĐẶT CHƯƠNG TRÌNH
Cài đặt chương trình
- Tạo CSDL bằng scripts Database/BaiTapBanHangDienTu.sql
- Chép EShopV20.war vào thƣ mục webapps của tomcat 7
Giới thiệu trang web
4.2.1 Phần dành cho người sử dụng
Khách hàng vào website có thể thực hiện các công việc chính nhƣ sau:
Quản lý thông tin cá nhân
Các chương trình khuyến mãi được hiển thị dưới sạng slideshow
6 sản phẩm hot đang đƣợc giảm giá nhiều nhất
Nhấp vào sản phẩm để xem chi tiết hàng hóa
Bấm „xem thêm‟ để hiển thị danh sách hàng hóa đang đƣợc ƣu đãi giảm giá
Hình 22: Sản phẩm Mỗi trang gồm có 12 sản phẩm chia làm 4 hàng, mỗi hàng 3 sản phẩm
Thông tin sản phẩm bao gồm:
Tên: đỉnh mỗi sản phẩm
Giá: góc dưới bên trái Đặc điểm: góc trên bên phải (mới, giảm giá, hàng đặc biệt)
Hành động với mỗi sản phẩm
Nhấp hình để xem thông tin chi tiết
Nhấp biểu tƣợng giỏ hàng để chọn hàng
Nhấp biểu tượng bì thư để gửi thông tin hàng hóa cho bạn bè/người thân
Nhấp biểu tƣợng trái tim để đánh dấu hàng yêu thích
Hình 23: Footer Footer bao gồm logo, thông tin công ty, thông tin chăm sóc khách hàng và đường liên kết tới các trang mạng xã hội
Thông tin nhanh về giỏ hàng:
Hình 24: Xem nhanh Giỏ hàng Phần tìm kiếm sản phẩm:
4.2.1.3 Thông tin chi tiết hàng hóa
Hình 26: Chi tiết hàng hóa
Vị trí: nằm ở bên phải màn hình
Chức năng: phân loại sản phẩm theo các tiêu chí khác nhau tùy theo nhu cầu của khách hàng
+ Cặp nút di chuyển lên – xuống màn hình
Vị trí: nằm ở bên phải, góc dưới hàn hình
Chức năng: di chuyển nhanh lên hoặc xuống top – bottom
Hình 27: Chi tiết sản phẩm Phía dưới thông tin chi tiết hàng hóa là các mặt hàng cùng loại, các mặt hàng đã xem, form nhập cho phép khách hàng gửi thông tin mặt hàng này cho bạn bè hoặc người thân của khách hàng đang cần có
Hình 28: Các mặt hàng lên quan và gởi hàng cho bạn Trong phần chi tiết hàng hóa này, khách hàng có thể rê chuột lên ảnh để xem ảnh với kích thước lớn hơn
4.2.1.4 Sản phẩm yêu th ch
Khi click vào biểu tƣợng , sản phẩm đó sẽ đƣợc them vào mục „Hàng yêu thích‟
Hình 30: Sản phẩm yêu thích
Bạn có thể chọn hàng từ danh sách hàng hóa hoặc trang chi tiết sản phẩm bằng cách nhấp vào biểu tƣợng giỏ hàng
Khách hàng có thể quan sát sự thay đổi thông tin hàng hóa trong giỏ
Quá trình tìm kiếm và chọn hàng làm tích lũy các mặt hàng trong giỏ Trang này cho phép bạn quản lý thông tin giỏ hàng của mình
Hình 32: Quản lý giỏ hàng
Mục quản lý giỏ hàng cho phép bạn:
Xem thông tin các mặt hàng đã thêm vào giỏ
Xóa mặt hàng đã chọn
Nhấp biểu tƣợng xóa khỏi giỏ ( ) cuối mỗi hàng để xóa mặt hàng đó khỏi giỏ hàng
Nhấp nút để xóa toàn bộ giỏ hàng
Nhấp nút để cập nhật sự thay đổi số lƣợng các mặt hàng
Nhấp để trở lại danh sách hàng hóa và chọn thêm hàng
Nhấp nút để chuyển sang trang thanh toán
4.2.1.7 Quản lý tài khoản Để mua hàng bạn phải đăng nhập Để đăng nhập bạn phải đăng ký và kích hoạt tài khoản Nếu quên mật khẩu bạn có thể tìm lại mật khẩu của mình Đăng ký thành viên
Hình 33: Đăng ký thành viên
Trường hợp bạn nhập dữ liệu không hợp lệ: lỗi tương ứng sẽ được thông báo ngay tại vị trí đó:
Hình 34: Đăng ký thành viên sai Đăng nhập
Sau khi đăng ký và kích hoạt tài khoản, bạn có thể đăng nhập để mua hàng
Hình 35: Menu khi chƣa đăng nhập và đã đăng nhập thành công Hộp thoại đăng nhập
Hình 36: Hộp thoại đăng nhập Quên mật khẩu
Trong trường hợp quên mật khẩu, bạn có thể nhờ hệ thống lấy lại mật khẩu của mình bằng cách bấm vào dòng „Quên mật khẩu‟
Hình 37:Hộp thoại quên mật khẩu
Sau khi đăng nhập bạn có thể đặt mua hàng Bạn chỉ cần cung cấp đầy đủ thông tin trên form đặt hàng sau đây thì có thể đặt hàng
Hình 38:Đặt mua hàng Phía dưới bạn sẽ thấy các mặt hàng đã chọn trong giỏ
Nếu đặt hàng thành công bạn sẽ nhận đƣợc 1 đơn hàng trong phần thông tin riêng tƣ của mình Thông tin này sẽ vẫn đƣợc giữ lại ở lần đăng nhập sau này trong phần „Đơn Đặt Hàng‟
Hình 40: Danh sách đơn hàng
4.2.1.9 Quản lý thông tin riêng tƣ
Nhƣ bạn đã thấy ở trên, sau khi đăng nhập menu Tài khoản sẽ bị thay đổi để bạn có thể quản lý các thông tin cá nhân của mình
Tài khoản cá nhân: quản lý thông tin cá nhân
Đơn đặt hàng: quản lý các đơn hàng đã đặt trước đó
Hàng đã mua: các mặt hàng đã chọn mua trên các đơn hàng đã đặt
Hộp thoại đổi mật khẩu
Trang quản lý thông tin cá nhân
Hình 42: Cập nhật hồ sơ Trang quản lý đơn hàng
Hình 43: Quản lý đơn hàng Bấm chi tiết để xem chi tiết đơn hàng
Hình 44: Thông tin đơn hàng Trang danh sách các mặt hàng đã mua :
Bạn có thể xem lại các mặt hàng đã mua trước đó mà không cần phải tìm kiếm lại
Hình 45: Danh sách các đơn hàng đã mua
4.2.1.10 Một số chức năng khác
Website còn rất nhiều phần phụ khác Sau đây là các thành phần cần lưu ý thêm
Trang liên hệ: xem thông tin liên hệ qua bản đồ Google
Trang góp ý : thu thập ý kiến khách hàng
Đa ngôn ngữ: chọn ngôn ngữ anh-việt
Hiệu ứng chọn hàng và xóa hàng khỏi giỏ
Hình 47: Góp ý Đa ngôn ngữ
Website đƣợc xây dựng hỗ trợ đa ngôn ngữ (Anh và Việt) Bạn dễ dàng nhận thấy sự thay đổi ngôn ngữ khi nhấp vào ngôn ngữ ở góc trên bên phải của trang web bất kỳ
Ngôn ngữ đƣợc chọn: Tiếng Việt
Ngôn ngữ đƣợc chọn: Tiếng Anh
Hiệu ứng chọn hàng và xóa hàng khỏi giỏ
Khi chọn hàng, bạn sẽ thấy mặt hàng tự bay vào giỏ và sau đó giỏ hàng sẽ rung lên tạo cảm giác dễ chịu cho khách mua hàng Tương tự khi bạn xóa mặt hàng khỏi giỏ, bạn sẽ thấy sự biến mất ngoạn mục của mặt hàng bị xóa Các hộp thoại đƣợc sử dụng trong website điều có sử dụng hiệu ứng xuất hiện và biến mật theo kiểu explode
4.2.2 Phần dành cho nhà quản trị - Administration Tool
Các trang web trong phần quản trị chỉ để dành cho những người quản trị website Phần việc chính các các trang web này là:
Quản lý CSDL: xem, thêm, xóa, sửa thông tin về hàng hóa, loại sản phẩm, nhà cung cấp, hóa đơn, khách hàng…
Kiểm kê hàng tồn kho
Thống kê doanh số bán hàng
Phân quyền sử dụng: admin đƣợc toàn quyền còn user sẽ đƣợc phân chi tiết cho từng trang Địa chỉ truy cập: http://localhost:8080/EShopV20/admin
Hình 48: Login admin Tất cả các trang trong phần quản trị đều phải đăng nhập mới thực hiện đƣợc Để test bạn sử dụng các tài khoản test sau đây:
Quản lý nhà cung cấp
Mỗi trang đƣợc đƣợc bố trí theo một khung mẫu chung gồm 2 tab là “Cập nhật” và “Danh sách”
Tab “Cập nhật” sử dụng để
Xem thông tin chi tiết
Tab “Danh sách” dùng để liệt kê danh sách
Tìm kiếm (Chƣa có sẵn ở version này, có thể dùng tổ hợp phím Ctrl+F để tìm) Đây là hình minh họa trang quản lý hàng hóa gồm 2 tab là Danh sách và Sửa đổi
Hình 49: Quản lý hàng hóa
Hình 50: Danh sách hàng hóa
4.2.2.2 Thống kê doanh số bán hàng
Doanh số bán hàng có thể đƣợc thống kê theo một số tiêu chuẩn sau
Thời gian: tháng, quí và năm
Mặc định hệ thống sẽ thống kê theo tất cả các dữ liệu hiện có trong CSDL Để giới hạn khoảng thời gian cần thống kê, người quản trị có thể chọn giá trị vào 2 ô nhập là và
Hình 52: Chọn thời gian thống kê Sau khi chọn khoảng thời gian và filter, dữ liệu thống kê sẽ đƣợc hiển thị theo danh sách, đi kèm là 1 biểu đồ thống kê bằng hình ảnh :
Hình 53: Kết quả thống kê
4.2.2.3 Kiểm tra hàng tồn kho
Chức năng này cho phép người bán theo dõi được số lượng hàng còn trong kho dựa trên CSDL, từ đó sẽ có chính sách ƣu đãi cho các mặt hàng còn tồn kho nhiều và nhập thêm các mặt hàng sắp bán hết
Kiểm kê hàng tồn đƣợc phần làm 2 tiêu chí :
+ Kiểm hàng tồn theo loại
+ Kiểm hàng tồn theo hãng
Trong phần quản trị, nếu bạn đăng nhập với vai trò là Administrator thì sẽ đƣợc toàn quyền thực hiện các chức năng bên trong phần quản trị
Ngƣợc lại (bạn đăng nhập với quyền User) quyền hạn của bạn sẽ phụ thuộc vào sự phân quyền của người Administrator Các chức năng không được phép vẫn sẽ được hiển thị nhƣng lỗi sẽ báo nếu nhƣ bạn thao tác trên những chức năng bị giới hạn đó
Giao diện quản lý tài khoản admin
Hình 54: Phân quyền Giao diện quản lý vai trò
Hình 55: quản lý vai trò Giao diện phân vai trò
Giao diện phân quyền sử dụng
Hình 57: Phân quyền sử dụng