UBND TỈNH QUẢNG NAM TRƯỜNG ĐẠI HỌC QUẢNG NAM KHOA TOÁN - TIN ----- ----- THIPPHACHAN MAKVILAI XÂY DỰNG WEBSITE GIỚI THIỆU VÀ BÁN HÀNG QUẦN ÁO TẠI LÀO KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC Quảng Nam, tháng 05 năm 2022 UBND TỈNH QUẢNG NAM TRƯỜNG ĐẠI HỌC QUẢNG NAM KHOA: TOÁN - TIN ----- ----- KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC Tên đề tài: XÂY DỰNG WEBSITE GIỚI THIỆU VÀ BÁN HÀNG QUẦN ÁO TẠI LÀO Sinh viên thực hiện THIPPHACHAN MAKVILAI MSSV: 21181001 17 CHUYÊN NGHÀNH: CÔNG NGHỆ THÔNG TIN KHÓA: 2018 - 2022 Cán bộ hướng dẫn Th S NGUYỄN THỊ MINH CHÂU MSCB: … Quảng Nam, tháng 5 năm 2022 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ế, chí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 I nternet , 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 framework 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 đó Vì vậy, em chọn đề t ài “ XÂY DỰNG WEBSITE GIỚI THIỆU VÀ BÁN HÀNG QUẦN ÁO TẠI LÀO ” làm đề tài khóa luận 1 2 Mục tiêu của đề tài - Tìm hiểu spring web mvc - Tìm hiểu về Netbeans, java, jsp… - Tìm hiểu về MySQL trong java, Tomcat - Tìm hiểu hệ thống bán hàng điện tử 2 - 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, 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 như: Đỡ tốn thời gian nhiều cho người tiêu dùng cũng như nhà quản lý trong việc tham gia vào hoạt động mua bán hàng Giúp người tiêu dùng có được gía cả và hình ảnh mặt hàng một cách chính xác Giúp người quản lý dễ dàng hơn trong việc quản lý sản phẩm 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 p há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ẢN G ĐỂ XÂY DỤNG WEBSITE Chương 2: TÌM HIỂU VỀ SPRING MVC Chương 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG Chương 4: DEMO 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ử Khi nói về khái niệm thương mại điện tử nhiều người nhầm lẫn với khái niệm của Kinh doanh điện tử , thương mại điện tử đôi khi được xem là tập con của kinh doanh điện tử Thương mại điện tử chú trọng đến việc mua bán trực tuyến (tập trung b ên ngoài), trong khi đó kinh doanh điện tử là việc sử dụng Internet và các công nghệ trực tuyến tạo ra quá trình hoạt động kinh doanh hiệu quả dù có hay không có lợi nhuận, vì vậy tăng lợi ích với khách hàng (tập trung bên trong) Thương mại điện tử bao gồ m việc sản xuất, quảng cáo, bán hàng và phân phối sản phẩm được mua bán và thanh toán trên mạng Internet, nhưng được giao nhận một cách hữu hình, cả các sản phẩm giao nhận cũng như những thông tin số hoá thông qua mạng Internet" 1 1 2 Lợi ích của việc sử dụng thương mại điện tử 1 M ỗi người - Có các sản phẩm và dịch vụ giá rẻ để bán - Mang đến cho khách hàng nhiều sự lựa chọn Giao dịch có thể được thực hiện 24 giờ một ngày - Nhận thông tin về sản phẩm và dịch vụ một cách kịp thời - Cho phép khách hàng l ựa chọn những sản phẩm đáp ứng tốt nhất nhu cầu của họ - Hỗ trợ đấu giá ảo - Cho phép khách hàng tiếp xúc và trao đổi ý kiến với các khách hàng khác - Cho phép liên kết các hoạt động trong chuỗi giá trị (Tích hợp chuỗi giá trị) 2 Đối với tổ chức kinh do anh - Mở rộng thị trường trên toàn quốc và toàn cầu - Có thể phục vụ một lượng lớn khách hàng trên thế giới với chi phí thấp - Giảm số lượng tài liệu liên quan đến việc tạo, xử lý, phân phối, lưu trữ và truy xuất lên đến 90 phần trăm - Giảm chi phí viễ n thông vì internet rẻ hơn điện thoại - Cho phép các công ty nhỏ cạnh tranh với các công ty lớn 4 - Quản lý sản xuất hiệu quả hơn 3 Đối với xã hội - Giúp mọi người có thể làm việc tại nhà ít đi lại hơn làm cho giao thông không bị tắc nghẽn giảm các vấn đề ô nhiễm không khí - Làm cho việc mua hàng hóa rẻ hơn Những người không giàu có có thể nâng cao tiêu chuẩn bán hàng hóa và dịch vụ 4 Đối với nền kinh tế - Các doanh nghiệp vừa và nhỏ ở các nước đang phát triển có thể được hưởng lợi từ việc tiếp cận thị t rường rộng rãi trên quy mô toàn cầu - Làm cho các doanh nghiệp ở các nước đang phát triển tiếp cận với công nghệ mới - Vai trò của người trung gian bị giảm sút giảm chi phí giao dịch Các rào cản gia nhập thị trường cũng được giảm bớt - Cho phép người dân nông thôn tìm hàng hóa hoặc dịch vụ giống như ở thành phố - tăng cường độ cạnh tranh làm cho nó hữu ích cho người tiêu dùng * Tóm tắt các lợi ích của thương mại điện tử Đó là thương mại không biên giới Không có sự phân chia lục địa hay quốc gia Không giới hạn khoảng cách và hành trình Bạn có thể mua sản phẩm từ một cửa hàng duy nhất và đi du lịch để mua sản phẩm từ các cửa hàng khác ở các châu lục khác nhau chỉ trong vài phút Tiếp cận nhóm khách hàng mục tiêu lớn trên khắp thế giới Cơ sở người mu a đang mở rộng Bạn có thể giao dịch 24 giờ một ngày và mở cửa hàng ngày 1 2 Tổng quan về ngôn ngữ java 1 2 1 Nguồn gốc của ngôn ngữ java Java là một ngôn ngữ lập trình hướng đối tượng, dựa trên lớp được thiết kế để có càng ít phụ thuộc thực thi càng tố t Nó là ngôn ngữ lập trình có mục đích chung cho phép các nhà phát triển ứng dụng viết một lần, chạy ở mọi nơi, nghĩa là mã Java đã biên dịch có thể chạy trên tất cả các nền tảng hỗ trợ Java mà không cần biên dịch lại Các ứng dụng Java thường được biên d ịch thành bytecode có thể chạy trên bất kỳ máy ảo Java (JVM) nào bất kể kiến trúc máy tính bên dưới Cú pháp của Java tương tự như C và C++, nhưng có ít cơ sở cấp thấp hơn các ngôn ngữ trên Java runtime cung cấp 5 các khả năng động (chẳng hạn như phản ánh v à sửa đổi mã thời gian chạy) thường không có sẵn trong các ngôn ngữ biên dịch truyền thống Tính đến năm 2019 Java là một trong những ngôn ngữ lập trình phổ biến nhất được sử dụng theo GitHub, đặc biệt cho các ứng dụng web máy khách Tính đến tháng 9 năm 2020, phiên bản mới nhất là Java 15, với Java 11, một phiên bản hỗ trợ dài hạn (LTS), được phát hành vào 25 tháng 9 năm 2018 Oracle phát hành bản cập nhậ t miễn phí cho công chúng với phiên bản kế thừa Java 8 LTS vào tháng 1 năm 2019 cho mục đích sử dụng thương mại, mặc dù nếu không nó sẽ vẫn hỗ trợ Java 8 với các bản cập nhật công khai cho mục đích sử dụng cá nhân vô thời hạn Các nhà cung cấp khác đã bắt đầu cung cấp các bản miễn phí của OpenJDK 8 và 11 mà vẫn đang nhận được bảo mật và các nâng cấp khác Oracle (và những công ty khác) khuyên người dùng nên gỡ cài đặt các phiên bản Java đã lỗi thời vì những rủi ro nghiêm trọng do các vấn đề bảo mật chưa đượ c giải quyết Vì Java 9, 10, 12, 13 và 14 không còn được hỗ trợ, Oracle khuyên người dùng nên chuyển ngay sang phiên bản mới nhất (hiện tại là Java 15) hoặc bản phát hành LTS 1 2 2 Đặc điểm của ngôn ngữ java Hướng đối tượng: Trong Java, mọi thứ đều được coi là Object và có thể mở rộng Java vì nó hoàn toàn dựa trên mô hình Object 6 Đơn giản: Java được thiết kế với mục đích giúp người học dễ dàng hơn trong việc tiếp thu kiến thức Vì vậy, nếu bạn đã hiểu cơ bản Java là gì thì khi học, các bạn có thể nắm bắt ngôn ngữ lập trình này rất nhanh Kiến trúc trung lập: Trình biên dịch của Java có khả năng tạo ra một định dạng file object có kiến trúc trung lập Đồng thời, Java còn làm cho code sau khi biên dịch có thể hoạt động được trên nhiều bộ vi xử lý cùng với sự có mặt của Java runtime system Kiến trúc Trung lập: Các trình biên dịch Java có thể tạo một định dạng tệp đối tượng trung lập về mặt kiến trúc Đồng thời, Java cũng cho phép mã đã biên dịch chạy trên nhiều bộ xử lý với hệ thống thời gian chạy Java Bảo mật: Khi tìm hiểu Java là gì, chắc chắn các bạn sẽ biết đến tính bảo mật tuyệt vời của Java Nhờ tính năng an toàn của mình, Java có khả năng cho phép phát triển những hệ thống hoàn toàn không có virus hay giả mạo Portable: Đây là đặc điểm khá nổi bật củ a Java bởi nó là kiến thức trung lập và không phụ thuộc vào việc thực hiện bất kỳ những đặc điểm chính nhất khi nói về Portable của Java Vì thế, bạn có thể đưa bytecode của Java lên bất cứ nền tảng nào của mình Đa luồng: Bạn có thể viết các chương trình với mục đích thực hiện nhiều tác vụ cùng một lúc nhờ tính năng đa luồng của Java Tính năng này còn cho phép các nhà phát triển tự xây dựng những ứng dụng tương tác hoạt động một cách trơn tru Thông dịch: Bytecode của Java được biên dịch trực tiếp đến các nền tảng gốc và nó hoàn toàn không được lưu trữ ở bất cứ nơi đâu Mạnh mẽ: Java là gì và tại sao Java lại có đặc điểm mạnh mẽ? Câu trả lời là vì Java luôn nỗ lực loại trừ tất cả những tình huống bị lỗi bằng cách nhấn mạnh và chủ yếu là chỉ ra lỗi thời gia n biên dịch cũng như kiểm tra runtime Hiệu suất cao: Java có đặc điểm này là vì nó sử dụng trình biên dịch Just – In - Time nên cho hiệu suất cao và phát hiện lỗi nhanh chóng Linh động: Java được đánh giá là năng động hơn các loại ngôn ngữ lập trình khác h iện nay như C hay C++ và được thiết kế với khả năng thích nghi dễ dàng trong môi trường đang phát triển Vì thế, các chương trình của Java có thể mang theo một lượng rất lớn các thông tin run - time 7 1 2 3 Ưu điểm ngôn ngữ java Các chương trình Java được viết có thể chạy trên nhiều nền tảng mà không cần phải sửa đổi hoặc biên dịch lại, giảm chi phí và thời gian cần thiết để chuyển hoặc làm cho chương trình trở nên đa nền tảng Java là một ngôn ngữ hướng đối tượng phù hợp để phát triển các hệ thố ng phức tạp Phát triển chương trình dựa trên đối tượng cho phép chúng ta sử dụng các từ hoặc tên tồn tại trong hệ thống để thiết kế chương trình làm cho nó dễ hiểu hơn 1 3 Tổng qu an về MySQL, Tomcat 1 3 1 Tổng quan về MySQL MySQL là chương trình dùng để quản lý hệ thống cơ sở dữ liệu (CSDL), trong đó CSDL là một hệ thống lưu trữ thông tin được sắp xếp rõ ràng, phân lớp ngăn nắp những thông tin mà mình lưu trữ MySQL là một hệ quản trị cơ sở dữ liệu mã nguồn mở, chính vì vậy mà nó chỉ hỗ trợ những ngôn ngữ theo hướng “mở”, các mã nguồn như C++ sẽ không thể sử dụng MySQL cho những dự án của mình, ngoài ra thì theo công ty từ dự án bugnetproject của chính Microsoft thì họ cũng đã xác nhận rằng ngôn ngữ C++ hay Net Development sẽ không hỗ trợ trên nền tảng mySQL Ưu điểm của MySQL Khả năng mở rộng và tính linh hoạt Máy chủ cơ sở dữ liệu MySQL đáp ứng nhiều tính năng linh hoạt, nó có sức chứa để xử lý các ứng dụng được nhúng sâu với 1MB dung lượng để chạy kho dữ liệu khổng lồ lên đến hàng terabytes thông tin Đặc tính đáng chú ý của My SQL là sự linh hoạt về flatform với tất cả các phiên bản của Windows, Unix và Linux đang được hỗ trợ Và đương nhiên, tính chất mã nguồn mở của MySQL cho phép tùy biến theo ý muốn để thêm các yêu cầu phù hợp cho database server Hiệu năng cao Với kiến trúc storage - engine cho phép các chuyên gia cơ sở dữ liệu cấu hình máy chủ cơ sở dữ liệu MySQL đặc trưng cho các ứng dụng chuyên biệt Dù ứng dụng là website dung lượng lớn phục vụ hàng triệu người/ngày hay hệ thống xử lý giao dịch tốc độ cao thì MySQL đều đáp ứng được khả năng xử lý khắt khe của mọi hệ thống Với những tiện ích tải tốc độ cao, cơ chế xử lý nâng cao khác và đặc biệt bộ nhớ 8 caches, MySQL đưa ra tất cả nhưng tính năng cần có cho hệ thống doanh nghiệp khó tính hiện nay Tính sẵn sàng cao MySQL đả m bảo sự tin cậy và có thể sử dụng ngay MySQL đưa ra nhiều tùy chọn có thể “mì ăn liền” ngay từ cấu hình tái tạo chủ/tớ tốc độ cao, để các nhà phân phối thứ 3 có thể đưa ra những điều hướng có thể dùng ngay duy nhất cho server cơ sở dữ liệu MySQL Hỗ trợ giao dịch mạnh mẽ MySQL đưa ra một trong số những engine giao dịch cơ sở dữ liệu tốt nhất trên thị trường Các đặc trưng bao gôm, khóa mức dòng không hạn chế, hỗ trợ giao dịch ACID hoàn thiện, khả năng gi ao dịch được phân loại và hỗ trợ giao dịch đa dạng (multi - version) mà người đọc không bao giờ cản trở cho người viết và ngược lại Dữ liệu được đảm bảo trong suốt quá trình server có hiệu lực, các mức giao dịch độc lập được chuyên môn hóa, khi phát hiện có lỗi khóa chết ngay tức thì Bảo vệ dữ liệu mạnh mẽ Việc quan trong của các doanh nghiệp là bảo mật dữ liệu, MySQL tích hợp các tính năng bảo mật an toàn tuyệt đối Với việc xác nhận truy cập cơ sở dữ liệu, MySQL trang bị các kỹ thuật mạnh, chỉ có người s ử dụng đã được xác nhận mới truy cập được vào cơ sở dữ liệu Chứng chỉ SSH và chứng chỉ SSL cũng được hỗ trợ để đảm bảo kết nối an toàn và bảo mật Tiện ích backup và recovery cung cấp bởi MySQL và các hãng phần mềm thứ 3 cho phép backup logic và vật lý cũng như recovery toàn bộ hoặc tại một thời điểm Phát triển ứng dụng toàn diện MySQL trở thành cơ sở dữ liệu mã nguồn mở phổ biến nhất hiện nay một phần là do cung cấp hỗ trợ hỗn hợp cho bất cứ sự phát triển ứng dụng nào cần Trong cơ sở dữ liệu , hỗ trợ có thể được tìm thấy trong các trigger, stored procedure, cursor, view, ANSI - standard SQL,… MySQL cũng cung cấp các bộ kết nối như: JDBC, ODBC ,… để tất cả các form của ứng dụng sử dụng MySQL như một erver quản lí dữ liệu được đề xuất hàng đầu Quản lý dễ dàng Cài đặt MySQL khá nhanh và trung bình từ khi download phần mềm tới khi cài đặt thành công chỉ mất chưa đầy 15 phút Cho dù flatform là Linux, Microsoft 9 Windows, Macintosh hoặc Unix thì quá trình cũng diễn ra nhanh chóng Khi đã cài đặt, tính năng quản lý như tự khởi động lại, tự động mở rộng không gian và cấu hình động sẵn sàng cho người q uản trị cơ sở dữ liệu bắt đầu làm việc MySQL cung cấp toàn bộ công cụ quản lý đồ họa cho phép một DBA quản lý, sửa chữa và điều khiển hoạt động của nhiều server MySQL từ một máy trạm đơn Mã nguồn mở tự do và hỗ trợ 24/7 Nhiều doanh nghiệp còn băn khoăn trong việc giao toàn bộ cho phần mềm mã nguồn mở bởi khó có thể tìm được hỗ trợ hay bảo mật an toàn phục vụ chuyên nghiệp Với MySQL mọi sự cam kết đều rõ ràng, MySQL cam kết bồi thường khi gặp sự cố Chi phí sở hữu thấp nhất Sử dụng MySQL cho các dự án, doanh nghiệp đều nhận thấy sự tiết kiệm chi phí đáng kể Người dùng MySQL cũng không mất nhiều thời gian để sữa chữa hoặc vấn đề thời gian chết 1 3 2 Tổng quan về PHP PHP là viết tắt của PHP Hypertext Preprocessor, ban đầu cho Công cụ Trang chủ Cá nhân PHP là ngôn ngữ máy tính ngôn ngữ lập trình script, loại ngôn ngữ lập trình này được lưu trữ trong một tập tin có tên là script, khi chạy nó yêu cầu một tập hợp các biến Ví dụ về ngôn ngữ script là JavaScript, Perl,… Bản chất của PHP khác với các ngôn ng ữ script khác là PHP được phát triển và thiết kế Để sử dụng trong việc tạo các tài liệu HTML có thể tự động chèn hoặc chỉnh sửa nội dung Do đó, PHP được cho là ngôn ngữ kịch bản phía máy chủ hoặc được nhúng HTML, nghĩa là trong mọi Trước khi một máy tính đóng vai trò là một máy chủ Web gửi cho chúng ta một trang web được viết bằng PHP, nó sẽ hoàn tất việc xử lý các lệnh có sẵn và sau đó gửi kết quả cho chúng tôi Kết quả cuối cùng là trang web mà chúng tôi thấy PHP là một trong những công cụ quan trọng n hất cho phép chúng tôi tạo các trang web động (trang web tương tác với người dùng) hiệu quả hơn và có nhiều tính năng hơn 1 4 Mô tả hệ thống bán hàng áo quần tại Lào Đây là một website nhằm bán và giới thiệu rộng rãi các mặt hà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: + 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à 10 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 + Đặ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 nhập vào những thông tin cần thiết, tránh những đòi hỏi hay những thông tin yêu cầu quá nhiều từ ph ía khách hàng, tạo cảm giác thoải mái, riêng tư cho khách 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ị : + Là người có quyền đăng nhập, quản lý và làm chủ mọi hoạt động của hệ thống trang web Nhà quản lý có mộ t username và một password để truy cập vào hệ thống 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 + Thêm, xoá, sửa thông tin sản phẩm vào cơ sở dữ liệu + Kiểm tra và xử lý đơn đặt hàng 11 Chương 2: TÌM HIỂU VỀ SPRING MVC 2 1 Spring Framework 2 1 1 Giới thiệu Spring là một Framework phát triển các ứng dụng Java được sử dụng bởi hàng triệu lập trình viên Nó giúp tạo các ứng dụng có hiệu năng cao, dễ kiểm thử, sử dụng lại code… Spring nhẹ và trong suốt (nhẹ: kích thước nhỏ, version cơ bản chỉ khoảng 2MB; trong suốt: hoạt động một cách trong suốt với lập trình viên) Spring là một mã nguồn mở, được phát triển, chia sẻ và có cộng đồng người dùng rất l ớn Spring Framework được xây dựng dựa trên 2 nguyên tắc design chính là: Depe ndency Injection và Aspect Oriented Programming Những tính năng core (cốt lõi) của Spring có thể được sử dụng để phát triển Java Desktop, ứng dụng mobile, Java Web Mục tiêu chính của Spring là giúp phát triển các ứng dụng J2EE một cách dễ dàng hơn dựa tr ên mô hình sử dụng POJO (Plain Old Java Object) Spring được chia làm nhiều module khác nhau, tùy theo mục đích phát triển ứng dụng mà ta dùng 1 trong các module đó 2 1 2 Các module chính 2 1 2 1 Core Container Spring Core Container Bao gồm các module spr ing core, beans, context và expression languate (EL) Spring core, bean cung cấp tính năng IOC và Dependency Injection Spring Context hỗ trợ đa ngôn ngữ (internationalization), các tính năng Java EE như EJB, JMX Expression Language được mở rộng từ Expresi on Language trong JSP Nó cung cấp hỗ trợ việc setting/getting giá trị, các method cải tiến cho phép truy cập collections, index, các toán tử logic… 2 1 2 2 Spring Context/Application Context Một trong những tính năng chính của Spring framework là vùng ch ứa IoC (Inversion of Control) Spring IoC container chịu trách nhiệm quản lý các đối tượng 12 của một ứng dụng Nó sử dụng tiêm phụ thuộc để đạt được sự đảo ngược của kiểm soát Các giao diện BeanFactory và ApplicationContext đại diện cho vùng chứa Spring IoC Ở đây, BeanFactory là giao diện gốc để truy cập vùng chứa Spring Nó cung cấp các chức năng cơ bản để quản lý bean Mặt khác, ApplicationContext là một giao diện con của BeanFactory Do đó, nó cung cấp tất cả các chức năng của BeanFactory Hơn nữa, nó cu ng cấp nhiều chức năng dành riêng cho doanh nghiệp Các tính năng quan trọng của ApplicationContext là giải quyết các thông báo, hỗ trợ quốc tế hóa, xuất bản các sự kiện và các ngữ cảnh cụ thể của lớp ứng dụng Đây là lý do tại sao chúng tôi sử dụng nó làm vùng chứa Spring mặc định 2 1 2 3 Spring AOP (Aspect Oriented programming) Aspect Oriented Programming (AOP) – lập trình hướng khía cạnh: là một kỹ thuật lập trình (kiểu như lập trình hướng đối tượng) nhằm phân tách chương trình thành cách moudule riêng rẽ, phân biệt, không phụ thuộc nhau Khi hoạt động, chương trình sẽ kết hợp các module lại để thực hiện các chức năng nhưng khi sửa đổi 1 chức năng thì chỉ cần sửa 1 module AOP không phải dùng để thay thế OOP mà để bổ sung cho OOP Hình 2 1 C ơ chế hoạt động Spring AOP Ưu điểm: Thiết kế đơn giản: “You aren’t gonna need it (YAGNI)” – chúng ta chỉ cài đặt những thứ chúng ta thực sự cần mà không bao giờ cài đặt trước 13 Cài đặt chương trình một cách trong sáng: mỗi một module chỉ làm cái mà nó cần phải làm, giải quyết được hai vấn đề code tangling và code scattering Tái sử dụng dễ dàng Nhược điểm: Khái nhiệm khá trừu tượng, độ trừu tượng của chương tr ình cao Luồng chương trình phức tạp 2 1 2 4 Spring DAO M ẫu Đối tượng Truy cập Dữ liệu (DAO) là một mẫu cấu trúc cho phép chúng ta tách lớp ứng dụng / nghiệp vụ khỏi lớp bền vững (thường là cơ sở dữ liệu quan hệ nhưng có thể là bất kỳ cơ chế bền vững nào khác) bằng cách sử dụng một API trừu tượng API ẩn khỏi ứng dụng tất cả sự phức tạp của việc thực hiện các hoạt động CRUD trong cơ chế lưu trữ bên dưới Điều này cho phép cả hai lớp phát triển riêng biệt mà không cần biết gì về nhau Trong hướng dẫn này, c húng ta sẽ đi sâu vào cách triển khai của mẫu và chúng ta sẽ tìm hiểu cách sử dụng nó để trừu tượng hóa các cuộc gọi tới trình quản lý thực thể JPA 2 1 2 5 Spring ORM Spring cung cấp API giúp lập trình viên dễ dàng tích hợp Spring với ORM Framework như JPA(Java Persistence API), JDO(Java Data Objects), Oracle Toplink and iBATIS Home » Spring » Spring Hibernate – Giới thiệu Spring ORM, Code ví dụ Spring Hibernate Spring Hibernate – Giới thiệu Spring ORM, Code ví dụ Spring Hibernate Spring Hibernate – Giới thiệu Spring ORM, Code ví dụ Spring Hibernate Giới thiệu Spring ORM Spring cung cấp API giúp lập trình viên dễ dàng tích hợp Spring với ORM Framework như JPA(Java Persistence API), JDO(Java Data Objects), Oracle Toplink and iBATIS Lợi ích của ORM Framework với Spring Có khá nhiều lợi ích khi kết hợp Spring Framework với ORM framework: 14 Viết code ít hơn: Không cần phải viết code trước và sau khi truy vấn với database qua connection (ví dụ start connection, start transaction, commit transaction, close connection…) Dễ test hơn: Xử lý exception tốt hơn: Spring framewrok cung cấp các API để xử lý exception với ORM framework Tích hợp quản lý transaction: Spring hỗ trợ khả năng quản lý transaction qua AOP (Xem lại ví dụ xử lý transaction với JDBC ) 2 1 2 6 Spring Web Module Spring framework bao gồm nhiều mô - đun như lõi, bean, ngữ cảnh, ngôn ngữ biểu thức, AOP, Aspects, Instrumentation, JDBC, ORM, OXM, JMS, Transactio n, Web, Servlet, Struts, v v Các mô - đun này được nhóm thành Test, Core Container , AOP, Các khía cạnh, Thiết bị đo, Truy cập / Tích hợp dữ liệu, Web (MVC / Điều khiển từ xa) như được hiển thị trong sơ đồ sau 2 1 2 7 Spring MVC Framework Spring MVC cung cấp kiến trúc model - view - controller và các thành phần để có thể được sử dụng phát triển các ứng dụng web Mô hình MVC phân tách các khía cạnh khác nhau của ứng dụng (logic đầu vào, logic business, và giao diện người dùng logic), và cung cấp một kết nối giữ a các yếu tố này Model đóng gói dữ liệu ứng dụng và nói chung họ sẽ bao gồm các POJO Tầng View chịu trách nhiệm hiển thị các dữ liệu Model và nói chung nó tạo ra HTML mà trình duyệt hiển thị ra Controller chịu trách nhiệm xử lý yêu cầu người sử dụng và xây dựng Model phù hợp và chuyển nó qua tầng View để hiển thị The DispatcherServlet MVC framework được thiết kế xoay quanh DispatcherServlet - cho phép xử lý tất cả các HTTP request và re sp onse Sơ đồ dưới đây giải thích flow xử lý request của Spring Web MVC DispatcherServlet 15 Hình 2 2 C ơ chế hoạt động mô hình MVC Đây là chuỗi các sự kiện tương ứng với một yêu cầu HTTP đến DispatcherServlet: Sau khi nhận được một yêu cầu HTTP, DispatcherServlet chỉ định cho HandlerMapping gọi Controller thích hợp Cont roller sẽ nhận yêu cầu và gọi các Service tương ứng thích hợp dựa trên GET được sử dụng hoặc phương thức POST Các phương thức service này sẽ thiết lập một nhóm các dữ liệu Model được định nghĩa theo logic business và trả về tên View cho DispatcherServlet Các DispatcherServlet sẽ được các ViewResolver hỗ trợ để chọn được View đã định nghĩa tương ứng với Request Khi View được hoàn thiện, Các DispatcherServlet sẽ chuyển dữ liệu Model tới View và render trên trình duyệt Tất cả các thành phần nêu trên, ví dụ như HandlerMapping, Controller và ViewResolver là bộ phận của WebApplicationContext - một mở rộng của ApplicationContext với một số tính năng bổ sung cần thiết cho các ứng dụng web 2 1 3 Lý do sử dụng Cấu hình Spring Framework dễ dàng, nhanh chóng Một trong những khía cạnh quan trọng trong sự phổ biến của bất kỳ framework nào là việc nhà phát triển sử dụng nó dễ dàng hay không Spring Framework thông qua nhiều quy ước về cấu hình giúp lập trình viên dễ dàng bắt đầu và sau đó thay đổi cấu hình theo chính xác những gì họ cần 16 Những dự án như Spring Boot đã làm cho việc khởi động một dự án Spring phức tạp gần như trở nên dễ dàng Chưa kể, nó có tài liệu và hướng dẫn tuyệt vời để giúp mọi người tham gia Java Spring Framework phù hợp với mọi lập trình viên - lập trình tăng năng suất Spring Framework được biết đến là khung phần mềm của ngôn ngữ Java Nói đến Java, hầu hết lập trình viên đều đã từng một lần sử dụng nó Java là một ngôn ngữ phổ biến và lâu đời, được thiết kế theo phong cách hướng đối tượng - OOP Java cũng là một môn học tại nhiều trường đại học về công nghệ Vậy nên có thể cho rằng, Java là một ngôn ngữ có số lượng lập trình viên nhiều nhất Đó là lý do vì sao doanh nghiệp sản xuất không gặp trở ngại về việc thiếu nhân lực phát triển trong dự án sử dụng Java Spring Framework sở hữu tính chất Module linh hoạt Một khía cạnh quan trọng khác trong sự phổ biến của Spring là tính chất mô - đun cao của nó Spring Framework cho phép lựa chọn sử dụng toàn bộ hệ sinh thái của Spring, hoặc chỉ sử dụng mô - đun cần thiết Hơn nữa, lập trình viên có thể tùy chọn đưa vào một hoặc nhiều dự án Spring tùy theo nhu cầu Khả năng Kiểm thử mà bất kỳ framework nào cũng cần Việc lựa chọn framework phần lớn phụ thuộc vào thực tế là việc kiểm thử phần mềm có diễn ra dễ dàng hay không Với Spring, nó đáp ứng nhu cầu này bằng việc hỗ trợ Phát triển ứng dụng theo hướng thử nghiệm - Test Driven Development (TDD) Ứng dụng Spring chủ yếu bao gồm các POJO, điều này đương nhiên làm cho việc kiểm thử đơn vị (Unit Testing) trở n ên đơn giản hơn nhiều Tuy nhiên, Spring cung cấp Mock Objects cho các tình huống như MVC, nơi mà việc kiểm thử đơn vị trở nên phức tạp hơn Sự trưởng thành của Spring Spring Framework có một lịch sử lâu dài về đổi mới, áp dụng và tiêu chuẩn hóa Qua nhiều năm, nó đã đủ trưởng thành để trở thành giải pháp mặc định cho hầu hết các vấn đề phổ biến gặp phải trong quá trình phát triển các ứng dụng doanh nghiệp quy mô từ nhỏ đến lớn 17 Điều thú vị hơn nữa là Spring đang được phát triển và duy trì tích cực Hỗ trợ cho các tính năng ngôn ngữ mới và các giải pháp tích hợp doanh nghiệp đang được phát triển mỗi ngày Sự đóng góp của cộng đồng Spring Cuối cùng nhưng không kém phần quan trọng, bất kỳ framework nào hoặc ngôn ngữ lập trình nào cũng tồn tại trong ngành thôn g qua sự đổi mới và không có nơi nào tốt hơn cho sự đổi mới ngoài cộng đồng Spring là một mã nguồn mở do Pivotal Software dẫn đầu và được hỗ trợ bởi một nhóm lớn những tổ chức và nhà phát triển cá nhân Điều này có nghĩa là nó vẫn tồn tại theo ngữ cảnh v à thường mang tính tương lai, thể hiện rõ qua số lượng dự án dưới sự hỗ trợ của nó ngày một tăng 2 2 Spring MVC 2 2 1 Mô hình MVC 2 2 1 1 Model (Mô hình) MVC là viết tắt của 3 từ Model – View – Controller , đây là một mô hình thiết kế sử dụng trong kĩ thuật phần mềm (lập trình) Mỗi một từ là mỗi một mô hình riêng nhưng cả ba tạo thành 1 mô hình lớn M là Model : một cấu trúc dữ liệu chắc chắn, Model có chức năng chuẩn bị dữ liệu để cung cấp cho Controller Model là thành phần chính đảm nhận nhiệm vụ lưu trữ dữ liệu và các bộ phận logic liên quan của toàn bộ ứng dụng đó, là cầu nối giữa View và Controller Model chịu trách nhiệm cho các thao tác giữa Controller hoặc bất kì logic nghiệp vụ nào khác liên quan đến dữ liệu như: Xem dữ liệu, truy xuất dữ liệu, Ví dụ: Controller lấy dữ liệu thông tin về sản phẩm từ cơ sở dữ liệu, thì Model sẽ thực hiện cấc thao tác với dữ liệu (CSDL) và gửi lại cho CSDL hoặc cấp quyền cho View sử dụng 2 2 1 2 View (Khung nhìn) View là giao diện dành cho phía người sử dụng, v à người dùng có thể thấy được thông tin dữ liệu của MVC qua các thao tác tìm kiếm View được tạo thành bởi dữ liệu thu thập từ dữ liệu mô hình, và giúp người dùng có cái nhìn trực quan nhất về ứng dụng, trang web 18 2 2 1 3 Controller (Bộ điều khiển) Đây l à bộ phận đảm trách xử lý các thao tác của người dùng với ứng dụng, trang web Controller xử lí dữ liệu từ bàn phím và chuột của người dùng, sau đó thông báo tới View và Model Controller có thể gửi lệnh tới Model và View để thực hiện thay đổi trạng thái ( Model) hoặc giao diện (View) 2 3 Ưu điểm của spring mvc Hiện nay, Spring MVC được sử dụng vô cùng phổ biến và được đánh giá cao nhờ sở hữu những điểm mạnh như: Các tầng có trong Spring MVC thường độc lập nên việc unit test sẽ trở nên dễ dàng hơn rất nh iều Phần view của chúng sẽ được tích hợp với nhiều Framework về UI như là: JSF, Freemarker hoặc Themeleaf, Spring MVC base có trên các POJO class nên hành động của chúng thường sẽ đơn giản hơn Có thể hỗ trợ được cả Annotation và XML config giúp cho quá trình phát triển trở nên sạch hơn và nhanh hơn rất nhiều Có thể cung cấp giúp việc phân chia trở nên rõ ràng, linh hoạt hơn giữa các controller, service, data access layer 2 4 Giớ i thiệu một khái niệm đề liên quan 2 4 1 Inversion of Control Contai ner (IoC container) Trong cộng đồng Java, có một làn sóng đổ xô về các thùng chứa nhẹ giúp tập hợp các thành phần từ các dự án khác nhau thành một ứng dụng gắn kết Bên dưới các thùng chứa này là một mô hình chung về cách chúng thực hiện hệ thống dây điện, một khái niệm mà chúng đề cập đến dưới cái tên chung chung là "Inversion of Control" IoC c ontainer còn có tên gọi đầy đủ là Inversion of Control , được hiểu là một nguyên lý thiết kế ứng dụng trong công nghệ phần mềm Kiến trúc phần mềm khi áp dụng nguyê n lý thiết kế này sẽ đảo ngược quyền điều khiển so với kiểu lập trình hướng thủ tục Nếu như trong lập trình hướng thủ tục, các đoạn mã được thêm vào sẽ gọi các thư viện thì ở IoC lại hoàn toàn khác Những IoC container sẽ chích những dependencies khi khởi tạo bean 19 2 4 2 Bean Bean là những module chính của chương trình, được tạo ra và quản lý bởi Spring IoC container Các bean có thể phụ thuộc lẫn nhau, như ví dụ về Car , Engine và ChinaEngine từ đầu series tới giờ Sự phụ thuộc này được mô tả cho IoC biế t nhờ cơ chế Dependency injection Cách đánh dấu class là một bean thì mình sẽ trình bày trong bài tiếp theo Lúc này các bạn chỉ cần biết đơn giản nhất là dùng @Component lên class là class đó là một bean 2 4 3 Dependency Injection (DI) Đây là một patt ern dùng để implement IoC, các dependencies sẽ được inject vào module trong quá trình khởi tạo Việc kết nối giữa các đối tượng với các đối tượng khác, hoặc inject các đối tượng vào đối tượng khác được thực hiện bằng quá trình lắp ráp chứ không phải bởi c hính các đối tượng 2 4 4 Setter Injection Cách dùng setter để inject thường dùng trong trường hợp phụ thuộc vòng, module A phụ thuộc vào B và ngược lại Do đó, nếu cả hai đều sử dụng constructor based injection thì Spring Boot sẽ không biết nên tạo bean nào trước Vì thế, giải pháp là một bean sẽ dùng constructor, một bean dùng setter 2 4 5 Constuctor injection Là 1 trong 3 loại dependency injection Với Constructor Injection , các Dependency sẽ được các container truyền vào một Class thông qua Constructor của Class đó Và đây là cách thông dụng được nhiều người sử dụng nhất 2 4 6 Application Context ApplicationContext là khái niệm Spring Boot dùng để chỉ Spring IoC container, tương tự như bean là đại diện cho các dependency Ngoài ra bạn có thể sẽ nghe nói về BeanFactory Nó cũng đại loại như A pplicationContext, đại diện cho Spring IoC container nhưng ở mức cơ bản 20 ApplicationContext thì ở mức cao hơn, cung cấp nhiều tính năng hơn BeanFactory như i18n, resolving messages, publishing events, Khi ứng dụng Spring chạy, Spring IoC container sẽ qu ét toàn bộ packages, tìm ra các bean và đưa vào ApplicationContext Cơ chế đó là Component scan, cũng sẽ được nói tới trong bài tiếp theo 2 4 7 FileSystemXmlApplicationContext Là n gữ cảnh ứng dụng XML độc lập, lấy các tệp định nghĩa ngữ cảnh từ hệ thống tệp hoặc từ các URL Chủ yếu hữu ích cho khai thác thử nghiệm, nhưng cũng cho các môi trường độc lập Xử lý đường dẫn tài nguyên như tài nguyên hệ thống tệp khi sử dụng ApplicationContext getResource Đường dẫn tài nguyên được coi là liên quan đến thư mục làm việc VM hiện tại, ngay cả khi chúng bắt đầu bằng dấu gạch chéo Các mặc định của vị trí cấu hình có thể được ghi đè thông qua setConfigLocations, tương ứng thông qua các tham số "contextConfigLocation" của ContextLoader và FrameworkServlet Vị trí cấu hình có thể biểu thị các tệp cụ thể như "/myfiles/context xml" hoặc các mẫu Ant - style như "/myfiles/* - context xml" (xem PathMatcher javadoc để biết chi tiết về mẫu) 2 4 8 XmlWebApplicationContext Public class XmlWebApplicationContext extends AbstractRef reshableWebApplicationContext Triển khai WebApplicationContext lấy cấu hình của nó từ các tài liệu XML, được hiểu bởi XmlBeanDefinitionReader Về cơ bản, điều này tương đương với GenericXmlApplicationContext cho môi trường web Theo mặc định, cấu hình sẽ được lấy từ "/WEB - INF/applicationContext xml" cho ngữ cảnh gốc và "/WEB - INF/test - servlet xml" cho một ngữ cảnh có không gian tên "test - servlet" (như cho một cá thể DispatcherServlet với "test" tên servlet) Mặc định vị trí cấu hình có thể được ghi đè thôn g qua tham số ngữ cảnh "contextConfigLocation" của ContextLoader và servlet init - param của FrameworkServlet Vị trí cấu hình có thể biểu thị các tệp cụ thể như "/WEB - INF/context xml" hoặc các mẫu Ant - style như "/WEB - INF/* - context xml" (xem PathMatcher java doc để biết chi tiết về mẫu) 21 2 4 9 Cơ chế xử lý Request - Respone Request có thể hiểu nhanh là thông tin gửi từ client lên server Khi bạn lên trình duyệt browser gõ một địa chỉ nào đó, ví dụ bạn gõ là freetuts net thì ngay lập tức trình duyệt sẽ dựa vào tên domain để gửi yêu cầu truy cập đến địa chỉ IP mà domain này đang trỏ tới ( bạn đừng quan tâm đến domain này do ai quản lý ), lúc này phía server sẽ phâ n tích yêu cầu và sẽ gửi luồng xử lý tới vị trí vị trí lưu trữ của mã nguồn PHP (hoặc mã nguồn bất kì) và nhiệm vụ của các mã nguồn là tiếp nhận yêu cầu, phân tích request đó và trả kết quả lại cho client Chúng ta có hai phương thức ( 2 cách ) để gửi reques t từ client lên server đó là sử dụng phương thức GET và phương thức POST Reponse là dữ liệu mà server trả về cho client V í dụ khi bạn nhập vào địa chỉ freetuts net thì kết quả trả về ( response ) chính là giao diện của website và các thông tin của header Như vậy dữ liệu mà server trả về là những đoạn mã HTML kèm theo các thông tin của header Browser sẽ dựa vào các thông tin n ày để hiển thị trạng thái kết quả của request, còn mã HTML dùng để hiển thị giao diện của website Nếu bạn nhập vào một URL không tồn tại thì thông tin của header sẽ không có gì 2 4 1 0 Giải thích sơ đồ luồng dữ liệu Sơ đồ luồng dữ liệu trong tiếng Anh là Data Flow Diagram , viết tắt là DFD Sơ đồ luồng dữ liệu (DFD) là một mô hình hệ thống cân xứng cả dữ liệu và tiến trình (progress) Nó chỉ ra cách thông tin chuyển vận từ một tiến trình hoặc từ chức năng này trong hệ thống sang một tiến trình hoăc chức năn g khác Với sơ đồ BFD , chúng ta đã xem xét hệ thống thông tin theo quan điểm "chức năng" thuần túy Bước tiếp theo tro ng quá trình phân tích là xem xét chi tiết hơn về các thông tin cần cho việc thực hiện các chức năng đã được nêu và những thông tin cần cung cấp để hoàn thiện chúng Công cụ mô hình được sử dụng cho mục đích này là sơ đồ luồng dữ liệu DFD 2 4 1 1 Configur ing DispatcherServlet Giống như các servlet khác, để DispatcherServlet có thể nhận được và xử lý request, chúng ta cần phải cấu hình để web server container có thể khởi tạo và ánh xạ URL cho nó Trong bài viết này, mình sẽ giới thiệu với các bạn cách khởi tạo và cấu hình DispatcherServlet trong Spring MVC 22 2 4 1 2 Configuring a context loader ContextLoaderListner là một trong những thành phần thiết yếu của khung Spring MVC, có lẽ là quan trọng nhất sau chính DispatcherServlet Nó được sử dụng để tạo bối cảnh gốc và chịu trách nhiệm tải các bean, được chia sẻ bởi nhiều DispatcherServlet giống như các bean liên quan đến lớp dịch vụ và lớp truy cập dữ liệu Nói chung, khi bạn phát triển các ứng dụng web dựa trên Spring MVC và cũng sử dụng Spring trong lớp dịch v ụ, bạn cần cung cấp hai ngữ cảnh ứng dụng Cái đầu tiên được định cấu hình bằng ContextLoaderListener và cái còn lại được đặt bằng DispatcherServlet DispatcherServlet chịu trách nhiệm tải các bean dành riêng cho thành phần web như bộ điều khiển, trình phâ n giải chế độ xem và ánh xạ xử lý trong khi, như tôi đã nói trước đây, ContextLoaderListener chịu trách nhiệm tải các bean tầng giữa và tầng dữ liệu tạo thành phần cuối của các ứng dụng Spring ContextLoaderListener giống như bất kỳ trình nghe Servlet nào khác và nó phải được khai báo trong bộ mô tả triển khai để lắng nghe các sự kiện Nó lắng nghe quá trình khởi động và tắt máy chủ bằng cách triển khai ServletContextListener và theo đó tạo và hủy các bean do Spring quản lý Mặc dù vậy, web xml chỉ là một c ách để định cấu hình ContextLoaderListener trong ứng dụng Spring MVC Từ Spring 3 1 và Servlet 3 0, bạn cũng có thể định cấu hình ContextLoaderListener mà không cần bộ mô tả triển khai và chỉ sử dụng Cấu hình Java 23 Chương 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐN G 3 1 Phân tích yêu cầu 3 1 1 Tác nhân của hệ thống Hình 3 1 Các tác nhân c ủ a h ệ th ố ng Xây d ự ng h ệ th ố ng v ớ i 2 tác nhân: Tác nhân KHACHHANG: Là ngư ờ i dùng h ệ th ố ng, th ự c hi ệ n vi ệ c mua s ắ m qu ầ n áo n ữ c ủ a c ử a hàng, có th ể đăng ký tài kho ả n và đăng nh ậ p đ ể th ự c hi ệ n các ch ứ c năng mua hàng Tác nhân QUANTRIVIEN: Là ngư ờ i qu ả n tr ị h ệ th ố ng, có th ể là ch ủ c ử a hàng hay ngư ờ i qu ả n lý, ứ ng v ớ i quy ề n qu ả n lý cao nh ấ t, qu ả n lý toàn b ộ h ệ th ố ng v ớ i các quy ề n như qu ả n lý khách hàng, qu ả n lý nhà cung c ấ p, qu ả n lý s ả n ph ẩ m, qu ả n lý đơn hàng,… 24 3 1 2 Các Ca s ử d ụ ng (Use case) c ủ a h ệ th ố ng Hình 3 2 Các Ca s ử d ụ ng 25 3 1 3 Biểu đồ các Ca sử dụng Hình 3 3 Bi ể u đ ồ UseCase c ủ a KHACHHANG 26 Hình 3 4 Bi ể u đ ồ UseCase c ủ a QUANTRIVIEN 27 3 1 4 Đặc tả các Ca sử dụng Đ ặ c t ả UseCase c ủ a tác nhân KHACHHANG: UseCase Đăng ký: - Mô tả: Dành cho các khách hàng vãng lai đăng ký làm thành viên để có thể mua hàng, và nhận nhiều ưu đãi vào những lần mua hàng sau - Đầu vào: Người dùng chọn chức năng đăng ký, và nhập đầy đủ các t hông tin bắt buộc - Thực hiện: Kiểm tra các trường thông tin nhập vào, nếu đầy đủ và đúng kiểu dữ liệu, sẽ lưu thông tin vào cơ sở dữ liệu và thêm thông tin thành viên vào cơ sở dữ liệu - Đầu ra: Đưa ra thông báo đăng ký thành công, hoặc thất bại UseCas e Đăng nh ậ p: - Mô tả: Cho phép khách hàng là thành viên hoặc quản trị viên đăng nhập vào hệ thống - Đầu vào: Người dùng nhập vào thông tin tên tài khoản và mật khẩu, sau đó chọn đăng nhập - Thực hiện: Kiểm tra tên đăng nhập và mật khẩu có trùng khớp với thông tin trong CSDL Kiểm tra quyền người dùng - Đầu ra: Nếu không đúng thông tin thì thông báo tài khoản không hợp lệ Ngược lại, tùy theo quyền người dùng, hiển thị màn hình quản trị hoặc màn hình của thành viên trang web UseCase Đăng xu ấ t: - Mô tả: Cho phép người dùng thoát khỏi hệ thống khi không sử dụng - Đầu vào: Người dùng chọn đăng xuất - Thực hiện: Hủy lưu thông tin đăng nhập - Đầu ra: Hiển thị trang chủ UseCase Qu ả n lý gi ỏ hàng: - Mô tả: Cho phép người dùng xem lại, kiểm tra những sản phẩm mình đã thêm vào giỏ hàng và có thể thực hiện các hành động sửa hoặc xóa giỏ hàng - Đầu vào: Người dùng chọn giỏ hàng để theo dõi - Thực hiện: Người dùng chọn giỏ hàng Hệ thống lấy dữ liệu giỏ hàng của người dùng 28 Hệ thống hiển thị chức năng người dùng có thể thực hiện: thêm, cập nhật, xóa: Nếu chọn “Thêm” thì sự kiện con “Thêm sản phẩm vào giỏ hàng ” được thực hiện Nếu chọn “Cập nhật” thì sự kiện con “Cập nhật số lượng giỏ hàng” được thực hiện Nếu chọn “Xóa” thì sự kiện con “Xóa giỏ hàng ” được thực hiện - Dòng sự kiện phụ: Thêm sản phẩm vào giỏ hàng : Người dùng chọn sản phẩm muốn thêm vào giỏ hàng Chọn thêm vào giỏ hàng Hệ thống kiểm tra số lượng sản phẩm : Nếu còn hàng thì thực hiện bước tiếp theo Nếu hết hàng thực hiện dòng sự kiện rẽ nhánh A1 H iển thị thông báo thêm sản phẩm vào giỏ thành công Hệ thống lưu thông tin sản phẩm trong giỏ Cập nhật số lượng giỏ hàng : Người dùng chọn sản phẩm muốn cập nhật Chọn số lượng mong muốn, và chọn cập nhật Hệ thống kiểm tra số lượng : Nếu còn hàng thì thực hiện bước tiếp theo Nếu hết hàng thực hiện dòng sự kiện rẽ nhánh A1 Hiển thị thông báo cập nhật thành công Hệ thống lưu số lượng sản phẩm cập nhật Xóa giỏ hàng : Người dùng chọn sản phẩm muốn xóa khỏi giỏ hàng Chọn xóa Hệ thống hiển thị thông báo xác nhận xóa bỏ: Nếu người dùng đồng ý thì hệ thống hiển thị danh sách sau khi đã được xóa Nếu không đồng ý thì hệ thống hủy sự kiện - Ca sử dụng kết thúc - Dòng sự kiện rẽ nhánh A1: Hệ thống thông báo số lượng không hợp lệ hay hết hàng Người dùng chọn l ại số lượng 29 Quay lại bước 3 của dòng sự kiện chính, hoặc hủy bỏ thao tác, khi đó ca sử dụng kết thúc - Điều kiện đầu ra: Các thông tin về sản phẩm trong giỏ hàng được cập nhật UseCase Bình lu ậ n và đánh giá s ả n ph ẩ m: - Mô tả: Cho phép các thành viên của hệ thống, sau khi mua hàng có thể bình luận, hoặc đánh giá cho sản phẩm mình đã dùng, để những người dùng khác tham khảo và lựa chọn mua - Đầu vào: Người dùng đã là thành viên của hệ thống, viết bình luận, hoặc chụp ảnh và đánh giá chất lượng sản phẩm, và chọn đăng nhận xét sản phẩm - Thực hiện: Lưu các bình luận và bài đánh giá của các thành viên vào CSDL - Đầu ra: Hiển thị các bình luận và đánh giá đó trong giao diện sản phẩm UseCase Đ ặ t hàng: - Mô tả: Cho phép thành viên đặt mua các sản phẩm của tran g web - Đầu vào: Sau khi thêm các sản phẩm muốn mua vào giỏ hàng, thành viên cần điền một số thông tin cần thiết để giao dịch thành công như địa chỉ, chọn phương thức thanh toán Để hoàn thành đơn hàng - Thực hiện: Lưu thông tin đơn hàng đã đặt, lưu ch i tiết đơn hàng vào cơ sở dữ liệu - Đầu ra: Hiển thị giao dịch thành công, hoặc thất bại UseCase Qu ả n lý tài kho ả n cá nhân: - Mô tả: Cho phép người dùng trong hệ thống quản lý thông tin cá nhân, đơn hàng, bài đánh giá theo từng tài khoản đăng nhập hệ thố ng - Đầu vào: Người dùng đăng nhập và chọn quản lý tài khoản cá nhân - Thực hiện: Người dùng chọn quản lý tài khoản cá nhân Hệ thống hiển thị chức năng người dùng có thể thực hiện: cập nhật thông tin, hủy đơn, cập nhật bài : Nếu chọn “ Cập nhật thông tin ” thì sự kiện con “ Cập nhật thông tin cá nhân ” được thực hiện Nếu chọn “ Hủy đơn ” thì sự kiện con “ Hủy đơn hàng ” được thực hiện Nếu chọn “ Cập nhật bài ” thì sự kiện con “ Cập nhật bài đánh giá ” được thực hiện - Dòng sự kiện phụ: 30 Cập nhật thông tin cá nhân : Hệ thống load form cập nhật thông tin cá nhân Người dùng nhập thông tin muốn thay đổi, và chọn cập nhật Hệ thống kiểm tra các trường dữ liệu: Nếu thỏa mãn thì thực hiện bước tiếp theo Nếu không thì thực hiện dòng sự kiện rẽ nhánh A1 Hiển thị thông bá o cập nhật thông tin cá nhân thành công Hệ thống cập nhật thông tin cá nhân của người dùng vào cơ sở dữ liệu Hủy đơn hàng : Người dùng chọn đơn hàng muốn hủy Chọn hủy đơn hàng Hệ thống hiển thị thông báo xác nhân hủy : Nếu đồng ý thì thực hiện bước tiếp theo Nếu không thì hệ thống hủy sự kiện Hệ thống cập nhật trạng thái hủy đơn hàng vào cơ sở dữ liệu Xóa bài đánh giá : Người dùng chọn bài đánh giá muốn xóa Chọn xóa bài đánh giá Hệ thống hiển thị thông báo xác nhận xóa : Nếu đồng ý thì thực hiện hiển t hị bài đánh giá sau khi xóa Nếu không đồng ý thì hủy sự kiện - Ca sử dụng kết thúc - Dòng sự kiện rẽ nhánh A1: Hệ thống thông báo trường dữ liệu nhập không hợp lệ Người dùng nhập lại các thông tin Quay lại bước 3 của dòng sự kiện chính, hoặc hủy bỏ thao tác, khi đó ca sử dụng kết thúc - Điều kiện đầu ra: Các thông tin cá nhân, đơn hàng và bài đánh giá của tài khoản đó được cập nhật Đ ặ c t ả UseCase c ủ a tác nhân QUANTRIVIEN: UseCase Qu ả n lý thu ộ c tính: - Mô tả: Giúp quản trị viên quản lý các thuộc tính có thể có trong các sản phẩm, 31 với các chức năng thêm, sửa, xóa - Đầu vào: Quản trị viện chọn chức năng cần thực hiện tại trang quản lý thuộc tính, và nhập đầy đủ thông tin với các chức năng thêm, sửa - Thực hiện: Kiểm tra những trường thông tin đã đ ầy đủ, kiểm tra định dạng và nội dung cho các trường ảnh Nếu đúng thì lưu hoặc cập nhật thông tin trong cơ sở dữ liệu Với chức năng xóa, thực hiện xóa thuộc tính theo mã - Đầu ra: Hiển thị trang danh sách thuộc tính Thông báo lỗi nếu các chức năng thêm , sửa, xóa có vấn đề UseCase Qu ả n lý danh m ụ c: - Mô tả: Quản trị viên có thể quản lý các sản phẩm theo danh mục Với các chức năng có trong trang quản lý danh mục là thêm, sửa và xóa - Đầu vào: Quản trị viên chọn trang quản lý danh mục, và chọn một trong các chức năng thêm, sửa, xóa - Thực hiện: Lấy thông tin các danh mục sản phẩm trong cơ sở dữ liệu Kiểm tra các trường dữ liệu bắt buộc nhập và kiểu định dạng đã chính xác chưa Lưu hoặc cập nhật thông tin danh mục vào cơ sở dữ liệu, hoặc xóa danh mục th eo mã - Đầu ra: Hiển thị danh sách danh mục, và ẩn các danh mục đã xóa Hiển thị thông báo thành công hoặc lỗi với các chức năng thêm, sửa, xóa UseCase Qu ả n lý s ả n ph ẩ m: - Mô tả: Giúp quản lý các sản phẩm với các chức năng cơ bản như thêm, sửa, xóa Ngoà i ra , có thể in danh sách và tìm kiếm các sản phẩm theo mã, tên và danh mục - Đầu vào: Truy cập vào trang quản lý sản phẩm, quản trị viên chọn một trong các chức năng thêm, sửa, xóa, in hoặc tìm kiếm Với các chức năng thêm, sửa yêu cầu nhập đầy đủ các tr ường dữ liệu Với chức năng tìm kiếm, nhập từ khóa cần tìm theo mã, tên hoặc chọn danh mục - Thực hiện: Lấy thông tin danh sách sản phẩm trong CSDL Lưu hoặc cập nhật dữ liệu sản phẩm vào CSDL với thao tác thêm, sửa Xóa dữ liệu khỏi CSDL theo mã với thao tác chọn xóa In danh sách các sản phẩm với thao tác chọn in Và tìm kiếm sản phẩm trong CSDL theo từ khóa đã nhập - Đầu ra: Hiển thị danh sách sản phẩm theo yêu cầu Ẩn các sản phẩm đã xóa Thông báo lỗi trong quá trình điền các thông tin sản phẩm 32 UseC ase Qu ả n lý nh ậ n xét & đánh giá: - Mô tả: Quản lý các nhận xét và đánh giá của những khách hàng đã mua hàng trên trang web Có thể xem và xóa các nhận xét - Đầu vào: Khi quản trị viên chọn trang quản lý nhận xét và đánh giá Nhấn chọn chức năng xóa một nh ận xét, đánh giá nào đó - Thực hiện: Lấy thông tin các nhận xét và đánh giá các sản phẩm trong cơ sở dữ liệu Xóa nhận xét và đánh giá sản phẩm khỏi cơ sở dữ kiệu khi chọn xóa - Đầu ra: Hiển thị danh sách các nhận xét và đánh giá của tất cả thành viên Ẩ n danh sách các nhận xét và đánh giá đã xóa UseCase Qu ả n lý bình lu ậ n: - Mô tả: Tương tự như quản lý nhận xét và đánh giá, trang quản lý bình luận thuộc quyền quản trị viên Có các chức năng xem và xóa - Đầu vào: Khi quản trị viên chọn trang quản lý bình luận, chọn xóa một số bình luận - Thực hiện: Lấy thông tin mục bình luận trong cơ sở dữ liệu Xóa những bình luận chọn theo mã bình luận - Đầu ra: Hiển thị thông tin các bình luận trên trang web Ẩn những bình luận đã xóa UseCase Qu ả n lý tiêu đ ề : - Mô tả: Giúp quản trị viên thêm một số tiêu đề dưới chân trang web, bổ sung cho trang web sinh động hơn Với một số chức năng cơ bản thêm, sửa, xóa - Đầu vào: Người quản trị chọn trang quản lý tiêu đề Lựa chọn thêm, sửa hoặc xóa tiêu đề Với lựa chọn thêm và sửa, yêu cầu nhập đầy đủ nộp dung - Thực hiện: Lấy thông tin các tiêu đề đã có trong cơ sở dữ liệu Lưu hoặc cập nhật các thông tin tiêu đề vào cơ sở dữ liệu, và xóa các tiêu đề theo mã khi chọn xóa tiêu đề - Đầu ra: Hiển thị các thông tin tiêu đề sau k hi cập nhật đầy đủ Ẩn các tiêu đề đã xóa Hiển thị thông báo thành công hay lỗi với các lựa chọn UseCase Qu ả n lý bài vi ế t: - Mô tả: Cho phép người quản trị viên quản lý các bài viết Thực hiện thêm, sửa và xóa các bài viết 33 - Đầu vào: Trong trang quản lý bài viết, quản trị viên chọn chức năng thêm, sửa hoặc xóa - Thực hiện: Lấy thông tin các bài viết trong cơ sở dữ liệu Kiểm tra các trường dữ liệu nhập vào có đầy đủ và đúng kiểu định dạng không, lưu và cập nhật những bài viết với chức năng thêm và sửa Xóa các bài viết theo mã bài viết theo với chức năng xóa - Đầu ra: Hiển thị các thông tin bài viết Thông báo lỗi hay thành công với những chức năng thêm, sửa Ẩn bài viết đã xóa UseCase Qu ả n lý thành viên: - Mô tả: Quản trị viên có thể xem và xóa thông tin thành viên - Đầu vào: Chọn trang quản lý thành viên Chọn chức năng xóa khi cần - Thực hiện: Lấy thông tin các tài khoản thành viên trong cơ sở dữ liệu Xóa thành viên được chọn - Đầu ra: Load lại danh sách thành viên và hiển thị UseCase Qu ả n lý nh à cung c ấ p: - Mô tả: Quản lý các nhà cung cấp cung cấp các sản phẩm Với các chức năng thuộc quyền quản trị viên: thêm, sửa, xóa - Đầu vào: Trong trang quản lý nhà cung cấp, chọn một trong các chức năng thêm, sửa hoặc xóa - Thực hiện: Lấy thông tin các nhà cung cấp trong cơ sở dữ liệu Kiểm tra các trường dữ liệu nhập đã đầy đủ chưa, với chức năng thêm và sửa Xóa dữ liệu của nhà cung cấp theo mã - Đầu ra: Hiển thị thông tin các nhà cung cấp Ẩn thông tin các nhà cung cấp đã xóa Thông báo thành công ha y thất bại với các chức năng tương ứng UseCase Qu ả n lý đơn hàng: - Mô tả: Sau khi các khách hàng của hệ thống đặt hàng trên trang bán hàng thì đơn đặt hàng được hiển thị trong danh sách duyệt Quản trị viên cần xác nhận , nếu đúng thì chuyển tới bước gửi h àng cho bên giao hàng - Đầu vào: Quản trị
NỘI DUNG NGHIÊN CỨU
1.1.1 Khái niệm thương mại điện tử
Khi nói về khái niệm thương mại điện tử nhiều người nhầm lẫn với khái niệm của Kinh doanh điện tử , thương mại điện tử đôi khi được xem là tập con của kinh doanh điện tử Thương mại điện tử chú trọng đến việc mua bán trực tuyến (tập trung bên ngoài), trong khi đó kinh doanh điện tử là việc sử dụng Internet và các công nghệ trực tuyến tạo ra quá trình hoạt động kinh doanh hiệu quả dù có hay không có lợi nhuận, vì vậy tăng lợi ích với khách hàng (tập trung bên trong)
Thương mại điện tử bao gồm việc sản xuất, quảng cáo, bán hàng và phân phối sản phẩm được mua bán và thanh toán trên mạng Internet, nhưng được giao nhận một cách hữu hình, cả các sản phẩm giao nhận cũng như những thông tin số hoá thông qua mạng Internet"
1.1.2 Lợi ích của việc sử dụng thương mại điện tử
- Có các sản phẩm và dịch vụ giá rẻ để bán
- Mang đến cho khách hàng nhiều sự lựa chọn Giao dịch có thể được thực hiện
- Nhận thông tin về sản phẩm và dịch vụ một cách kịp thời
- Cho phép khách hàng lựa chọn những sản phẩm đáp ứng tốt nhất nhu cầu của họ
- Hỗ trợ đấu giá ảo
- Cho phép khách hàng tiếp xúc và trao đổi ý kiến với các khách hàng khác
- Cho phép liên kết các hoạt động trong chuỗi giá trị (Tích hợp chuỗi giá trị)
2 Đối với tổ chức kinh doanh
- Mở rộng thị trường trên toàn quốc và toàn cầu
- Có thể phục vụ một lượng lớn khách hàng trên thế giới với chi phí thấp
- Giảm số lượng tài liệu liên quan đến việc tạo, xử lý, phân phối, lưu trữ và truy xuất lên đến 90 phần trăm
- Giảm chi phí viễn thông vì internet rẻ hơn điện thoại
- Cho phép các công ty nhỏ cạnh tranh với các công ty lớn
CƠ SỞ LÝ THUYẾT VÀ NỀN TẢNG ĐỂ XÂY DỤNG WEBSITE
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ử
Khi nói về khái niệm thương mại điện tử nhiều người nhầm lẫn với khái niệm của Kinh doanh điện tử , thương mại điện tử đôi khi được xem là tập con của kinh doanh điện tử Thương mại điện tử chú trọng đến việc mua bán trực tuyến (tập trung bên ngoài), trong khi đó kinh doanh điện tử là việc sử dụng Internet và các công nghệ trực tuyến tạo ra quá trình hoạt động kinh doanh hiệu quả dù có hay không có lợi nhuận, vì vậy tăng lợi ích với khách hàng (tập trung bên trong)
Thương mại điện tử bao gồm việc sản xuất, quảng cáo, bán hàng và phân phối sản phẩm được mua bán và thanh toán trên mạng Internet, nhưng được giao nhận một cách hữu hình, cả các sản phẩm giao nhận cũng như những thông tin số hoá thông qua mạng Internet"
1.1.2 Lợi ích của việc sử dụng thương mại điện tử
- Có các sản phẩm và dịch vụ giá rẻ để bán
- Mang đến cho khách hàng nhiều sự lựa chọn Giao dịch có thể được thực hiện
- Nhận thông tin về sản phẩm và dịch vụ một cách kịp thời
- Cho phép khách hàng lựa chọn những sản phẩm đáp ứng tốt nhất nhu cầu của họ
- Hỗ trợ đấu giá ảo
- Cho phép khách hàng tiếp xúc và trao đổi ý kiến với các khách hàng khác
- Cho phép liên kết các hoạt động trong chuỗi giá trị (Tích hợp chuỗi giá trị)
2 Đối với tổ chức kinh doanh
- Mở rộng thị trường trên toàn quốc và toàn cầu
- Có thể phục vụ một lượng lớn khách hàng trên thế giới với chi phí thấp
- Giảm số lượng tài liệu liên quan đến việc tạo, xử lý, phân phối, lưu trữ và truy xuất lên đến 90 phần trăm
- Giảm chi phí viễn thông vì internet rẻ hơn điện thoại
- Cho phép các công ty nhỏ cạnh tranh với các công ty lớn
- Quản lý sản xuất hiệu quả hơn
- Giúp mọi người có thể làm việc tại nhà ít đi lại hơn làm cho giao thông không bị tắc nghẽn giảm các vấn đề ô nhiễm không khí
- Làm cho việc mua hàng hóa rẻ hơn Những người không giàu có có thể nâng cao tiêu chuẩn bán hàng hóa và dịch vụ
4 Đối với nền kinh tế
- Các doanh nghiệp vừa và nhỏ ở các nước đang phát triển có thể được hưởng lợi từ việc tiếp cận thị trường rộng rãi trên quy mô toàn cầu
- Làm cho các doanh nghiệp ở các nước đang phát triển tiếp cận với công nghệ mới
- Vai trò của người trung gian bị giảm sút giảm chi phí giao dịch Các rào cản gia nhập thị trường cũng được giảm bớt
- Cho phép người dân nông thôn tìm hàng hóa hoặc dịch vụ giống như ở thành phố
- tăng cường độ cạnh tranh làm cho nó hữu ích cho người tiêu dùng
*Tóm tắt các lợi ích của thương mại điện tử Đó là thương mại không biên giới Không có sự phân chia lục địa hay quốc gia Không giới hạn khoảng cách và hành trình Bạn có thể mua sản phẩm từ một cửa hàng duy nhất và đi du lịch để mua sản phẩm từ các cửa hàng khác ở các châu lục khác nhau chỉ trong vài phút
Tiếp cận nhóm khách hàng mục tiêu lớn trên khắp thế giới Cơ sở người mua đang mở rộng Bạn có thể giao dịch 24 giờ một ngày và mở cửa hàng ngày.
Tổng quan về ngôn ngữ java
1.2.1 Nguồn gốc của ngôn ngữ java
Java là một ngôn ngữ lập trình hướng đối tượng, dựa trên lớp được thiết kế để có càng ít phụ thuộc thực thi càng tốt Nó là ngôn ngữ lập trình có mục đích chung cho phép các nhà phát triển ứng dụng viết một lần, chạy ở mọi nơi, nghĩa là mã Java đã biên dịch có thể chạy trên tất cả các nền tảng hỗ trợ Java mà không cần biên dịch lại Các ứng dụng Java thường được biên dịch thành bytecode có thể chạy trên bất kỳ máy các khả năng động (chẳng hạn như phản ánh và sửa đổi mã thời gian chạy) thường không có sẵn trong các ngôn ngữ biên dịch truyền thống Tính đến năm 2019 Java là một trong những ngôn ngữ lập trình phổ biến nhất được sử dụng theo GitHub, đặc biệt cho các ứng dụng web máy khách
Tính đến tháng 9 năm 2020, phiên bản mới nhất là Java 15, với Java 11, một phiên bản hỗ trợ dài hạn (LTS), được phát hành vào 25 tháng 9 năm 2018 Oracle phát hành bản cập nhật miễn phí cho công chúng với phiên bản kế thừa Java 8 LTS vào tháng 1 năm 2019 cho mục đích sử dụng thương mại, mặc dù nếu không nó sẽ vẫn hỗ trợ Java 8 với các bản cập nhật công khai cho mục đích sử dụng cá nhân vô thời hạn Các nhà cung cấp khác đã bắt đầu cung cấp các bản miễn phí của OpenJDK 8 và 11 mà vẫn đang nhận được bảo mật và các nâng cấp khác
Oracle (và những công ty khác) khuyên người dùng nên gỡ cài đặt các phiên bản Java đã lỗi thời vì những rủi ro nghiêm trọng do các vấn đề bảo mật chưa được giải quyết Vì Java 9, 10, 12, 13 và 14 không còn được hỗ trợ, Oracle khuyên người dùng nên chuyển ngay sang phiên bản mới nhất (hiện tại là Java 15) hoặc bản phát hành LTS
1.2.2 Đặc điểm của ngôn ngữ java
Hướng đối tượng: Trong Java, mọi thứ đều được coi là Object và có thể mở rộng Java vì nó hoàn toàn dựa trên mô hình Object Đơn giản: Java được thiết kế với mục đích giúp người học dễ dàng hơn trong việc tiếp thu kiến thức Vì vậy, nếu bạn đã hiểu cơ bản Java là gì thì khi học, các bạn có thể nắm bắt ngôn ngữ lập trình này rất nhanh
Kiến trúc trung lập: Trình biên dịch của Java có khả năng tạo ra một định dạng file object có kiến trúc trung lập Đồng thời, Java còn làm cho code sau khi biên dịch có thể hoạt động được trên nhiều bộ vi xử lý cùng với sự có mặt của Java runtime system
Kiến trúc Trung lập: Các trình biên dịch Java có thể tạo một định dạng tệp đối tượng trung lập về mặt kiến trúc Đồng thời, Java cũng cho phép mã đã biên dịch chạy trên nhiều bộ xử lý với hệ thống thời gian chạy Java
Bảo mật: Khi tìm hiểu Java là gì, chắc chắn các bạn sẽ biết đến tính bảo mật tuyệt vời của Java Nhờ tính năng an toàn của mình, Java có khả năng cho phép phát triển những hệ thống hoàn toàn không có virus hay giả mạo
Portable: Đây là đặc điểm khá nổi bật của Java bởi nó là kiến thức trung lập và không phụ thuộc vào việc thực hiện bất kỳ những đặc điểm chính nhất khi nói về Portable của Java Vì thế, bạn có thể đưa bytecode của Java lên bất cứ nền tảng nào của mình Đa luồng: Bạn có thể viết các chương trình với mục đích thực hiện nhiều tác vụ cùng một lúc nhờ tính năng đa luồng của Java Tính năng này còn cho phép các nhà phát triển tự xây dựng những ứng dụng tương tác hoạt động một cách trơn tru
Thông dịch: Bytecode của Java được biên dịch trực tiếp đến các nền tảng gốc và nó hoàn toàn không được lưu trữ ở bất cứ nơi đâu
Mạnh mẽ: Java là gì và tại sao Java lại có đặc điểm mạnh mẽ? Câu trả lời là vì Java luôn nỗ lực loại trừ tất cả những tình huống bị lỗi bằng cách nhấn mạnh và chủ yếu là chỉ ra lỗi thời gian biên dịch cũng như kiểm tra runtime
Hiệu suất cao: Java có đặc điểm này là vì nó sử dụng trình biên dịch Just – In- Time nên cho hiệu suất cao và phát hiện lỗi nhanh chóng
Linh động: Java được đánh giá là năng động hơn các loại ngôn ngữ lập trình khác hiện nay như C hay C++ và được thiết kế với khả năng thích nghi dễ dàng trong môi trường đang phát triển Vì thế, các chương trình của Java có thể mang theo một lượng
1.2.3 Ưu điểm ngôn ngữ java
Các chương trình Java được viết có thể chạy trên nhiều nền tảng mà không cần phải sửa đổi hoặc biên dịch lại, giảm chi phí và thời gian cần thiết để chuyển hoặc làm cho chương trình trở nên đa nền tảng
Java là một ngôn ngữ hướng đối tượng phù hợp để phát triển các hệ thống phức tạp Phát triển chương trình dựa trên đối tượng cho phép chúng ta sử dụng các từ hoặc tên tồn tại trong hệ thống để thiết kế chương trình làm cho nó dễ hiểu hơn
Tổng quan về MySQL, Tomcat
MySQL là chương trình dùng để quản lý hệ thống cơ sở dữ liệu (CSDL), trong đó CSDL là một hệ thống lưu trữ thông tin được sắp xếp rõ ràng, phân lớp ngăn nắp những thông tin mà mình lưu trữ
MySQL là một hệ quản trị cơ sở dữ liệu mã nguồn mở, chính vì vậy mà nó chỉ hỗ trợ những ngôn ngữ theo hướng “mở”, các mã nguồn như C++ sẽ không thể sử dụng MySQL cho những dự án của mình, ngoài ra thì theo công ty từ dự án bugnetproject của chính Microsoft thì họ cũng đã xác nhận rằng ngôn ngữ C++ hay Net Development sẽ không hỗ trợ trên nền tảng mySQL Ưu điểm của MySQL
Khả năng mở rộng và tính linh hoạt
Máy chủ cơ sở dữ liệu MySQL đáp ứng nhiều tính năng linh hoạt, nó có sức chứa để xử lý các ứng dụng được nhúng sâu với 1MB dung lượng để chạy kho dữ liệu khổng lồ lên đến hàng terabytes thông tin Đặc tính đáng chú ý của MySQL là sự linh hoạt về flatform với tất cả các phiên bản của Windows, Unix và Linux đang được hỗ trợ Và đương nhiên, tính chất mã nguồn mở của MySQL cho phép tùy biến theo ý muốn để thêm các yêu cầu phù hợp cho database server
Với kiến trúc storage-engine cho phép các chuyên gia cơ sở dữ liệu cấu hình máy chủ cơ sở dữ liệu MySQL đặc trưng cho các ứng dụng chuyên biệt Dù ứng dụng là website dung lượng lớn phục vụ hàng triệu người/ngày hay hệ thống xử lý giao dịch tốc độ cao thì MySQL đều đáp ứng được khả năng xử lý khắt khe của mọi hệ thống Với những tiện ích tải tốc độ cao, cơ chế xử lý nâng cao khác và đặc biệt bộ nhớ caches, MySQL đưa ra tất cả nhưng tính năng cần có cho hệ thống doanh nghiệp khó tính hiện nay
MySQL đảm bảo sự tin cậy và có thể sử dụng ngay MySQL đưa ra nhiều tùy chọn có thể “mì ăn liền” ngay từ cấu hình tái tạo chủ/tớ tốc độ cao, để các nhà phân phối thứ 3 có thể đưa ra những điều hướng có thể dùng ngay duy nhất cho server cơ sở dữ liệu MySQL
Hỗ trợ giao dịch mạnh mẽ
MySQL đưa ra một trong số những engine giao dịch cơ sở dữ liệu tốt nhất trên thị trường Các đặc trưng bao gôm, khóa mức dòng không hạn chế, hỗ trợ giao dịch ACID hoàn thiện, khả năng giao dịch được phân loại và hỗ trợ giao dịch đa dạng (multi-version) mà người đọc không bao giờ cản trở cho người viết và ngược lại Dữ liệu được đảm bảo trong suốt quá trình server có hiệu lực, các mức giao dịch độc lập được chuyên môn hóa, khi phát hiện có lỗi khóa chết ngay tức thì
Bảo vệ dữ liệu mạnh mẽ
Việc quan trong của các doanh nghiệp là bảo mật dữ liệu, MySQL tích hợp các tính năng bảo mật an toàn tuyệt đối Với việc xác nhận truy cập cơ sở dữ liệu, MySQL trang bị các kỹ thuật mạnh, chỉ có người sử dụng đã được xác nhận mới truy cập được vào cơ sở dữ liệu Chứng chỉ SSH và chứng chỉ SSL cũng được hỗ trợ để đảm bảo kết nối an toàn và bảo mật Tiện ích backup và recovery cung cấp bởi MySQL và các hãng phần mềm thứ 3 cho phép backup logic và vật lý cũng như recovery toàn bộ hoặc tại một thời điểm
Phát triển ứng dụng toàn diện
MySQL trở thành cơ sở dữ liệu mã nguồn mở phổ biến nhất hiện nay một phần là do cung cấp hỗ trợ hỗn hợp cho bất cứ sự phát triển ứng dụng nào cần Trong cơ sở dữ liệu, hỗ trợ có thể được tìm thấy trong các trigger, stored procedure, cursor, view, ANSI-standard SQL,… MySQL cũng cung cấp các bộ kết nối như: JDBC, ODBC,… để tất cả các form của ứng dụng sử dụng MySQL như một erver quản lí dữ liệu được đề xuất hàng đầu
Windows, Macintosh hoặc Unix thì quá trình cũng diễn ra nhanh chóng Khi đã cài đặt, tính năng quản lý như tự khởi động lại, tự động mở rộng không gian và cấu hình động sẵn sàng cho người quản trị cơ sở dữ liệu bắt đầu làm việc MySQL cung cấp toàn bộ công cụ quản lý đồ họa cho phép một DBA quản lý, sửa chữa và điều khiển hoạt động của nhiều server MySQL từ một máy trạm đơn
Mã nguồn mở tự do và hỗ trợ 24/7
Nhiều doanh nghiệp còn băn khoăn trong việc giao toàn bộ cho phần mềm mã nguồn mở bởi khó có thể tìm được hỗ trợ hay bảo mật an toàn phục vụ chuyên nghiệp Với MySQL mọi sự cam kết đều rõ ràng, MySQL cam kết bồi thường khi gặp sự cố Chi phí sở hữu thấp nhất
Sử dụng MySQL cho các dự án, doanh nghiệp đều nhận thấy sự tiết kiệm chi phí đáng kể Người dùng MySQL cũng không mất nhiều thời gian để sữa chữa hoặc vấn đề thời gian chết
PHP là viết tắt của PHP Hypertext Preprocessor, ban đầu cho Công cụ Trang chủ Cá nhân PHP là ngôn ngữ máy tính ngôn ngữ lập trình script, loại ngôn ngữ lập trình này được lưu trữ trong một tập tin có tên là script, khi chạy nó yêu cầu một tập hợp các biến Ví dụ về ngôn ngữ script là JavaScript, Perl,… Bản chất của PHP khác với các ngôn ngữ script khác là PHP được phát triển và thiết kế Để sử dụng trong việc tạo các tài liệu HTML có thể tự động chèn hoặc chỉnh sửa nội dung Do đó, PHP được cho là ngôn ngữ kịch bản phía máy chủ hoặc được nhúng HTML, nghĩa là trong mọi Trước khi một máy tính đóng vai trò là một máy chủ Web gửi cho chúng ta một trang web được viết bằng PHP, nó sẽ hoàn tất việc xử lý các lệnh có sẵn và sau đó gửi kết quả cho chúng tôi Kết quả cuối cùng là trang web mà chúng tôi thấy PHP là một trong những công cụ quan trọng nhất cho phép chúng tôi tạo các trang web động (trang web tương tác với người dùng) hiệu quả hơn và có nhiều tính năng hơn.
Mô tả hệ thống bán hàng áo quần tại Lào
Đây là một website nhằm bán và giới thiệu rộng rãi các mặt hà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:
+ 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
+ Đặ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 nhập vào những thông tin cần thiết, tránh những đòi hỏi hay những thông tin yêu cầu quá nhiều từ phía khách hàng, tạo cảm giác thoải mái, riêng tư cho khách hàng
+ Theo dõi đơn hàng của mình
- Về hoạt động của nhà quản trị:
+ Là người có quyền đăng nhập, quản lý và làm chủ mọi hoạt động của hệ thống trang web Nhà quản lý có một username và một password để truy cập vào hệ thống 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
+ Thêm, xoá, sửa thông tin sản phẩm vào cơ sở dữ liệu
+ Kiểm tra và xử lý đơn đặt hàng.
TÌM HIỂU VỀ SPRING MVC
Spring Framework
Spring là một Framework phát triển các ứng dụng Java được sử dụng bởi hàng triệu lập trình viên Nó giúp tạo các ứng dụng có hiệu năng cao, dễ kiểm thử, sử dụng lại code…
Spring nhẹ và trong suốt (nhẹ: kích thước nhỏ, version cơ bản chỉ khoảng 2MB; trong suốt: hoạt động một cách trong suốt với lập trình viên)
Spring là một mã nguồn mở, được phát triển, chia sẻ và có cộng đồng người dùng rất lớn
Spring Framework được xây dựng dựa trên 2 nguyên tắc design chính là: Dependency Injection và Aspect Oriented Programming
Những tính năng core (cốt lõi) của Spring có thể được sử dụng để phát triển Java Desktop, ứng dụng mobile, Java Web Mục tiêu chính của Spring là giúp phát triển các ứng dụng J2EE một cách dễ dàng hơn dựa trên mô hình sử dụng POJO (Plain Old Java Object)
Spring được chia làm nhiều module khác nhau, tùy theo mục đích phát triển ứng dụng mà ta dùng 1 trong các module đó
Bao gồm các module spring core, beans, context và expression languate (EL)
Spring core, bean cung cấp tính năng IOC và Dependency Injection
Spring Context hỗ trợ đa ngôn ngữ (internationalization), các tính năng Java EE như EJB, JMX
Expression Language được mở rộng từ Expresion Language trong JSP Nó cung cấp hỗ trợ việc setting/getting giá trị, các method cải tiến cho phép truy cập collections, index, các toán tử logic…
Một trong những tính năng chính của Spring framework là vùng chứa IoC (Inversion of Control) Spring IoC container chịu trách nhiệm quản lý các đối tượng của một ứng dụng Nó sử dụng tiêm phụ thuộc để đạt được sự đảo ngược của kiểm soát
Các giao diện BeanFactory và ApplicationContext đại diện cho vùng chứa Spring IoC Ở đây, BeanFactory là giao diện gốc để truy cập vùng chứa Spring Nó cung cấp các chức năng cơ bản để quản lý bean
Mặt khác, ApplicationContext là một giao diện con của BeanFactory Do đó, nó cung cấp tất cả các chức năng của BeanFactory
Hơn nữa, nó cung cấp nhiều chức năng dành riêng cho doanh nghiệp Các tính năng quan trọng của ApplicationContext là giải quyết các thông báo, hỗ trợ quốc tế hóa, xuất bản các sự kiện và các ngữ cảnh cụ thể của lớp ứng dụng Đây là lý do tại sao chúng tôi sử dụng nó làm vùng chứa Spring mặc định
2.1.2.3 Spring AOP (Aspect Oriented programming)
Aspect Oriented Programming (AOP) – lập trình hướng khía cạnh: là một kỹ thuật lập trình (kiểu như lập trình hướng đối tượng) nhằm phân tách chương trình thành cách moudule riêng rẽ, phân biệt, không phụ thuộc nhau
Khi hoạt động, chương trình sẽ kết hợp các module lại để thực hiện các chức năng nhưng khi sửa đổi 1 chức năng thì chỉ cần sửa 1 module
AOP không phải dùng để thay thế OOP mà để bổ sung cho OOP.
Hình 2.1 Cơ chế hoạt động Spring AOP Ưu điểm:
Cài đặt chương trình một cách trong sáng: mỗi một module chỉ làm cái mà nó cần phải làm, giải quyết được hai vấn đề code tangling và code scattering
Tái sử dụng dễ dàng
Khái nhiệm khá trừu tượng, độ trừu tượng của chương trình cao
Luồng chương trình phức tạp
Mẫu Đối tượng Truy cập Dữ liệu (DAO) là một mẫu cấu trúc cho phép chúng ta tách lớp ứng dụng / nghiệp vụ khỏi lớp bền vững (thường là cơ sở dữ liệu quan hệ nhưng có thể là bất kỳ cơ chế bền vững nào khác) bằng cách sử dụng một API trừu tượng
API ẩn khỏi ứng dụng tất cả sự phức tạp của việc thực hiện các hoạt động CRUD trong cơ chế lưu trữ bên dưới Điều này cho phép cả hai lớp phát triển riêng biệt mà không cần biết gì về nhau
Trong hướng dẫn này, chúng ta sẽ đi sâu vào cách triển khai của mẫu và chúng ta sẽ tìm hiểu cách sử dụng nó để trừu tượng hóa các cuộc gọi tới trình quản lý thực thể JPA
Spring cung cấp API giúp lập trình viên dễ dàng tích hợp Spring với ORM Framework như JPA(Java Persistence API), JDO(Java Data Objects), Oracle Toplink and iBATIS
Home ằ Spring ằ Spring Hibernate – Giới thiệu Spring ORM, Code vớ dụ Spring Hibernate
Spring Hibernate – Giới thiệu Spring ORM, Code ví dụ Spring Hibernate
Spring Hibernate – Giới thiệu Spring ORM, Code ví dụ Spring Hibernate
Spring cung cấp API giúp lập trình viên dễ dàng tích hợp Spring với ORM Framework như JPA(Java Persistence API), JDO(Java Data Objects), Oracle Toplink and iBATIS
Lợi ích của ORM Framework với Spring
Có khá nhiều lợi ích khi kết hợp Spring Framework với ORM framework:
Viết code ít hơn: Không cần phải viết code trước và sau khi truy vấn với database qua connection (ví dụ start connection, start transaction, commit transaction, close connection…)
Xử lý exception tốt hơn: Spring framewrok cung cấp các API để xử lý exception với ORM framework
Tích hợp quản lý transaction: Spring hỗ trợ khả năng quản lý transaction qua AOP (Xem lại ví dụ xử lý transaction với JDBC)
Spring framework bao gồm nhiều mô-đun như lõi, bean, ngữ cảnh, ngôn ngữ biểu thức, AOP, Aspects, Instrumentation, JDBC, ORM, OXM, JMS, Transaction, Web, Servlet, Struts, v.v Các mô-đun này được nhóm thành Test, Core Container , AOP, Các khía cạnh, Thiết bị đo, Truy cập / Tích hợp dữ liệu, Web (MVC / Điều khiển từ xa) như được hiển thị trong sơ đồ sau
Spring MVC cung cấp kiến trúc model-view-controller và các thành phần để có thể được sử dụng phát triển các ứng dụng web Mô hình MVC phân tách các khía cạnh khác nhau của ứng dụng (logic đầu vào, logic business, và giao diện người dùng logic), và cung cấp một kết nối giữa các yếu tố này
Model đóng gói dữ liệu ứng dụng và nói chung họ sẽ bao gồm các POJO
Tầng View chịu trách nhiệm hiển thị các dữ liệu Model và nói chung nó tạo ra HTML mà trình duyệt hiển thị ra
Controller chịu trách nhiệm xử lý yêu cầu người sử dụng và xây dựng Model phù hợp và chuyển nó qua tầng View để hiển thị
MVC framework được thiết kế xoay quanh DispatcherServlet - cho phép xử lý tất cả các HTTP request và response Sơ đồ dưới đây giải thích flow xử lý request của Spring Web MVC DispatcherServlet
Hình 2.2 Cơ chế hoạt động mô hình MVC Đây là chuỗi các sự kiện tương ứng với một yêu cầu HTTP đến DispatcherServlet:
Sau khi nhận được một yêu cầu HTTP, DispatcherServlet chỉ định cho HandlerMapping gọi Controller thích hợp
Controller sẽ nhận yêu cầu và gọi các Service tương ứng thích hợp dựa trên GET được sử dụng hoặc phương thức POST Các phương thức service này sẽ thiết lập một nhóm các dữ liệu Model được định nghĩa theo logic business và trả về tên View cho DispatcherServlet
Các DispatcherServlet sẽ được các ViewResolver hỗ trợ để chọn được View đã định nghĩa tương ứng với Request
Khi View được hoàn thiện, Các DispatcherServlet sẽ chuyển dữ liệu Model tới View và render trên trình duyệt
Spring MVC
MVC là viết tắt của 3 từ Model – View – Controller, đây là một mô hình thiết kế sử dụng trong kĩ thuật phần mềm (lập trình) Mỗi một từ là mỗi một mô hình riêng nhưng cả ba tạo thành 1 mô hình lớn
M là Model: một cấu trúc dữ liệu chắc chắn, Model có chức năng chuẩn bị dữ liệu để cung cấp cho Controller
Model là thành phần chính đảm nhận nhiệm vụ lưu trữ dữ liệu và các bộ phận logic liên quan của toàn bộ ứng dụng đó, là cầu nối giữa View và Controller Model chịu trách nhiệm cho các thao tác giữa Controller hoặc bất kì logic nghiệp vụ nào khác liên quan đến dữ liệu như: Xem dữ liệu, truy xuất dữ liệu,
Ví dụ: Controller lấy dữ liệu thông tin về sản phẩm từ cơ sở dữ liệu, thì Model sẽ thực hiện cấc thao tác với dữ liệu (CSDL) và gửi lại cho CSDL hoặc cấp quyền cho View sử dụng
View là giao diện dành cho phía người sử dụng, và người dùng có thể thấy được thông tin dữ liệu của MVC qua các thao tác tìm kiếm View được tạo thành bởi dữ liệu thu thập từ dữ liệu mô hình, và giúp người dùng có cái nhìn trực quan nhất về ứng dụng, trang web
2.2.1.3 Controller (Bộ điều khiển) Đây là bộ phận đảm trách xử lý các thao tác của người dùng với ứng dụng, trang web Controller xử lí dữ liệu từ bàn phím và chuột của người dùng, sau đó thông báo tới View và Model
Controller có thể gửi lệnh tới Model và View để thực hiện thay đổi trạng thái (Model) hoặc giao diện (View).
Ưu điểm của spring mvc
Hiện nay, Spring MVC được sử dụng vô cùng phổ biến và được đánh giá cao nhờ sở hữu những điểm mạnh như:
Các tầng có trong Spring MVC thường độc lập nên việc unit test sẽ trở nên dễ dàng hơn rất nhiều
Phần view của chúng sẽ được tích hợp với nhiều Framework về UI như là: JSF, Freemarker hoặc Themeleaf,
Spring MVC base có trên các POJO class nên hành động của chúng thường sẽ đơn giản hơn
Có thể hỗ trợ được cả Annotation và XML config giúp cho quá trình phát triển trở nên sạch hơn và nhanh hơn rất nhiều
Có thể cung cấp giúp việc phân chia trở nên rõ ràng, linh hoạt hơn giữa các controller, service, data access layer.
Giới thiệu một khái niệm đề liên quan
2.4.1 Inversion of Control Container (IoC container)
Trong cộng đồng Java, có một làn sóng đổ xô về các thùng chứa nhẹ giúp tập hợp các thành phần từ các dự án khác nhau thành một ứng dụng gắn kết Bên dưới các thùng chứa này là một mô hình chung về cách chúng thực hiện hệ thống dây điện, một khái niệm mà chúng đề cập đến dưới cái tên chung chung là "Inversion of Control" IoC container còn có tên gọi đầy đủ là Inversion of Control, được hiểu là một nguyên lý thiết kế ứng dụng trong công nghệ phần mềm Kiến trúc phần mềm khi áp dụng nguyên lý thiết kế này sẽ đảo ngược quyền điều khiển so với kiểu lập trình hướng thủ tục Nếu như trong lập trình hướng thủ tục, các đoạn mã được thêm vào sẽ gọi các thư viện thì ở IoC lại hoàn toàn khác Những IoC container sẽ chích những
Bean là những module chính của chương trình, được tạo ra và quản lý bởi Spring IoC container
Các bean có thể phụ thuộc lẫn nhau, như ví dụ về Car, Engine và ChinaEngine từ đầu series tới giờ Sự phụ thuộc này được mô tả cho IoC biết nhờ cơ chế Dependency injection
Cách đánh dấu class là một bean thì mình sẽ trình bày trong bài tiếp theo Lúc này các bạn chỉ cần biết đơn giản nhất là dùng @Component lên class là class đó là một bean
2.4.3 Dependency Injection (DI) Đây là một pattern dùng để implement IoC, các dependencies sẽ được inject vào module trong quá trình khởi tạo
Việc kết nối giữa các đối tượng với các đối tượng khác, hoặc inject các đối tượng vào đối tượng khác được thực hiện bằng quá trình lắp ráp chứ không phải bởi chính các đối tượng
Cách dùng setter để inject thường dùng trong trường hợp phụ thuộc vòng, module
A phụ thuộc vào B và ngược lại Do đó, nếu cả hai đều sử dụng constructor based injection thì Spring Boot sẽ không biết nên tạo bean nào trước Vì thế, giải pháp là một bean sẽ dùng constructor, một bean dùng setter
Là 1 trong 3 loại dependency injection
Với Constructor Injection, các Dependency sẽ được các container truyền vào một Class thông qua Constructor của Class đó Và đây là cách thông dụng được nhiều người sử dụng nhất
ApplicationContext là khái niệm Spring Boot dùng để chỉ Spring IoC container, tương tự như bean là đại diện cho các dependency
Ngoài ra bạn có thể sẽ nghe nói về BeanFactory Nó cũng đại loại như ApplicationContext, đại diện cho Spring IoC container nhưng ở mức cơ bản
ApplicationContext thì ở mức cao hơn, cung cấp nhiều tính năng hơn BeanFactory như i18n, resolving messages, publishing events,
Khi ứng dụng Spring chạy, Spring IoC container sẽ quét toàn bộ packages, tìm ra các bean và đưa vào ApplicationContext Cơ chế đó là Component scan, cũng sẽ được nói tới trong bài tiếp theo
Là ngữ cảnh ứng dụng XML độc lập, lấy các tệp định nghĩa ngữ cảnh từ hệ thống tệp hoặc từ các URL Chủ yếu hữu ích cho khai thác thử nghiệm, nhưng cũng cho các môi trường độc lập
Xử lý đường dẫn tài nguyên như tài nguyên hệ thống tệp khi sử dụng ApplicationContext.getResource Đường dẫn tài nguyên được coi là liên quan đến thư mục làm việc VM hiện tại, ngay cả khi chúng bắt đầu bằng dấu gạch chéo
Các mặc định của vị trí cấu hình có thể được ghi đè thông qua setConfigLocations, tương ứng thông qua các tham số "contextConfigLocation" của ContextLoader và FrameworkServlet Vị trí cấu hình có thể biểu thị các tệp cụ thể như
"/myfiles/context.xml" hoặc các mẫu Ant-style như "/myfiles/*-context.xml" (xem PathMatcher javadoc để biết chi tiết về mẫu)
Public class XmlWebApplicationContext extends AbstractRefreshableWebApplicationContext
Triển khai WebApplicationContext lấy cấu hình của nó từ các tài liệu XML, được hiểu bởi XmlBeanDefinitionReader Về cơ bản, điều này tương đương với GenericXmlApplicationContext cho môi trường web
Theo mặc định, cấu hình sẽ được lấy từ "/WEB-INF/applicationContext.xml" cho ngữ cảnh gốc và "/WEB-INF/test-servlet.xml" cho một ngữ cảnh có không gian tên "test-servlet" (như cho một cá thể DispatcherServlet với "test" tên servlet)
Mặc định vị trí cấu hình có thể được ghi đè thông qua tham số ngữ cảnh
"contextConfigLocation" của ContextLoader và servlet init-param của FrameworkServlet
Vị trí cấu hình có thể biểu thị các tệp cụ thể như "/WEB-INF/context.xml" hoặc các mẫu Ant-style như "/WEB-INF/*-context.xml" (xem PathMatcher javadoc để biết chi tiết về
2.4.9 Cơ chế xử lý Request-Respone
Request có thể hiểu nhanh là thông tin gửi từ client lên server Khi bạn lên trình duyệt browser gõ một địa chỉ nào đó, ví dụ bạn gõ là freetuts.net thì ngay lập tức trình duyệt sẽ dựa vào tên domain để gửi yêu cầu truy cập đến địa chỉ IP mà domain này đang trỏ tới (bạn đừng quan tâm đến domain này do ai quản lý), lúc này phía server sẽ phân tích yêu cầu và sẽ gửi luồng xử lý tới vị trí vị trí lưu trữ của mã nguồn PHP (hoặc mã nguồn bất kì) và nhiệm vụ của các mã nguồn là tiếp nhận yêu cầu, phân tích request đó và trả kết quả lại cho client
Chúng ta có hai phương thức (2 cách) để gửi request từ client lên server đó là sử dụng phương thức GET và phương thức POST
Reponse là dữ liệu mà server trả về cho client Ví dụ khi bạn nhập vào địa chỉ freetuts.net thì kết quả trả về (response) chính là giao diện của website và các thông tin của header Như vậy dữ liệu mà server trả về là những đoạn mã HTML kèm theo các thông tin của header
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
Tác nhân của hệ thống
Hình 3.1 Các tác nhân của hệ thống
Xây dựng hệ thống với 2 tác nhân:
Tác nhân KHACHHANG: Là người dùng hệ thống, thực hiện việc mua sắm quần áo nữ của cửa hàng, có thể đăng ký tài khoản và đăng nhập để thực hiện các chức năng mua hàng
Tác nhân QUANTRIVIEN: Là người quản trị hệ thống, có thể là chủ cửa hàng hay người quản lý, ứng với quyền quản lý cao nhất, quản lý toàn bộ hệ thống với các quyền như quản lý khách hàng, quản lý nhà cung cấp, quản lý sản phẩm, quản lý đơn hàng,…
Biểu đồ các Ca sử dụng
Hình 3.3 Biểu đồ UseCase của KHACHHANG
Đặc tả các Ca sử dụng
Đặc tả UseCase của tác nhân KHACHHANG:
- Mô tả: Dành cho các khách hàng vãng lai đăng ký làm thành viên để có thể mua hàng, và nhận nhiều ưu đãi vào những lần mua hàng sau.
- Đầu vào: Người dùng chọn chức năng đăng ký, và nhập đầy đủ các thông tin bắt buộc
- Thực hiện: Kiểm tra các trường thông tin nhập vào, nếu đầy đủ và đúng kiểu dữ liệu, sẽ lưu thông tin vào cơ sở dữ liệu và thêm thông tin thành viên vào cơ sở dữ liệu.
- Đầu ra: Đưa ra thông báo đăng ký thành công, hoặc thất bại
- Mô tả: Cho phép khách hàng là thành viên hoặc quản trị viên đăng nhập vào hệ thống
- Đầu vào: Người dùng nhập vào thông tin tên tài khoản và mật khẩu, sau đó chọn đăng nhập
- Thực hiện: Kiểm tra tên đăng nhập và mật khẩu có trùng khớp với thông tin trong CSDL Kiểm tra quyền người dùng
- Đầu ra: Nếu không đúng thông tin thì thông báo tài khoản không hợp lệ Ngược lại, tùy theo quyền người dùng, hiển thị màn hình quản trị hoặc màn hình của thành viên trang web
- Mô tả: Cho phép người dùng thoát khỏi hệ thống khi không sử dụng
- Đầu vào: Người dùng chọn đăng xuất
- Thực hiện: Hủy lưu thông tin đăng nhập
- Đầu ra: Hiển thị trang chủ
UseCase Quản lý giỏ hàng:
- Mô tả: Cho phép người dùng xem lại, kiểm tra những sản phẩm mình đã thêm vào giỏ hàng và có thể thực hiện các hành động sửa hoặc xóa giỏ hàng
- Đầu vào: Người dùng chọn giỏ hàng để theo dõi
Người dùng chọn giỏ hàng
Hệ thống lấy dữ liệu giỏ hàng của người dùng
Hệ thống hiển thị chức năng người dùng có thể thực hiện: thêm, cập nhật, xóa: Nếu chọn “Thêm” thì sự kiện con “Thêm sản phẩm vào giỏ hàng” được thực hiện Nếu chọn “Cập nhật” thì sự kiện con “Cập nhật số lượng giỏ hàng” được thực hiện Nếu chọn “Xóa” thì sự kiện con “Xóa giỏ hàng” được thực hiện
Thêm sản phẩm vào giỏ hàng:
Người dùng chọn sản phẩm muốn thêm vào giỏ hàng
Chọn thêm vào giỏ hàng
Hệ thống kiểm tra số lượng sản phẩm:
Nếu còn hàng thì thực hiện bước tiếp theo
Nếu hết hàng thực hiện dòng sự kiện rẽ nhánh A1
Hiển thị thông báo thêm sản phẩm vào giỏ thành công
Hệ thống lưu thông tin sản phẩm trong giỏ
Cập nhật số lượng giỏ hàng:
Người dùng chọn sản phẩm muốn cập nhật
Chọn số lượng mong muốn, và chọn cập nhật
Hệ thống kiểm tra số lượng:
Nếu còn hàng thì thực hiện bước tiếp theo
Nếu hết hàng thực hiện dòng sự kiện rẽ nhánh A1
Hiển thị thông báo cập nhật thành công
Hệ thống lưu số lượng sản phẩm cập nhật
Người dùng chọn sản phẩm muốn xóa khỏi giỏ hàng
Hệ thống hiển thị thông báo xác nhận xóa bỏ:
Nếu người dùng đồng ý thì hệ thống hiển thị danh sách sau khi đã được xóa Nếu không đồng ý thì hệ thống hủy sự kiện
- Ca sử dụng kết thúc
- Dòng sự kiện rẽ nhánh A1:
Hệ thống thông báo số lượng không hợp lệ hay hết hàng
Quay lại bước 3 của dòng sự kiện chính, hoặc hủy bỏ thao tác, khi đó ca sử dụng kết thúc
- Điều kiện đầu ra: Các thông tin về sản phẩm trong giỏ hàng được cập nhật
UseCase Bình luận và đánh giá sản phẩm:
- Mô tả: Cho phép các thành viên của hệ thống, sau khi mua hàng có thể bình luận, hoặc đánh giá cho sản phẩm mình đã dùng, để những người dùng khác tham khảo và lựa chọn mua
- Đầu vào: Người dùng đã là thành viên của hệ thống, viết bình luận, hoặc chụp ảnh và đánh giá chất lượng sản phẩm, và chọn đăng nhận xét sản phẩm
- Thực hiện: Lưu các bình luận và bài đánh giá của các thành viên vào CSDL
- Đầu ra: Hiển thị các bình luận và đánh giá đó trong giao diện sản phẩm
- Mô tả: Cho phép thành viên đặt mua các sản phẩm của trang web
- Đầu vào: Sau khi thêm các sản phẩm muốn mua vào giỏ hàng, thành viên cần điền một số thông tin cần thiết để giao dịch thành công như địa chỉ, chọn phương thức thanh toán Để hoàn thành đơn hàng
- Thực hiện: Lưu thông tin đơn hàng đã đặt, lưu chi tiết đơn hàng vào cơ sở dữ liệu
- Đầu ra: Hiển thị giao dịch thành công, hoặc thất bại
UseCase Quản lý tài khoản cá nhân:
- Mô tả: Cho phép người dùng trong hệ thống quản lý thông tin cá nhân, đơn hàng, bài đánh giá theo từng tài khoản đăng nhập hệ thống
- Đầu vào: Người dùng đăng nhập và chọn quản lý tài khoản cá nhân
Người dùng chọn quản lý tài khoản cá nhân
Hệ thống hiển thị chức năng người dùng có thể thực hiện: cập nhật thông tin, hủy đơn, cập nhật bài:
Nếu chọn “Cập nhật thông tin” thì sự kiện con “Cập nhật thông tin cá nhân” được thực hiện
Nếu chọn “Hủy đơn” thì sự kiện con “Hủy đơn hàng” được thực hiện
Nếu chọn “Cập nhật bài” thì sự kiện con “Cập nhật bài đánh giá” được thực hiện
Cập nhật thông tin cá nhân:
Hệ thống load form cập nhật thông tin cá nhân
Người dùng nhập thông tin muốn thay đổi, và chọn cập nhật
Hệ thống kiểm tra các trường dữ liệu:
Nếu thỏa mãn thì thực hiện bước tiếp theo
Nếu không thì thực hiện dòng sự kiện rẽ nhánh A1
Hiển thị thông báo cập nhật thông tin cá nhân thành công
Hệ thống cập nhật thông tin cá nhân của người dùng vào cơ sở dữ liệu
Người dùng chọn đơn hàng muốn hủy
Hệ thống hiển thị thông báo xác nhân hủy:
Nếu đồng ý thì thực hiện bước tiếp theo
Nếu không thì hệ thống hủy sự kiện
Hệ thống cập nhật trạng thái hủy đơn hàng vào cơ sở dữ liệu
Người dùng chọn bài đánh giá muốn xóa
Chọn xóa bài đánh giá
Hệ thống hiển thị thông báo xác nhận xóa:
Nếu đồng ý thì thực hiện hiển thị bài đánh giá sau khi xóa
Nếu không đồng ý thì hủy sự kiện
- Ca sử dụng kết thúc
- Dòng sự kiện rẽ nhánh A1:
Hệ thống thông báo trường dữ liệu nhập không hợp lệ
Người dùng nhập lại các thông tin
Quay lại bước 3 của dòng sự kiện chính, hoặc hủy bỏ thao tác, khi đó ca sử dụng kết thúc
- Điều kiện đầu ra: Các thông tin cá nhân, đơn hàng và bài đánh giá của tài khoản đó được cập nhật Đặc tả UseCase của tác nhân QUANTRIVIEN: với các chức năng thêm, sửa, xóa
- Đầu vào: Quản trị viện chọn chức năng cần thực hiện tại trang quản lý thuộc tính, và nhập đầy đủ thông tin với các chức năng thêm, sửa
- Thực hiện: Kiểm tra những trường thông tin đã đầy đủ, kiểm tra định dạng và nội dung cho các trường ảnh Nếu đúng thì lưu hoặc cập nhật thông tin trong cơ sở dữ liệu Với chức năng xóa, thực hiện xóa thuộc tính theo mã.
- Đầu ra: Hiển thị trang danh sách thuộc tính Thông báo lỗi nếu các chức năng thêm, sửa, xóa có vấn đề
UseCase Quản lý danh mục:
- Mô tả: Quản trị viên có thể quản lý các sản phẩm theo danh mục Với các chức năng có trong trang quản lý danh mục là thêm, sửa và xóa
- Đầu vào: Quản trị viên chọn trang quản lý danh mục, và chọn một trong các chức năng thêm, sửa, xóa
- Thực hiện: Lấy thông tin các danh mục sản phẩm trong cơ sở dữ liệu Kiểm tra các trường dữ liệu bắt buộc nhập và kiểu định dạng đã chính xác chưa Lưu hoặc cập nhật thông tin danh mục vào cơ sở dữ liệu, hoặc xóa danh mục theo mã
- Đầu ra: Hiển thị danh sách danh mục, và ẩn các danh mục đã xóa Hiển thị thông báo thành công hoặc lỗi với các chức năng thêm, sửa, xóa
UseCase Quản lý sản phẩm:
- Mô tả: Giúp quản lý các sản phẩm với các chức năng cơ bản như thêm, sửa, xóa Ngoài ra, có thể in danh sách và tìm kiếm các sản phẩm theo mã, tên và danh mục
- Đầu vào: Truy cập vào trang quản lý sản phẩm, quản trị viên chọn một trong các chức năng thêm, sửa, xóa, in hoặc tìm kiếm Với các chức năng thêm, sửa yêu cầu nhập đầy đủ các trường dữ liệu Với chức năng tìm kiếm, nhập từ khóa cần tìm theo mã, tên hoặc chọn danh mục
Xây dựng biểu đồ lớp
Xây dựng biểu đồ hoạt động
Biểu đồ hoạt động Đăng ký:
Hình 3.6 Biểu đồ hoạt động Đăng ký
Biểu đồ hoạt động Đăng nhập:
Hình 3.7 Biểu đồ hoạt động Đăng nhập
Biểu đồ hoạt động Đăng xuất:
Hình 3.8 Biểu đồ hoạt động Đăng xuất
Biểu đồ hoạt động Tìm kiếm sản phẩm:
Hình 3.9 Biểu đồ hoạt động Tìm kiếm sản phẩm
Biểu đồ hoạt động Thêm sản phẩm vào giỏ hàng:
Biểu đồ hoạt động đặt hàng:
Hình 3.11 Biểu đồ hoạt động đặt hàng
Biểu đồ hoạt động Xóa giỏ hàng:
Hình 3.12 Biểu đồ hoạt động xóa giỏ hàng
Biểu đồ hoạt động Bình luận & đánh giá sản phẩm:
Hình 3.13 Biểu đồ hoạt động bình luận & đánh giá sản phẩm
Biểu đồ hoạt động Cập nhật thông tin cá nhân:
Hình 3.14 Biểu đồ hoạt động Cập nhật thông tin cá nhân
Biểu đồ hoạt động Hủy đơn hàng:
Hình 3.15 Biểu đồ hoạt động Hủy đơn hàng Biểu đồ hoạt động Xóa bài đánh giá:
Hình 3.15 Biểu đồ hoạt động Xóa bài đánh giá
Thiết kế cơ sở dữ liệu
DEMO
Giao diện trang quản lý
Hình 4.1 Giao diện trang thống kê
Quản lý về danh mục sản phẩm:
Hình 4.2 Giao diện quản lý danh mục
Hình 4.3 Giao diện quản lý sản phẩm
Quản lý đơn đặt hàng:
Hình 4.5 Giao diện quản lý đơn đặt hàng
Quản lý chi tiết đơn đặt hàng:
Hình 4.6 Giao diện quản lý chi tiết đơn đặt hàng
Hình 4.7 Giao diện quản lý khách hàng
Quản lý đơn đặt hàng của khách hàng:
Quản lý quản trị viên:
Hình 4.9 Giao diện quản lý quản trị viên
Giao diện người dùng
Trang đăng ký tài khoản:
Hình 4.10 Giao diện trang đăng ký tài khoản
Hình 4.11 Giao diện trang chủ
Trang sản phẩm mới nhất:
Hình 4.12 Giao diện trang sản phẩm mới nhất
Trang sản phẩm bán chạy:
Hình 4.13 Giao diện trang sản phẩm bán chạy
Hình 4.14 Giao diện trang thời trang
Trang sản phẩm khuyến mãi:
Hình 4.15 Giao diện trang sản phẩm khuyến mãi
Hình 4.15 Giao diện trang đăng nhập
Trang chi tiết sản phẩm:
Hình 4.16 Giao diện trang chi tiết sản phẩm
Hình 4.16 Giao diện trang giỏ hàng
Hình 4.16 Giao diện trang thanh toán