PHẦN MỞ ĐẦU 1. TÍNH CẤP THIẾT CỦA ĐỀ TÀI Trong thời đại mà mà cuộc sống của mỗi người đã và đang được tiếp cận với sự phát triển vượt bậc và nhanh chóng của khoa học và công nghệ. Một thời đại mà ứng dụng của công nghệ thông tin được tìm thấy ở khắp mọi nơi thế nên việc mỗi người đều sở hữu cho mình một chiếc máy tính cá nhân là điều rất cần thiết và những thứ không thể thiếu với một chiếc máy tính chính là những linh kiện cấu thành nên chúng. Ta có thể thấy, ở thời điểm hiện tại nhóm chúng em đang thực hiện bài luận văn này, tình hình dịch Covid – 19 ở nước ta đang tuy đã gần như là đưọc kiểm soát hoàn toàn.
Nhưng nhìn về một khoảng thời gian trước khi các chỉ thị giản cách liên tục được tiếp tục áp dụng trong khoảng thời gian dài, khiến cho cuộc sống của mọi người ngày càng gặp nhiều khó khắn. Trước diễn biến phức tạp cũng như tình hình xã hội căng thẳng như vậy thì việc mua bán online trở nên phổ biến hơn cả và vẫn còn duy trì cho đến ngày nay. Chính vì thế nhóm em muốn xây dựng lên một website và app bán linh kiện máy tính để khách hàng có thể dễ dàng tìm kiếm, kiểm tra thông số của linh kiện trước ở nhà rồi sau đó có thể đến cửa hàng để mua hoặc cũng có thể đặt hàng về đến tận nhà. Việc mua linh kiện máy tính trở nên dễ dàng, nhanh chóng, tiện lợi và hiệu quả hơn.
MỤC TIÊU ĐỀ TÀI ● Xây dựng website cho quản trị viên quản trị cơ sở dữ liệu. ● Xây dựng website cho người dùng có thể mua linh kiện máy tính online. ● Xây dựng app mobile cho người dùng có thể mua linh kiện máy tính online. ● Vận dụng thành các công công nghệ mới, ngôn ngữ lập trình hiện đại vào để xây dựng website và app mobile của đề tài.
● Tìm hiểu và vận dụng thành công Spring, Spring boot, ReactJS và React Native vào đề tài. PHƯƠNG PHÁP THỰC HIỆN Tìm hiểu các kiến thức cần thiết để thực hiện đề tài: ● Các kỹ thuật phân tích thiết kế hệ thống ● Tìm hiểu về REST API, Spring , Spring boot ● Tìm hiểu về Spring Data JPA để tương tác với CSDL nhanh chóng ● Tìm hiểu về Spring Security, JWT và Oauth2 để tăng độ bảo mật cho trang web 18 PHẨN MỞ ĐẦU ● Tìm hiểu về ReactJS, React Native để thiết kế phần UI ● Tìm hiểu và sử dụng Postman để thuận tiện cho việc code riêng biệt Frontend và Backen 19 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT PHẦN NỘI DUNG CHƯƠNG 1. Giới thiệu về Spring ̀ h 1. Logo của Spring Framework [1] Hin 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) 1. Ưu điểm Spring cho phép lập trình viên sử dụng POJOs. Việc sử dụng POJOs giúp bạn không phải làm việc với EJB, ứng dụng, các luồng chạy, cấu hình… đơn giản hơn rất nhiều. 20 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT Spring được tổ chức theo kiểu mô đun.
Số lượng các gói và các lớp khá nhiều, nhưng bạn chỉ cần quan tâm đến những gì bạn cần và không cần quan tâm đến phần còn lại. Spring hỗ trợ sử dụng khá nhiều công nghệ như ORM Framework, các logging framework, JEE, các thư viện tạo lịch trình (Quartz và JDK timer)… Module Web của Spring được thiết kế theo mô hình MVC nên nó cung cấp đầy đủ các tính năng giúp thay thế các web framework khác như Struts. Giới thiệu về Spring boot ̀ h 1. Logo của Spring boot [3] Hin Spring Boot chính là một Java framework siêu to và khổng lồ và có nhiều khả năng hữu ích vì nó có thể giúp lập trình viên giải quyết rất nhiều vấn đề.
So với framework Spring thông thường, Spring Boot tỏ ra những lợi thế vượt trội. Khi sử dụng Spring Boot, rất nhiều thứ được cải tiến hỗ trợ lập trình viên như: Auto config: tự động cấu hình thay lập trình viên, bạn chỉ cần viết code và tiến hành chạy hệ thống là được. Dựa trên các Annotation để tạo lập các bean thay vì XML. Server Tomcat có thể được nhúng ngay trong file JAR build ra và có thể chạy ở bất kì đâu mà java chạy được.
Ưu điểm nổi bật của Spring Boot Những tính năng nổi bật của Spring Boot mà bạn không thể bỏ qua như: Phát triển web một cách đơn giản và nhanh chóng. Config an toàn 21 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT Có thể hỗ trợ YAML Có tính quản trị cao Dễ dàng ứng dụng Spring và các sự kiện. Có thể cấu hình ở bên ngoài và tạo ra những tệp thuộc tính. Tính bảo mật cao.
Đặc điểm nổi bật của Spring Boot Spring Application: Đây là class được dùng để khởi chạy ứng dụng từ hàm main(). Vì thế, khi khởi chạy ứng dụng, các lập trình viên chỉ cần gọi method run() là được. Externalized Configuration: Spring Boot cho phép người dùng có thể sử dụng cấu hình (config) từ bên ngoài. Chính vì vậy mà mỗi ứng dụng được tạo ra có thể chạy được trên nhiều môi trường khác nhau.
Profiles: Dùng để phân chia các loại cấu hình cho các môi trường khác nhau. Loggin: Sử dụng phục vụ cho toàn bộ chức năng log trong phạm vi nội bộ. Những logging này sẽ được quản lý một cách mặc định. Ngoài ra còn rất nhiều các tính năng tương tự khác của Spring Boot như: Developing web Applications, Working with SQL Technologies, Security, Messaging, Caching, Calling rest Services with RestTemplate/WebClient, Sending Email, Validation,….
Tổng kết Spring Boot mang đến cho các lập trình viên rất nhiều những tính năng tuyệt vời. Hy vọng với những thông tin chia sẻ ở trên, các bạn đã hiểu hơn về Spring Boot là gì, có nên sử dụng Spring Boot hay không và nên tìm hiểu những kiến thức gì để vận dụng Spring Boot được tốt nhất. Khái niệm JSON Web Token (JWT) là một tiêu chuẩn mở (RFC 7519) định nghĩa một phương thức nhỏ gọn và khép kín, là một phương tiện đại diện cho các yêu cầu chuyển giao giữa hai bên client - server dưới dạng một JSON. Các thông tin được truyền tải 22 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT được đính kèm với một chữ ký điện được mã hóa lại bằng HMAC hoặc RSA có thể xác minh tính đúng đắn do đó tạo ra sự tin cậy cho dữ liệu.
Cấu trúc JSON Web Token bao gồm 3 thành phần chính được cách nhau bởi dấu chấm (. + Header + Payload + Signature ● Header Header sẽ chứa kiểu dữ liệu và thuật toán sửa dụng để mã hóa ra chuỗi JWT bao gồm 2 thành phần: loại token (mặc định là JWT) và thuật toán sử dụng để mã hóa như HMAC hoặc RSA. Sau đó JSON này sẽ được mã hóa Base64Url và thêm vào phần đầu tiên của JWT token. ● Payload Phần thứ 2 của token là payload, chứa các nội dung của thông tin (claim).
Thông tin được truyền đi có thể là mô tả của một thực thể hoặc có thể là thông tin bổ sung cho phần Header. Có 3 kiểu claims: registered, public, và private claims. Registered claims: Một tập hợp các nội dung thông tin đã được quy định sẵn, chúng không bắt buộc nhưng tùy vào các ứng dụng thực hiện thì khuyến khích sử dụng để tạo ra các điều kiện bắt buộc đối với những thông tin cần thiết. Public claims: Những thông tin có thể tự định nghĩa tùy theo ý muốn của người sử dụng ví dụ role, username, v.
Nhưng để tránh trùng lặp với các Registered claims chúng ta nên quy định các claims được liệt kê trong IANA JSON Web Token Registry. Private claims: Đây cũng là những thông tin tự định nghĩa hoặc các thông tin thêm, thường được sử dụng để chia sẻ thông tin giữa các Client. ● Signature Để tạo ra phần chữ ký này cần có encoded header, và encoded payload đã được mã hóa ở trên cùng kèm theo một khóa bí mật (chuỗi secret) và một thuật toán được chỉ định trong phần header. 23 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT Để đảm bảo tính đúng đắn của dữ liệu, chữ ký được sử dụng để xác minh thông điệp vẫn nguyên vẹn trong quá trình truyền nhận.
Nếu thông tin đã bị ai đó cố ý thay đổi trong phần header hoặc payload và gửi mạo danh đến server (nơi tạo và ký token) thì quá trình xác nhận thông tin sẽ không hợp lệ. Logo của ReactJS [7] Hin ReactJS ra mắt vào năm 2013, là một mã nguồn mở được phát triển bởi Facebook, bản thân nó được biết đến là một thư viện Javascript dùng để xây dựng các giao diện người dùng hay UI một cách dễ dàng và tiện lợi. Điểm nổi bật nhất của ReactJS đó là việc render dữ liệu được thực hiện cả ở trên tầng Server và ở dưới Client. Trong lập trình ứng dụng front-end, lập trình viên thường sẽ phải làm việc chính trên 2 thành phần sau: UI và xử lý tương tác của người dùng.
Điểm đến cuối cùng của việc sử dụng ReactJS đó là đảm bảo tốc độ nhanh, mượt và có khả năng mở rộng cao. Đặc trưng JSX: Trong React, lập trình viên sẽ thường dùng JSX thay vì thường xuyên sử dụng JavaScript để thiết kế bố cục trang web. JSX là một cú pháp mở rộng của Javascript, nó cho phép lập trình viên viết HTML trong React một cách dễ dàng. Khi biên soạn, JSX tối ưu hóa code, vì thế nó chạy nhanh hơn so với code JavaScript tương đương.
Redux: Redux là một vùng chứa trạng thái có thể dự đoán được hay còn biết đến là một thư viện của JavaScript. Redux được thiết kế nhằm hỗ trợ lập trình viên khi viết các ứng dụng của JavaScript có thể hoạt động trong các môi trường khác nhau. Mặc dù 24 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT Redux chủ yếu được sử dụng như một công cụ quản lý trạng thái với React, nhưng nó có thể được sử dụng với bất kỳ Framework hoặc thư viện JavaScript khác.