1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng tính năng cho website bán hàng

58 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây Dựng Tính Năng Cho Website Bán Hàng
Người hướng dẫn TS. Hoàng Thị Thanh Hà
Trường học Trường Đại Học Kinh Tế
Chuyên ngành Hệ Thống Thông Tin Quản Lý
Thể loại Báo Cáo Thực Tập
Thành phố Đà Nẵng
Định dạng
Số trang 58
Dung lượng 3,62 MB

Cấu trúc

  • Chương 1. TỔNG QUAN Công ty TNHH TMA Solutions Bình Định VÀ NGHỀ DEVELOPER (10)
    • 1.1 Giới thiệu về công ty TNHH TMA Bình Định (10)
      • 1.1.1 Tổng quan 3 (10)
      • 1.1.2 Tầm nhìn, sứ mệnh 4 (12)
      • 1.1.3 Giá trị 4 (12)
    • 1.2 Tổng quan về nghề Back-end Developer (12)
      • 1.2.1 Mô tả công việc về một Back-end Developer 5 (0)
      • 1.2.2 Các kỹ năng cần có của một lập trình viên back-end developers? 5 (13)
      • 1.2.3 Cơ hội nghề nghiệp và mực lương 6 CHƯƠNG 2. CƠ SỞ LÝ THUYẾT (0)
    • 2.1 Java (15)
      • 2.1.1. Java là gì? 7 (15)
      • 2.1.2 Tại sao nên học Java? 7 (15)
      • 2.1.3 Các khái niệm và cấu trúc cơ bản của Java 8 (0)
    • 2.2 Java OOP (19)
      • 2.2.1 OOP là gì? 10 (19)
      • 2.2.2 các khái niệm cơ bản trong OOP? 11 (0)
      • 2.2.3 Quản lý dữ liệu và bảo mật 12 (0)
      • 2.2.4 Mở rộng và tương tác với OOP 13 (0)
    • 2.3 Java Spring (22)
  • CHƯƠNG 3. TRIỂN KHAI (29)
    • 3.1 Tổng quan về phần mềm (29)
      • 3.1.1 Giới thiệu về phần mềm 20 (29)
      • 3.1.2 Các chức năng chính của phần mềm 20 (29)
    • 3.2 Phân tích hệ thống (29)
      • 3.2.1 Phân tích các nhóm chức năng 20 (29)
      • 3.2.2 Thiết kế và mô tả ERD hệ thống 21 (30)
    • 3.3 Triển khai phần mềm (33)
      • 3.3.1 Các công cụ hỗ trợ 23 (33)
      • 3.3.2 Cấu trúc thư mục triển khai 23 (33)
      • 3.3.3 Quy trình thực hiện đề tài 24 CHƯƠNG 4. Kết luận và hướng phát triển...............................................................45 TÀI LIỆU THAM KHẢO (34)
  • PHỤ LỤC (0)

Nội dung

TỔNG QUAN Công ty TNHH TMA Solutions Bình Định VÀ NGHỀ DEVELOPER

Giới thiệu về công ty TNHH TMA Bình Định

TMA Solutions là công ty hàng đầu về phần mềm và dịch vụ công nghệ thông tin tại Việt Nam, được thành lập vào năm 1997 Với trụ sở chính tại thành phố Hồ Chí Minh và nhiều văn phòng trên toàn quốc cũng như quốc tế, TMA hiện có hơn 2.500 nhân viên, khẳng định vị thế tiên phong trong ngành công nghệ.

TMA Bình Định, một chi nhánh của TMA Solutions, tọa lạc tại thành phố Quy Nhơn, tỉnh Bình Định, là một trung tâm phát triển phần mềm năng động và nhiệt huyết.

TMA Bình Định chuyên phát triển phần mềm và cung cấp dịch vụ công nghệ thông tin chất lượng cao cho khách hàng trong và ngoài nước Đội ngũ kỹ sư của công ty có kinh nghiệm phong phú và chuyên môn đa dạng, bao gồm phát triển ứng dụng di động, phân tích dữ liệu, hệ thống thông tin doanh nghiệp, trí tuệ nhân tạo và nhiều lĩnh vực công nghệ khác.

TMA Bình Định cam kết đáp ứng nhu cầu khách hàng và tạo ra giá trị gia tăng nhờ vào sự chuyên nghiệp, sáng tạo và chất lượng dịch vụ Công ty đã thiết lập được uy tín vững chắc trong ngành CNTT, cùng với nhiều giải thưởng và chứng chỉ danh giá trong suốt quá trình hoạt động.

TMA Bình Định không chỉ chú trọng vào việc phát triển phần mềm, mà còn hướng tới việc cung cấp các giải pháp công nghệ thông tin sáng tạo, nhằm hỗ trợ khách hàng nâng cao hiệu suất kinh doanh và tăng cường khả năng cạnh tranh trên thị trường.

TMA Bình Định đóng vai trò quan trọng trong việc phát triển ngành công nghệ thông tin tại khu vực Bình Định, đồng thời nâng cao chất lượng cuộc sống và tạo ra nhiều cơ hội việc làm cho cộng đồng.

1.1.2 Tầm nhìn, sứ mệnh a Tầm nhìn

Chúng tôi hướng tới việc trở thành công ty công nghệ thông tin hàng đầu trong khu vực, cung cấp giá trị đột phá và tạo ra sự khác biệt cho khách hàng thông qua các giải pháp công nghệ thông tin sáng tạo và hiệu quả Sứ mệnh của chúng tôi là mang lại những giải pháp tối ưu, đáp ứng nhu cầu đa dạng của thị trường.

Sứ mệnh của TMA Bình Định là cung cấp giải pháp công nghệ thông tin chất lượng cao, giúp tối ưu hóa hiệu quả kinh doanh cho khách hàng Công ty cam kết lắng nghe và hiểu nhu cầu của khách hàng, từ đó tạo ra giá trị gia tăng và lợi thế cạnh tranh Đồng thời, TMA Bình Định chú trọng phát triển nhân viên, tạo điều kiện cho họ thành công trong sự nghiệp và đóng góp vào sự phát triển bền vững của cộng đồng thông qua việc tạo cơ hội việc làm, đào tạo nguồn nhân lực và tham gia các hoạt động xã hội.

Trong suốt nhiều năm, TMA Bình Định đã vượt qua nhiều thách thức và khẳng định được năng lực làm việc cũng như cam kết chất lượng với khách hàng Để đạt được những thành công này, TMA không ngừng phát triển và cải tiến.

Tổng quan về nghề Back-end Developer

Back-end developers là những chuyên gia phát triển phần mềm tập trung vào việc xây dựng và duy trì các thành phần và hệ thống phía sau của ứng dụng web hoặc phần mềm Công việc của họ bao gồm thiết kế, phát triển và quản lý cơ sở dữ liệu, cũng như đảm bảo tính khả dụng và hiệu suất của hệ thống.

Các lập trình viên back-end đóng vai trò quan trọng trong thiết kế và phát triển hệ thống của ứng dụng Họ chịu trách nhiệm xây dựng cấu trúc dữ liệu, lựa chọn cơ sở dữ liệu phù hợp, xác định công nghệ tối ưu và phát triển các logic xử lý cần thiết cho hoạt động của hệ thống.

Back-end developers are responsible for writing code that manages the logic and functionality of applications They create Application Programming Interfaces (APIs) to facilitate communication between the front-end and back-end, handling user requests and returning appropriate responses.

Các lập trình viên back-end chịu trách nhiệm quản lý cơ sở dữ liệu, bao gồm việc thiết kế và triển khai cấu trúc cơ sở dữ liệu Họ tạo và quản lý các bảng, chỉnh sửa dữ liệu cũng như tối ưu hóa truy vấn để đảm bảo hiệu suất hoạt động tốt nhất cho hệ thống.

Bảo mật và xác thực là nhiệm vụ quan trọng của các lập trình viên back-end, họ chịu trách nhiệm đảm bảo an toàn cho hệ thống thông qua việc xác thực người dùng, quản lý phiên đăng nhập, mã hóa dữ liệu và thực hiện các biện pháp bảo mật khác nhằm ngăn chặn các cuộc tấn công.

Các lập trình viên back-end thực hiện kiểm thử và gỡ lỗi để đảm bảo hệ thống hoạt động ổn định và chính xác Họ áp dụng các công cụ và phương pháp kiểm thử phần mềm nhằm phát hiện và sửa chữa lỗi hiệu quả.

Các lập trình viên back-end tối ưu hóa hiệu suất hệ thống bằng cách cải thiện tốc độ xử lý, giảm tải cho máy chủ, tối ưu hóa truy vấn cơ sở dữ liệu và áp dụng bộ nhớ đệm (caching) để tăng tốc ứng dụng.

▪ 1.2.2 Các kỹ năng cần có của một lập trình viên back-end developers?

Kỹ năng lập trình là rất quan trọng, bao gồm việc thành thạo một hoặc nhiều ngôn ngữ lập trình phổ biến cho phát triển back-end như Java, C#, Python, Ruby, PHP, Node.js, hoặc Golang Người lập trình viên cần nắm vững cú pháp, viết mã sạch và có khả năng xử lý các logic phức tạp.

Understanding and having experience with back-end frameworks such as Spring for Java, NET Framework for C#, Django for Python, Ruby on Rails, and Laravel for PHP is essential Familiarity with supporting libraries and tools like Express.js, Flask, or ASP.NET Core is also advantageous.

Kiến thức về cơ sở dữ liệu là rất quan trọng, bao gồm việc hiểu quản lý cơ sở dữ liệu và làm việc với các hệ quản trị như MySQL, PostgreSQL, MongoDB và SQL Server Kỹ năng thiết kế cơ sở dữ liệu, tối ưu hóa truy vấn và xử lý lỗi cũng là những yếu tố cần thiết để đảm bảo hiệu quả trong công việc.

Kiến thức về web services và APIs là rất quan trọng, bao gồm việc hiểu kiến trúc RESTful và SOAP Bạn cần biết cách xây dựng và sử dụng các API để giao tiếp hiệu quả giữa front-end và back-end Ngoài ra, việc nắm vững định dạng JSON, XML và sử dụng các công cụ như Postman để kiểm tra và gỡ lỗi API cũng là những kỹ năng cần thiết.

Để đảm bảo an toàn thông tin, việc nắm vững các phương pháp bảo mật là điều cần thiết Điều này bao gồm việc hiểu rõ về xác thực và quản lý phiên đăng nhập Ngoài ra, cần có khả năng xử lý và ngăn chặn các cuộc tấn công phổ biến như XSS, CSRF và SQL injection để bảo vệ hệ thống một cách hiệu quả.

Hiểu biết về hệ thống và mạng là rất quan trọng, bao gồm kiến thức cơ bản về kiến trúc hệ thống, quản lý máy chủ, cấu hình mạng và triển khai ứng dụng Người học cần nắm vững các giao thức mạng như TCP/IP, HTTP, HTTPS và DNS để có thể vận hành và tối ưu hóa các hệ thống hiệu quả.

Kiến thức về kiểm thử và gỡ lỗi là rất quan trọng trong phát triển phần mềm, bao gồm việc hiểu các phương pháp kiểm thử hiệu quả Kỹ năng gỡ lỗi và khắc phục lỗi cũng cần thiết, cùng với khả năng sử dụng các công cụ như debuggers, loggers và các công cụ kiểm thử tự động để nâng cao chất lượng sản phẩm.

Thị trường IT tại Việt Nam đang trên đà phát triển mạnh mẽ, tạo ra nhiều cơ hội nghề nghiệp cho lập trình viên back-end Các công ty công nghệ, doanh nghiệp khởi nghiệp và tổ chức lớn đang tích cực tìm kiếm nhân tài có kỹ năng chuyên môn Lĩnh vực phát triển phần mềm, thương mại điện tử, fintech và các giải pháp công nghệ thông tin cho doanh nghiệp đều đang mở ra nhiều vị trí hấp dẫn cho những ai muốn theo đuổi sự nghiệp trong ngành này.

Java

Java là một ngôn ngữ lập trình mạnh mẽ và môi trường phát triển phần mềm, được phát triển bởi Sun Microsystems (hiện thuộc Oracle Corporation) và ra mắt lần đầu vào năm 1995 Với tính chất đa nền tảng, Java cho phép lập trình viên viết mã một lần và chạy trên nhiều hệ điều hành khác nhau mà không cần chỉnh sửa, điều này làm cho Java trở thành lựa chọn phổ biến cho phát triển ứng dụng di động, máy tính cá nhân, máy chủ và nhiều hệ thống khác.

▪ 2.1.2 Tại sao nên học Java?

Java là ngôn ngữ lập trình đa nền tảng, cho phép phát triển ứng dụng một lần và chạy trên nhiều hệ điều hành và thiết bị khác nhau, rất hữu ích cho việc xây dựng ứng dụng di động cho các hệ điều hành như Android.

Thị trường việc làm hiện nay cho thấy Java là một trong những ngôn ngữ lập trình hàng đầu trong ngành công nghệ thông tin Những người có kiến thức về Java sẽ tìm thấy nhiều cơ hội việc làm, đặc biệt là trong lĩnh vực phát triển phần mềm và ứng dụng di động.

Java được biết đến với tính mạnh mẽ và đáng tin cậy, nhờ vào mô hình bảo mật cao của nó Điều này khiến Java trở thành lựa chọn phổ biến cho các ứng dụng yêu cầu tính bảo mật nghiêm ngặt, đặc biệt trong lĩnh vực tài chính và ngân hàng.

Java có một cộng đồng lập trình viên lớn và năng động, giúp bạn dễ dàng tìm thấy tài liệu, hướng dẫn và sự hỗ trợ phong phú khi cần thiết.

Java là một ngôn ngữ lập trình hướng đối tượng, giúp tổ chức và quản lý mã nguồn một cách có cấu trúc, dễ bảo trì và nâng cao hiệu quả phát triển phần mềm.

Java có phạm vi ứng dụng rộng rãi, cho phép phát triển các loại ứng dụng đa dạng như ứng dụng máy tính cá nhân, web, di động, và máy chủ.

Kỹ năng Java vững vàng mở ra nhiều cơ hội thăng tiến trong lĩnh vực phát triển phần mềm, giúp bạn tiếp cận các vị trí cao cấp và nâng cao sự nghiệp của mình.

▪ 2.1.3 Các khái niệm và cấu trúc cơ bản của Java

Cú pháp và cấu trúc cơ bản của Java có thể chia thành một số phần quan trọng như sau:

● Chương trình Java đơn giản: Định nghĩa lớp, phương thức `main` và cấu trúc cơ bản để thực hiện chương trình Java đầu tiên.

● Biến và Kiểu dữ liệu: Trong Java, biến được sử dụng để lưu trữ dữ liệu.

Trong Java, mỗi biến được xác định bởi một kiểu dữ liệu cụ thể, bao gồm các loại như số nguyên (int), số thực (double), ký tự (char) và luận lý (boolean) Các kiểu dữ liệu cơ bản này là nền tảng quan trọng trong lập trình Java.

Câu lệnh điều kiện và vòng lặp là những công cụ quan trọng trong lập trình Câu lệnh if-else cho phép thực hiện các điều kiện khác nhau, trong khi cấu trúc vòng lặp như for và while giúp lặp lại các dòng mã nhiều lần một cách hiệu quả Việc sử dụng đúng các câu lệnh này không chỉ giúp tối ưu hóa mã nguồn mà còn nâng cao khả năng xử lý logic trong chương trình.

● Hàm (Phương thức): Là một tập các câu lệnh được nhóm lại với nhau để thực hiện một hành động cụ thể

● Mảng : Mảng là một tập hợp các phần tử có cùng kiểu dữ liệu Các phần tử trong mảng được truy cập thông qua chỉ số.

● Lớp và Đối tượng: Lớp là một mô hình để tạo đối tượng, mỗi đối tượng là một thực thể có thuộc tính và phương thức.

● Xử lý Ngoại lệ: Xử lý ngoại lệ (Exception) là cách để xử lý các tình huống không mong muốn xảy ra trong quá trình thực thi chương trình

Giao diện định nghĩa các phương thức cần triển khai bởi các lớp khác nhau, trong khi kế thừa cho phép lớp con sử dụng lại thuộc tính và phương thức của lớp cha.

Java OOP

Lập trình hướng đối tượng (OOP) là phương pháp lập trình dựa trên khái niệm của thế giới thực, coi mọi thứ là các "đối tượng" với thuộc tính và hành vi riêng OOP sử dụng các khái niệm như lớp, đối tượng, kế thừa, đa hình và giao diện để xây dựng cấu trúc chương trình rõ ràng, dễ bảo trì và tái sử dụng Java, một ngôn ngữ lập trình phổ biến, được thiết kế dựa trên OOP, giúp phát triển ứng dụng một cách hiệu quả và có tổ chức.

▪ 2.2.2 các khái niệm cơ bản trong OOP?

Lớp (Class) là một mô hình hoặc bản thiết kế dùng để tạo ra các đối tượng cụ thể, bao gồm các thuộc tính (properties) và phương thức (methods) liên quan đến đối tượng mà lớp đó đại diện.

● Đối tượng (Object): Là một thực thể cụ thể được tạo ra từ lớp, bao gồm dữ liệu (thuộc tính) và hành vi (phương thức) liên quan đến lớp.

Kế thừa (Inheritance) là một khái niệm quan trọng trong lập trình hướng đối tượng, cho phép lớp con (subclass) kế thừa các thuộc tính và phương thức từ lớp cha (superclass) Điều này không chỉ giúp tái sử dụng mã nguồn hiệu quả mà còn hỗ trợ việc xây dựng các mô hình phân cấp rõ ràng trong thiết kế phần mềm.

● Đa hình (Polymorphism): Cho phép sử dụng cùng một tên hoặc phương thức trong các lớp khác nhau, nhưng có thể hoạt động khác nhau dựa trên ngữ cảnh.

Giao diện là một tập hợp các phương thức mà các lớp con cần phải triển khai, tạo ra một hợp đồng chung cho các lớp Việc sử dụng giao diện giúp xác định rõ ràng các quy tắc và tiêu chuẩn mà các lớp phải tuân theo, từ đó nâng cao tính nhất quán và khả năng mở rộng trong lập trình.

Thuộc tính trong lập trình đại diện cho các dữ liệu được lưu trữ trong một đối tượng, trong khi phương thức là các hành vi mà đối tượng đó có khả năng thực hiện.

Hàm tạo (Constructor) là một phương thức đặc biệt được kích hoạt khi tạo ra một đối tượng mới từ lớp Chức năng chính của nó là khởi tạo các thuộc tính ban đầu cho đối tượng, đảm bảo rằng đối tượng được tạo ra có trạng thái hợp lệ ngay từ lúc bắt đầu.

● Encapsulation (Đóng gói): Là nguyên tắc giới hạn quyền truy cập đến các thuộc tính và phương thức, ngăn ngừa truy cập trực tiếp từ bên ngoài lớp.

Abstraction (Trừu tượng) là quá trình tạo ra các lớp và đối tượng trừu tượng, giúp tập trung vào những thuộc tính và phương thức quan trọng trong khi ẩn đi các chi tiết không cần thiết.

● Override (Ghi đè): Là việc lớp con cung cấp một triển khai mới cho một phương thức đã được định nghĩa trong lớp cha.

▪ 2.2.3 Quản lý dữ liệu và bảo mật

Modifier truy cập private được sử dụng để giới hạn quyền truy cập vào các thành viên của lớp, bao gồm thuộc tính và phương thức, chỉ cho phép truy cập nội bộ Điều này ngăn chặn các lớp khác truy cập trực tiếp và bảo vệ dữ liệu, đảm bảo rằng mọi thay đổi chỉ được thực hiện thông qua các phương thức kiểm soát.

Encapsulation (Đóng gói) là một khái niệm quan trọng trong lập trình hướng đối tượng, đảm bảo rằng các thuộc tính của lớp được định nghĩa là private Điều này cho phép chỉ sử dụng các phương thức public để truy cập và cập nhật dữ liệu, từ đó kiểm soát quyền truy cập và thay đổi dữ liệu hiệu quả hơn.

Phương thức Getter và Setter đóng vai trò quan trọng trong việc quản lý dữ liệu trong lập trình Getter được sử dụng để truy cập các thuộc tính private, trong khi Setter cho phép cập nhật dữ liệu Việc sử dụng các phương thức này giúp kiểm soát quyền truy cập và đảm bảo tính toàn vẹn của dữ liệu.

●Private Access Modifier: Sử dụng private để giới hạn quyền truy cập từ các lớp khác và đảm bảo dữ liệu được bảo mật.

Encapsulation (Đóng gói) là kỹ thuật lập trình trong đó các thuộc tính được đặt là private, đồng thời cung cấp các phương thức public để truy cập và cập nhật dữ liệu Phương pháp này giúp ngăn chặn việc truy cập trực tiếp từ bên ngoài lớp, từ đó đảm bảo sự kiểm soát và bảo mật cho dữ liệu.

Các đối tượng không thể thay đổi (Immutable Objects) là những đối tượng mà sau khi được tạo ra, giá trị thuộc tính của chúng không thể bị thay đổi Việc sử dụng các đối tượng này giúp ngăn chặn những thay đổi không mong muốn từ bên ngoài, đảm bảo tính toàn vẹn và ổn định cho dữ liệu.

Thực hành lập trình an toàn là yếu tố quan trọng trong việc bảo vệ ứng dụng khỏi các lỗ hổng bảo mật Để đảm bảo an toàn, lập trình viên cần sử dụng các kỹ thuật như kiểm tra dữ liệu đầu vào, tránh các thư viện cũ và không an toàn, cũng như xử lý ngoại lệ một cách thích hợp Những biện pháp này giúp giảm thiểu rủi ro và nâng cao độ tin cậy của phần mềm.

Xác thực và ủy quyền là hai yếu tố quan trọng trong các ứng dụng yêu cầu đăng nhập, giúp đảm bảo rằng người dùng được xác thực và quyền truy cập của họ được kiểm tra dựa trên vai trò.

●Encryption (Mã hóa): Sử dụng mã hóa dữ liệu nhạy cảm để bảo vệ chúng khỏi việc truy cập trái phép.

Ghi nhật ký và kiểm tra là quá trình quan trọng trong ứng dụng, giúp ghi lại các sự kiện thiết yếu để theo dõi và đánh giá hoạt động của hệ thống Việc này không chỉ đảm bảo an toàn thông tin mà còn hỗ trợ trong việc phân tích và khắc phục sự cố hiệu quả.

Java Spring

Java Spring Core là thành phần thiết yếu trong Spring Framework, hỗ trợ phát triển ứng dụng Java hiệu quả Nó áp dụng nguyên tắc Dependency Injection (DI) và Inversion of Control (IoC), giúp quản lý và liên kết các thành phần trong ứng dụng một cách linh hoạt và dễ dàng.

Dưới đây là một số khía cạnh quan trọng của Spring Core:

Dependency Injection (DI) trong Spring Core cho phép bạn định nghĩa các phụ thuộc giữa các thành phần (bean) trong tệp cấu hình, giúp Spring quản lý việc chèn các phụ thuộc này vào các thành phần cần thiết.

Inversion of Control (IoC) trong Spring cho phép đảo ngược quy trình kiểm soát và quản lý đối tượng Thay vì lập trình viên phải tạo đối tượng thông qua các lệnh gọi trực tiếp, Spring tự động tạo và quản lý các đối tượng, giúp tối ưu hóa quy trình phát triển và giảm thiểu sự phụ thuộc giữa các thành phần trong ứng dụng.

Bean là một đối tượng được quản lý bởi Spring IoC container, cho phép bạn định nghĩa các bean thông qua các tệp cấu hình XML hoặc bằng cách sử dụng các annotation.

The ApplicationContext is a core component of the Spring IoC container, responsible for managing all beans within the application It offers essential features such as Dependency Injection (DI), event handling, and lifecycle management, ensuring efficient resource management and application performance.

● Tệp Cấu hình (Configuration File): Spring Core cho phép bạn định nghĩa các bean và các tùy chọn cấu hình trong các tệp XML hoặc sử dụng các annotation.

● Annotation: Spring hỗ trợ việc sử dụng annotation để đánh dấu các bean, phụ thuộc và cấu hình, giúp giảm bớt sự phức tạp của việc sử dụng XML.

Quản lý Vòng đời (Lifecycle Management) trong Spring Core cho phép điều phối và quản lý các bean, thực hiện các hành động tại các giai đoạn khác nhau của vòng đời bean, từ khởi tạo đến hủy bỏ.

Spring MVC (Model-View-Controller) là một thành phần quan trọng trong Spring Framework, cung cấp mô hình lập trình web cho phát triển ứng dụng Java Nó phân tách logic ứng dụng thành ba phần chính: Mô hình (Model), Giao diện (View) và Điều khiển (Controller), giúp tạo ra các ứng dụng web có cấu trúc rõ ràng và dễ dàng quản lý.

Dưới đây là một số khía cạnh quan trọng của Spring MVC:

Mô hình là thành phần đại diện cho dữ liệu và logic của ứng dụng, thường bao gồm các lớp POJO (Plain Old Java Object) để biểu diễn dữ liệu, cùng với các lớp Service để thực hiện xử lý logic kinh doanh.

● Giao diện (View):Giao diện là phần giao diện người dùng của ứng dụng.

Spring MVC cho phép sử dụng nhiều công nghệ giao diện như JSP (JavaServer Pages), Thymeleaf, FreeMarker, v.v.

Điều khiển (Controller) đóng vai trò trung gian giữa Mô hình và Giao diện, xử lý yêu cầu từ người dùng và tương tác với Mô hình để truy xuất dữ liệu cũng như thực hiện logic Sau đó, nó lựa chọn Giao diện phù hợp để hiển thị kết quả.

DispatcherServlet là thành phần quan trọng trong Spring MVC, đóng vai trò trung tâm trong việc điều phối các yêu cầu đến các Controller tương ứng Nó thực hiện việc xử lý yêu cầu, xác định Controller phù hợp, thực thi các xử lý cần thiết và lựa chọn giao diện hiển thị.

● RequestMapping: Annotation @RequestMapping (hoặc các annotation tương tự như @GetMapping, @PostMapping, v.v.) được sử dụng để ánh xạ các URL tới các phương thức xử lý của Controller.

● Các tham số và ModelAttribute: Spring MVC cho phép truyền dữ liệu từ

Giao diện đến Controller thông qua các tham số của phương thức @ModelAttribute sử dụng để truyền dữ liệu từ Giao diện đến Mô hình.

● Xử lý Form và Validation: Spring MVC cung cấp cơ chế để xử lý và validate dữ liệu được gửi từ Giao diện thông qua các form.

● ViewResolver: ViewResolver là một cơ chế giúp xác định giao diện phù hợp dựa trên tên Giao diện hoặc kiểu trả về từ Controller.

Spring MVC là công cụ lý tưởng để phát triển các ứng dụng web Java, mang lại cấu trúc tổ chức tốt, dễ bảo trì và tính linh hoạt cao Nó đóng vai trò quan trọng trong việc xây dựng các ứng dụng web dựa trên Spring Framework.

Spring Data, thuộc Spring Framework, cung cấp các dự án và công cụ giúp tương tác với cơ sở dữ liệu dễ dàng và hiệu quả Mục tiêu của Spring Data là đơn giản hóa quy trình truy vấn và làm việc với cơ sở dữ liệu, không phân biệt loại cơ sở dữ liệu mà người dùng đang sử dụng.

Spring Data cung cấp các dự án con cho những cơ sở dữ liệu phổ biến như MongoDB, Redis, JDBC (cơ sở dữ liệu SQL), Cassandra, và Neo4j (cơ sở dữ liệu đồ thị) Mỗi dự án con này giúp bạn tương tác hiệu quả với cơ sở dữ liệu tương ứng, cho phép viết mã ngắn gọn và dễ hiểu hơn.

Các tính năng chính của Spring Data bao gồm:

Spring Data offers a Repository interface that enables seamless interaction with databases without the need to write SQL code or specific queries This abstraction simplifies data access and enhances productivity for developers.

Các phương thức truy vấn: Bạn có thể định nghĩa các phương thức trong giao diện Repository với các tên có ý nghĩa, và Spring Data sẽ tự động triển khai các truy vấn tương ứng dựa trên tên của các phương thức đó.

TRIỂN KHAI

Tổng quan về phần mềm

3.1.1 Giới thiệu về phần mềm

Website được phát triển bằng ngôn ngữ Java, sử dụng framework Spring Boot để xây dựng các chức năng chính Giao diện được thiết kế thông qua các template, trong khi dữ liệu được lưu trữ hiệu quả bằng phần mềm MySQL.

3.1.2 Các chức năng chính của phần mềm

●Hiển thị danh mục sản phẩm

●Xem sản phẩm theo danh mục

●Xem chi tiết sản phảm

●Thêm sản phẩm vào giỏ hàng

●Thêm,chỉnh sửa,xóa danh mục sản phẩm

●Thêm,chỉnh sửa,xóa sản phẩm

●Quản lý tài khoản user

Phân tích hệ thống

3.2.1 Phân tích các nhóm chức năng

Website trong đề tài được chia ra 3 nhóm chức năng chính là chức năng khách,chức năng user hệ thống ,chức năng admin:

Nhóm chức năng chính Chi tiết chức năng chính

● Xem chi tiết sản phẩm

User ● Đăng nhập ,đăng xuất

● Xem danh mục sản phẩm

● Xem chi tiết sản phẩm

● Thêm sản phẩm vào giỏ hàng

● Xem thông tin các sản phẩm trong giỏ hàng

● Xóa sản phẩm trong giở hàng

● Tính toán tổng giá trị đơn hàng

Admin ● Xem tất cả user trên hệ thống

● Xóa user khỏi hệ thống

● Thêm,sửa,xóa danh mục sản phẩm vào hệ thống

● Thêm sửa,xóa sản phẩm vào hệ thống

3.2.2 Thiết kế và mô tả ERD hệ thống

Mô hình ERD cho dự án với 5 bảng là customers,roles,categories,products,shopping cart

Thuộc tính Kiểu dử liệu NotNull Ghi chú customer_id BIGINT x Khóa chính address Varchar(255) first_name Varchar(255) last_name Varchar(255) password Varchar(255) x phone_number Varchar(255) username Varchar(255) x

Thuộc tính Kiểu dữ liệu NotNull Ghi chú role_id BIGINT x Khóa chính name Varchar(255) x customer_id BIGINT x Khóa ngoại

●Thuộc tính bảng shopping_cart

Thuộc tính Kiểu dữ liệu NotNull Ghi chú shopping_cart_i d

BIGINT x Khóa chính total_items int x total_price double x customer_id BIGINT x Khóa ngoại product_id BIGINT x Khóa ngoại

Thuộc tính Kiểu dữ liệu NotNull Ghi chú product_id BIGINT x Khóa chính cost_price Double x current_quantity int X description Varchar(255) image MEDIUMBLO

B name Varchar(255) x category_id BIGINT x Khóa ngoại

Thuộc tính Kiểu dữ liệu NotNull Ghi chú category_id BIGINT x Khóa chính name Varchar(255) x

Triển khai phần mềm

3.3.1 Các công cụ hỗ trợ

● Viết code bằng Intellij luôn là 1 trong những sự ưu tiên hàng đầu cho các lập trình viên java

● Lưu trữ cơ sở dữ liệu với mysql

● Lưu trữ source code trên github

3.3.2 Cấu trúc thư mục triển khai

Hình 5:Cấu trúc thư mục dự án

●Thư mục configuration chứa các lớp cấu hình tùy chỉnh cho ứng dụng

●Thư mục controller dùng để chứa các điều khiển

●Thư mục dto thường được sử dụng để chứa các lớp DTO

●Thư mục model để định nghĩa các bảng database

Thư mục repository chứa các interface Repository, đóng vai trò quan trọng trong việc quản lý truy vấn và tương tác với cơ sở dữ liệu thông qua Spring Data JPA.

●Thư mục service thường được sử dụng để chứa các lớp dịch vụ

Thư mục resources là phần thiết yếu trong cấu trúc dự án ứng dụng của bạn, chứa các tài nguyên cần thiết như tệp cấu hình, tài liệu, hình ảnh, tệp dữ liệu cơ sở dữ liệu nhúng và nhiều loại tệp nguồn khác.

●Thư mục static chứa các hình ảnh được upload lên từ website

●Thư mục template chức các trang template

●Tệp application.properties là tệp cấu hình chính của ứng dụng và kết nối với database

●thư mục "test" được sử dụng để chứa các tệp và thư mục liên quan đến việc kiểm thử (testing) ứng dụng của bạn.

●Tệp "pom.xml" trong dự án Spring Boot đóng vai trò quan trọng trong việc quản lý phụ thuộc, cấu hình và quá trình build của dự án

3.3.3 Quy trình thực hiện đề tài a cài đặt các cấu hình thư viện cần dùng cho dự án Đầu tiên để bắt đầu dự án thì ta cần truy cập trang https://start.spring.io/ để tại file project cũng như các dependency cần thiết như bên dưới

Hình 6:Các dependency b.Tạo cấu hình kết nối MySQL

C.Tạo các packet d.Tạo models

Dưới dây là các model của dự án

Thư mục respository gồm các file như dưới dây

Nội dung file RoleRepository f.Tạo service

Thư mục service gồm các file dưới đây

Thư mục controller gồm các file dưới dây:

Thư mục global gồm các file :

Thư mục configuration gồm các file

Dự án sử dụng view là các template ,sau khi lấy data và cho render ở view thì dưới đây là các giao diện của website

Hình 7: giao diện trang admin

● Giao diện trang admin/categories

Hình 8: Giao diện list categories trang admin

● Giao diện trang admin/products

Hình 9: Giao diện list product trang admin

Giao diện trang admin/user

Hình 10: Giao diện list user trang admin

Hình 11: Giao diện trang shop

● Giao diện trang view products

Hình 12: Giao diện view Products

Hình 13: Giao diện trang đăng nhập

Hình 14:Giao diện trang đăng ký

Hình 15:Giao diện trang giỏ hàng

CHƯƠNG 4 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 1.Kết quả đạt được sau khi kết thúc kỳ thực tập

Về phía báo cáo thực tập:

- Bao quát được kiến thức được đào tạo và tự hiểu của bản thân qua quá trình thực tập

- Áp dụng được những kiến thức được học trong thời gian thực tập

- Thành công tạo các chức năng cho 1 website bán hàng

-Nâng cao khả năng tự học, tiếp thu kiến thức một cách chủ động.

-Cải thiện kỹ năng giao tiếp, nâng cao hiểu biết của bản thân trong môi trường làm việc chuyên nghiệp của doanh nghiệp.

-Được training những kỹ năng cần thiết của một developer và một số kỹ năng mềm như: thuyết trình trong doanh nghiệp, bảo mật trong doanh nghiệp…

-Kỹ năng viết email, báo cáo, cũng như báo cáo trong các buổi daily meeting hàng ngày đều phát triển theo hướng tích cực hơn.

-Kỹ năng làm việc theo đội nhóm linh hoạt, phân chia công việc rõ ràng.

-Chủ động với công việc trong mọi hoàn cảnh.

2 Những điểm yếu cần phải khắc phục

-Khi có vấn đề trong công việc, chưa chủ động liên hệ sớm với mentor để tìm hướng giải quyết.

-Kĩ năng giao tiếng bằng tiếng anh còn hạn chế.

-Khả năng đọc hiểu tài liệu còn hạn chế

Sau quá trình học hỏi và thực tập tại doanh nghiệp, tôi đã xác định được hướng đi rõ ràng cho tương lai Những kiến thức tích lũy trong thời gian thực tập đã giúp tôi nhận diện rõ ràng điểm mạnh và những hạn chế của bản thân Từ đó, tôi sẽ nỗ lực củng cố và phát triển những kiến thức đã có để đạt được mục tiêu nghề nghiệp.

Trong thời gian thực tập, tôi đã học được nhiều điều về lập trình viên backend Java, làm quen với các khái niệm và chức năng cơ bản của hệ thống backend Tuy nhiên, tôi nhận thấy kiến thức của mình vẫn còn ở mức căn bản và cần phát triển sâu hơn Tôi đặt mục tiêu nâng cao kỹ năng trong lĩnh vực này, tìm hiểu sâu về ngôn ngữ lập trình Java và các framework liên quan, cũng như các chức năng nâng cao của hệ thống backend như quản lý dữ liệu, bảo mật, tối ưu hóa hiệu suất và tương tác với dịch vụ khác Tôi hiểu rằng việc tự khám phá và tìm hiểu sâu về Java sẽ đóng vai trò quan trọng trong sự nghiệp của mình, vì vậy tôi sẽ tận dụng tài liệu học trực tuyến, tham gia dự án thực tế và áp dụng kiến thức mới vào công việc hàng ngày.

Ngày đăng: 12/12/2023, 19:48

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w