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à
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 2019 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 làm đồ án tốt nghiệp, cô dành nhiều thời gian quý báu để bận tình hƣớng dẫn, định hƣớng cho em việc nghiên cứu thực đề tài Trên thực tế thành cơng mà khơng gắn liền với hỗ trợ, giúp đỡ dù 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 đề tài khóa luận mình, tơi ln nhận đƣợc quan tâm hƣớng dẫn, bảo tận tình giáo, Th.S Nguyễn Thị Minh Châu để hồn thành tốt báo cáo thực Tôi xin gửi đến cô lời cảm ơn chân thành sâu sắc nhất! Tôi 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 suốt bốn năm học trƣờng Với vốn kiến thức đƣợc tiếp thu q trình học tập khơng tảng cho q trình nghiên cứu khóa luận mà cịn hành trang quý báu để bƣớc vào đời cách vững tự tin Tôi thầm biết ơn ủng hộ gia đình, bạn bè ngƣời thân yêu chỗ dựa tinh thần vững cho Và xin chân thành cảm ơn quý thầy cô trƣờng Đại học Quảng Nam tạo điều kiện thuận lợi trình rèn luyện học tập trƣờng Trong trình thực đề tài, kiến thức thời gian cịn hạn chế nên khơng tránh khỏi sai sót Vì em mong q thầy, thơng cảm góp ý để em hồn thiện đề tài Những lời góp ý giúp em tránh đƣợc sai lầm sau Cuối cùng, tơi xin kính chúc q thầy, gia đình dồi sức khỏe thành công nghiệp trồng ngƣời cao quý Em xin chân thành cảm ơn! Tam Kỳ, ngày 19 tháng năm 2019 Sinh viên thực Võ Văn Hiệp MỤC LỤC LỜI CẢM ƠN .1 PHẦN MỞ ĐẦU 1.1 Lý chọn đề tài 1.2 Mục tiêu đề tài .2 1.3 Đối tƣợng phạm vi nghiên cứu 1.4 Phƣơng pháp nghiên cứu .2 1.5 Cấu trúc đề tài PHẦN 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 1.1 Tổng quan thƣơng mại điện tử 1.1.1 Khái niệm thương mại điện tử (TMĐT) 1.1.2 Lợi ích việc sử dụng thương mại điện tử 1.2 Tổng quan ngôn ngữ java 1.2.1 Nguồn gốc ngôn ngữ java 1.2.2 Đặc điểm ngôn ngữ java 1.2.3 Ưu điểm ngôn ngữ java 1.2.4 Hoạt động website viết java .6 1.3 Tổng quan SQLServer Tomcat 1.3.1 Tổng quan SQLServer 1.3.2 Các thành phần SQL Server 1.3.3 Giới thiệu Tomcat 1.4 Mô tả hệ thống bán hàng điện tử dân dụng 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 12 2.1.3 Lý sử dụng Spring 14 2.2 Spring MVC 14 2.2.1 Mơ hình MVC 14 2.3 Ƣu điểm 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 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 liệu Spring MVC .21 CHƢƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 22 3.1 Xác định Actor vai trò Actor (trong hệ thống) .22 3.2 Sơ đồ Use Case 22 3.3 Biểu đồ 29 3.3.1 Biểu đồ “đăng nhập” .29 Biểu đồ “quản lý hàng hóa” 30 3.3.2 Biểu đồ “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 đồ báo cáo thống kê 31 3.3.5 Biểu đồ “Thanh toán đơn hàng” 32 3.3.6 Biểu đồ “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 admin 35 3.4.6 Đặc tả sơ đồ hoạt động quản lý xóa admin 36 3.4.7 Đặc tả sơ đồ hoạt động quản lý sửa admin 37 3.5 Đặc tả sở liệu .37 3.5.1 Sơ đồ lớp .38 3.5.2 Thiết kế sở 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 KẾT LUẬN VÀ KIẾN NGHỊ 63 Phần TÀI LIỆU THAM KHẢO 64 DANH MỤC HÌNH ẢNH Hình 1: Tomcat Hình 2: Mơ hình MVC 14 Hình 3: Sơ đồ Use Case 22 Hình 4: Biểu đồ “đăng nhập” 29 Hình 5: Biểu đồ “quản lý hàng hóa” 30 Hình 6: Biểu đồ mua bán hàng hóa .30 Hình 7: Biểu đồ quản lý nhân viên .31 Hình 8: Biểu đồ báo cáo thống kê .31 Hình 9: Biểu đồ toán đơn hàng 32 Hình 10: Biểu đồ 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 admin .35 Hình 16: Sơ đồ hoạt động xóa admin 36 Hình 17: Sơ đồ hoạt động sử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 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 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 chƣa đăng nhập đă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 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 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 đơ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 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 UserRoles 39 Bảng 3: Bảng Role 39 Bảng 4: Bảng Permission 39 Bảng 5: Bảng Actions .40 Bảng 6: Bảng Customers 40 Bảng 7: Bảng Orders 40 Bảng 8: Bảng OrderDetails .41 Bảng 9: Bảng Product .42 Bảng 10: Bảng Suppliers 42 Bảng 11: Bảng Categories .42 PHẦN MỞ ĐẦU 1.1 Lý chọn đề tài Ngày nay, cơng nghệ thơng tin có bƣớc phát triển mạnh mẽ theo chiều rộng sâu Máy tính điện tử khơng cịn thứ phƣơng tiện quý mà ngày trở thành cơng cụ làm việc giải trí thơng dụng ngƣời, khơng nơi làm việc mà cịn gia đình Đặc biệt cơng nghệ thông tin đƣợc áp dụng lĩnh vực kinh tế, trị, xã hội Ứng dụng cơng nghệ thơng tin tin học hóa đƣợc xem yếu tố mang tính định hoạt động quốc gia, tổ chức cửa hàng Nó đóng vai trị quan trọng tạo nên bƣớc đột phá mạnh mẽ Mạng INTERNET sản phẩm có giá trị lớn lao ngày trở nên công cụ thiếu, tảng để truyền tải, trao đổi thơng tin tồn cầu Bằng INTERNET, thực đƣợc công việc với tốc độ nhanh hơn, chi phí thấp nhiều so với cách thức truyền thống Chính điều này, thúc đẩy khai sinh phát triển thƣơng mại điện tử khắp giới, làm biến đổi đáng kể mặt văn hóa, nâng cao đời sống 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 thúc đẩy phát triển doanh nghiệp Đối với cửa hàng, việc quảng bá giới thiệu sản phẩm đến khách hàng đáp ứng nhu cầu mua sắm ngày cao khách hàng cần thiết Hiện để xây dựng Website bán hàng online sử dụng nhiều Framework khác nhiều ngôn ngữ Tuy nhiên để xây dựng website ứng dụng web phức tạp, nhiều thời gian rắc rối xây dựng ứng dụng từ đầu, cần đến cách tự nhiên để xây dựng sản phẩm Spring MVC đời cung cấp cho nhà phát triển với giải pháp thỏa đáng cho điều Spring MVC 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 framework nhẹ Nó đƣợc dùng nhƣ framework frameworks cung cấp hỗ trợ khác frameworks nhƣ Struts, Hibernate, Tapestry, EJB, JSF vv… Spring MVC framework đƣợc sử dụng cho phát triển ứng dụng web dễ dàng với việc hỗ trợ tốt tính web services, json,… MVC mang tính chất