Professional Documents
Culture Documents
FRAMEWORK, ORM VÀ
XÂY DỰNG RESTFUL API
TRONG PHÁT TRIỂN ỨNG
DỤNG TẠI DOANH
NGHIỆP
Thực tập chuyên ngành cuối khóa
SDC-DATA
76 Trường Chinh
MỞ ĐẦU
I. Nội dung thực tập
1.1. Mục đích
- Tìm hiểu và xây dựng hệ thống back-end của web
- Hiểu được cơ chế hoạn động và ứng dụng của Spring framework.
- Áp dụng các kiến thức đã học vào việc phát triển ứng dụng thực tế tại doanh
nghiệp.
1.2. Ý nghĩa
Việc tìm hiểu xây dựng và phát triển back-end cho app bằng Spring Framework
bản thân sinh viên hiểu rõ hơn về chức năng, nhiệm vụ của từng bộ phần trong app và
web. Vận dụng kĩ năng lập trình vào xây dựng app và web.
1.3. Thời gian thực tập
12 tuần, bắt đầu từ ngày 1/02/2020 đến 1/05/2020.
1.4. Lịch trình:
Sinh viên có 3 tháng thực tập thực tế tại cơ quan (1/02/2020 đến 1/05/2020) và có
mặt tại cơ quan 7 buổi/tuần.
1.5. Địa điểm: Công ty TNHH Smart Data Cube (SDCdata).
Thông qua đề tài này, em muốn xây dựng một app và một web để việc thu thập
được thực hiện một cách nhanh chóng và chính xác hơn.
II. Bố cục của báo thực tập
Về phần nội dung, đề tài gồm có 2 chương:
1: Giới thiệu về các công nghệ sử dụng
Giới thiệu sơ lược về công nghệ sử dụng.
2: Tình hình thực tập tại doanh nghiệp
Báo cáo tình hình thực tập lại doanh nghiệp, các khó khăn và kinh nghiệm thu
được trong quá trình thực tập.
GIỚI THIỆU VỀ CÔNG NGHỆ SỬ DỤNG
I. Tìm hiểu về Spring Framework
1.1. Spring là gì ?
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.1.1. Các lợi ích khi sử dụng Spring Framework
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.
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.
1.1.2. Các dự án trong Spring Framework
- Spring MVC
- Spring Security
- Spring Boot
- Spring Batch
- Spring Social
- Spring IO
- Spring Cloud
- Spring Mobile
- Spring for Android
- Spring Session
Trong lần thực tập này , em chỉ tập trung vào Spring Boot và Spring
Security
1.1.3. Spring Boot
1.1.3.1. Spring Boot là gì ?
Spring Boot là một module của Spring Framework, cung cấp tính năng RAD
(Rapid Application Development) - Phát triển ứng dụng nhanh.
Spring Boot được dùng để tạo các ứng dụng độc lập dựa trên Spring.
Spring Boot không yêu cầu cấu hình XML
Nó là một chuẩn cho cấu hình thiết kế phần mềm, tăng cao năng suất cho
developer.
1.1.3.2. Ưu điểm của Spring Boot :
Có các tính năng của Spring Framework.
Tạo ứng dụng độc lập, có thể chạy bằng java -jar (cho cả java web).
Nhúng trực tiếp các ứng dụng server (Tomcat, Jetty…) do đó không cần phải triển
khai file WAR.
Cấu hình ít, tự động cấu hình bất kì khi nào có thể (Giảm thời gian viết code, tăng
năng suất).
Không yêu cầu XML config…
Cung cấp nhiều plugin.
Chuẩn cho Microservices (Cloud support; giảm việc setup, config; các thư viện hỗ
trợ…)
1.1.4. Spring Security
1.1.4.1 Spring Security là gì ?
Spring Security là một framework tập trung vào việc cung cấp khả năng xác thực
và phân quyền cho ứng dụng Java.
1.1.4.2. Cơ chế hoạt động của Spring Security
Khi chúng ta đăng nhập , Spring Security sẽ kiểm tra thông tin dựa vào các thông
tin chúng ta config để xác thực và phân quyền cho user.
Sau khi đăng nhập , user sẽ được lưu trong session, đối tượng user này gồm các
thông tin như username , password , role …
1.1.4.3. Ưu điểm của Spring Security :
Lợi ích lớn nhất của Spring Security là giúp bạn tích hợp tính năng xác thực và
phân quyền một cách dễ dàng vào ứng dụng của mình.
Ngoài ra Spring Security còn giúp:
Chống lại CSRF attack Bảo vệ Session Fixation Mã hóa mật khẩu. Cache control
X-XSS-Protection …
1.2. Tìm hiểu về JWT (JSON Web Token)
1.2.1. Tổng quan về JWT (JSON Web Token)
1.2.1.1. JWT là gì ?
JWT 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 , các thông tin trong chuỗi JWT được định dạng bằng JSON . Trong đó chuỗi
Token phải có 3 phần là header , phần payload và phần signature được ngăn bằng dấu “.”
1.2.1.2. Cấu trúc của JWT
JWT gồm 3 phần:
- Header
Phần Header sẽ chứa kiểu dữ liệu và thuật toán sử dụng để mã hóa ra chuỗi JWT.
- Payload
Phần payload sẽ chứa các thông tin mình muốn đặt trong chuỗi Token như
username, userId, author,…
- Signature
Phần chữ ký này sẽ được tạo ra bằng cách mã hóa phần header, payload kèm theo
một chuỗi secret(khóa bí mật).
Sau khi mã hóa Header và Payload bằng thuật toán base64UrlEncode và kèm theo
chuỗi secret được mã hóa bằng HS256 thì ta có được chuỗi Signature .
Kết hợp 3 chuỗi trên ta có được một chuối JWT
1.2.2. Ứng dụng của JWT (JSON Web Token)
1.2.2.1. Authentication
Đây là trường hợp phổ biến nhất thường sử dụng JWT. Khi người dùng đã đăng
nhập vào hệ thống thì những request tiếp theo từ phía người dùng sẽ chứa thêm mã JWT.
Điều này cho phép người dùng được cấp quyền truy cập vào các url, service, và resource
mà mã Token đó cho phép. Phương pháp này không bị ảnh hưởng bởi Cross-Origin
Resource Sharing (CORS) do nó không sử dụng cookie.
1.2.2.2. Trao đổi thông tin
JSON Web Token là 1 cách thức khá hay để truyền thông tin an toàn giữa các
thành viên với nhau, nhờ vào phần signature của nó. Phía người nhận có thể biết được
người gửi là ai thông qua phần signature. Và chữ ký được tạo ra bằng việc kết hợp cả
phần header, payload lại nên thông qua đó ta có thể xác nhận được chữ ký có bị giả mạo
hay không.
1.2.3. JWT (JSON Web Token) trong Spring Security
Khi hết hợp JWT vào Spring , chúng ta cần thêm các dependency sau để sử dụng
JWT
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.7.0</version>
</dependency>
Cơ chế hoạt động của JWT trong Spring :
1.3. Hibernate Framework
1.3.1 Giới thiệu về Hibernate
Hibernate ra đời năm 2001 bởi nhà sáng lập Gavin King như một sự thay thế cho
EJB2 kiểu thực thể bean.
1.3.2 Hibernate Framework là gì?
Hibernate framework là một giải pháp ORM (Object Relational Mapping) mã
nguồn mở, gọn nhẹ. Hibernate giúp đơn giản hoá sự phát triển của ứng dụng java để
tương tác với cơ sở dữ liệu.
Tool ORM giúp đơn giản hoá việc tạo ra dữ liệu, thao tác dữ liệu và truy cập dữ
liệu. Đó là một kỹ thuật lập trình để ánh xạ đối tượng vào dữ liệu được lưu trữ trong cơ
sở dữ liệu.