LỜI CẢM ƠNLời đầu tiên nhóm xin phép được gửi lời cảm ơn chân thành và sâu sắc nhất đến với Khoa Công Nghệ Thông Tin – Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh đã tạo điều k
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN
🕮🕮🕮🕮🕮
BÁO CÁO THỰC TẬP TỐT NGHỆP
NGÀNH: CÔNG NGHỆ THÔNG TIN
CBHD: Bùi Công Thành SVTH: Trần Việt Anh MSSV: 19110325 GVHD: Lê Văn Vinh
TP Hồ Chí Minh, tháng 12 năm 2022
Trang 2CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh Phúc
*******
TP Hồ Chí Minh, ngày 13 tháng 09 năm 2022
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Sinh viên thực hiện:
Họ và tên: Trần Việt Anh MSSV: 19110325
Ngành: Công nghệ thông tin Lớp: 19110ST1C
2 Ưu điểm:
3 Khuyết điểm:
5 Điểm:…… (Bằng chữ: )
Tp Hồ Chí Minh, ngày 01 tháng 12 năm 2022
Giáo viên hướng dẫn(Ký & ghi rõ họ tên)
Trang 3LỜI CẢM ƠN
Lời đầu tiên nhóm xin phép được gửi lời cảm ơn chân thành và sâu sắc nhất đến với Khoa Công Nghệ Thông Tin – Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố HồChí Minh đã tạo điều kiện cho người thực hiện báo cáo được học tập, phát triển kiến thức khi thực tập tại FPT Software
Bên cạnh đó người thực hiện báo cáo xin gửi đến thầy Lê Văn Vinh lời cảm ơn sâusắc nhất Trải qua một quá trình thực tập và thực hiện đề tài trong thời gian qua Thầy
đã tận tâm chỉ bảo nhiệt tình người thực hiện báo cáo trong suốt quá trình từ lúc bắt đầu cũng như kết thúc thực tập này
Với sự hướng dẫn nhiệt tình giúp đỡ tận tình của thầy Lê Văn Vinh và anh mentor Bùi Công Thành, người thực hiện báo cáo đã học tập và hiểu được những kiến thức cơbản về công nghệ mà người thực hiện báo cáo tìm hiểu trong quá trình thực tập Tuy nhiên lượng kiến thức là vô tận và với khả năng hạn hẹp người thực hiện báo cáo đã rất cố gắng để hoàn thành một cách tốt nhất Chính vì vậy việc xảy ra những thiếu sót là điều khó có thể tránh khỏi Người thực hiện báo cáo hi vọng nhận được sự góp ý tận tình của quý thầy (cô) và anh mentor qua đó người thực hiện báo cáo có thể rút ra được bài học kinh nghiệm và hoàn thiện và cải thiện nâng cấp lại sản phẩm của mình một cách tốt nhất có thể
Xin chân thành cảm ơn!
Sinh viên thực hiện
Trần Việt Anh – 19110325
Trang 4MỤC LỤC
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 2
LỜI CẢM ƠN 3
CHƯƠNG 1: GIỚI THIỆU CÔNG TY VÀ NHIỆM VỤ ĐƯỢC GIAO 6
1.1 Giới thiệu cơ quan thực tập 6
1.2 Giới thiệu lịch làm việc tại cơ quan 6
1.3 Giới thiệu nhiệm vụ được giao 6
CHƯƠNG 2: NỘI DUNG THỰC TẬP 8
2.1 Nội dung thực tập 8
2.2 Các kiến thức học được 8
2.2.1 Spring Boot 8
2.2.2 Spring Security 8
2.2.3 Spring Data JPA 9
2.2.4 JWT 9
2.3 Phương thức làm việc 9
2.4 Công việc hàng tuần 9
CHƯƠNG 3: QUÁ TRÌNH XÂY DỰNG PROJECT VÀ KẾT QUẢ 18
3.1 Giới thiệu project 18
3.2 Phân tích và thiết kế hệ thống 18
3.2.1 Xác định yêu cầu 18
3.2.2 Các vai trò và chức năng trong hệ thống 18
3.3 Kết quả thực hiện (Swagger UI) 20
3.3.1 API auth-controller 20
3.3.2 API brand-controller 21
3.3.3 API cart-controller 21
3.3.4 API category-controller 22
3.3.5 API order-controller 22
3.3.6 API product-controller 23
3.3.7 API province-controller 24
3.3.8 API rate-controller 24
3.3.9 API user-address-controller 25
Trang 53.3.10 API user-controller 25
CHƯƠNG 4: KẾT LUẬN 26
4.1 Nhận định của bản thân 26
4.2 Kết quả đạt được 26
4.3 Hạn chế 26
4.4 Hướng phát triển 26
TÀI LIỆU THAM KHẢO 27
Trang 6CHƯƠNG 1: GIỚI THIỆU CÔNG TY VÀ NHIỆM VỤ ĐƯỢC GIAO
1.1 Giới thiệu cơ quan thực tập
FPT Software là công ty thành viên thuộc tập đoàn FPT, chuyên cung cấp các dịch
vụ và giải pháp về công nghệ thông tin hàng đầu thế giới
Được thành lập vào năm 1999, đến nay công ty đã đạt được 1.6 tỷ USD doanh thu
và với hơn 54.000 nhân viên đang làm việc tại 28 quốc gia khác nhau trên thị trườngquốc tế Trong nhiều năm liền, FPT Software luôn được bình chọn là công ty yêu thíchhàng đầu của các lập trình viên và là công ty có môi trường làm việc năng động, tốtnhất châu Á
Sứ mệnh : Mang lại các giải pháp công nghệ thông tin tốt nhất cho các công ty, tổ
chức hàng đầu thế giới Cung cấp môi trường làm việc năng động cho các bạn trẻđang theo đuổi ngành công nghệ
Tầm nhìn: Thúc đẩy, phát triển bởi sự đổi mới, cam kết về mức độ hài lòng của
khách hàng với mong muốn trở thành công ty về công nghệ hàng đầu Việt Nam
Giá trị cốt lõi: Nhanh nhẹn - Đổi mới - Cam kết - Tôn trọng
1.2 Giới thiệu lịch làm việc tại cơ quan
Tại FPT Software, số giờ làm việc tiêu chuẩn trong 1 tuần là 40 tiếng Ngày làmviệc bắt đầu từ thứ Hai đến thứ Sáu hàng tuần Thời gian làm việc ở buổi sáng từ 8h00đến 12h00, buổi chiều từ 13h00 đến 17h00
Khi muốn nghỉ phép, nhân viên cần chủ động gửi e-mail cho Admin trước 2-3ngày để được sắp xếp Nếu có việc đột xuất, vấn đề về sức khoẻ,… thì nhân viên cóthể liên lạc cho Admin ngay trong ngày qua cuộc gọi
Trang 71.3 Giới thiệu nhiệm vụ được giao
Về nhiệm vụ được giao sẽ bao gồm ba nhiệm vụ chính như sau:
[1] Thực hành, tìm hiểu về Java Core, Spring Boot, Spring Security và các kiến
thức liên quan đến Back-end như: JWT (JSON Web Token), Swagger (Dùng đểhost API doc), RESTful API,…
[2] Học tập, nghiên cứu và làm việc theo nhóm (Spring Boot, Spring Data JPA,…) [3] Thực hiện project xây dựng hệ thống Back-end cho website thương mại điện tử
Tiki
Trang 8CHƯƠNG 2: NỘI DUNG THỰC TẬP 2.1 Nội dung thực tập
Trong quá trình thực tập kéo dài 2 tháng từ 04/07/2022 đến ngày 31/08/2022 đã hoàn thành thực hiện các công việc sau đây:
[1] Ôn tập về Java core, tìm hiểu về Spring Boot, Spring Security, Spring Data
Spring Boot hỗ trợ các bộ chứa nhúng (Embedded containers) giúp các ứng dụngweb có thể chạy độc lập mà không cần triển khai chúng lên các Web Server
Các tính năng của Spring Boot:
[1] Tạo ra các ứng dụng Spring độc lập
[2] Cung cấp rất nhiều các plugin để phát triển và test các ứng dụng Spring Boot
nhanh chóng sử dụng các công cụ như Maven và Gradle
[3] Có thể nhúng trực tiếp Tomcat, Jetty hoặc Undertow giúp chạy các ứng dụng
web mà không cần phải triển khai file WAR
[4] Stater Dependency giúp chạy các cấu hình Maven trở nên đơn giản hơn [5] Không sinh ra code cấu hình, không yêu cầu phải cấu hình bằng XML
2.2.2 Spring Security
Spring Security là một phần của Spring Framework, hỗ trợ việc triển khai các biệnpháp bảo mật ở tầng ứng dụng Spring Security hoạt động xoay quanh 2 vấn đề chính
là xử lý xác thực và xử lý bảo mật ở cấp độ web request
Spring Security là một framework mạnh và có độ tuỳ biến cao, do đó các lập trìnhviên có thể sử dụng các cấu hình có sẵn của nó hoặc tuỳ chỉnh theo các bài toán đượcđặt ra trong hệ thống
Trang 9Một số tính năng của Spring Security:
[1] Tích hợp các Servlet API
[2] Tích hợp tuỳ chọn với Spring Web MVC
[3] Cung cấp các sự bảo vệ chống lại các cuộc tấn công như session fixation,
clickjacking, CSRF,
[4] Hỗ trợ toàn diện và có thể mở rộng cho cả xác thực và phân quyền
2.2.3 Spring Data JPA
Spring Data là một module thuộc Spring Framework Spring Data JPA là một phầncủa Spring Data, nó được sinh ra để giúp tối giản hoá các bước triển khai JPA (JavaPersistance API)
Các tính năng của Spring Data JPA:
[1] Hỗ trợ XML mapping
[2] Cấu hình JavaConfig bằng cách sử dụng @EnableJpaRepositories
[3] Hỗ trợ phân trang, thực thi các truy vấn động
[4] Hỗ trợ xây dựng các Repositories dựa trên Spring và JPA
[5] Hỗ trợ xác thực các câu truy vấn có chú thích @Query tại thời điểm phát động
2.2.4 JWT
JSON Web Token (JWT) là một tiêu chuẩn mở (RFC 7519) nhằm xác minh tính
an toàn cho việc truyền thông tin giữa Client-Server dưới dạng JSON object Thôngtin này sẽ được chứng thực và đảm bảo tin cậy vì nó đã được ký số
JWT bao gồm 3 thành phần là Header, Payload và Signature Giữa các thành phầnđược ngăn cách bởi dấu chấm (.) Ví dụ:
aaaaa.bbbbb.cccccCách hoạt động của JWT: khi người dùng muốn truy cập vào các đường dẫn hoặctài nguyên đã được bảo vệ thì trong request được gửi đi phải có JWT được đính kèm ởAuthorization header Phía server sẽ kiểm tra JWT để xem người dùng có hợp lệ và đủđặc quyền để được truy cập tài nguyên đó hay không, nếu hợp lệ thì người dùng sẽđược phép truy cập và ngược lại người dùng sẽ không được phép truy cập vào tàinguyên đó
Trang 102.4 Công việc hàng tuần
Trang 11Mô ta ngắến g n các ho t ọ ạ
đ ng đã th c hi n ộ ự ệ
Tools,machinery,equipment&m ethodology used Các công c , máy móc, trang ụ thiếết b và ph ị ươ ng pháp đ ượ c
s d ng ử ụ
No.ofhour s/day Sôế gi ờ
ho t ạ
đ ng/ngà ộ y Mon
Online meetng g p Mentor ặ Online meetng g p Mentor ặ
Nh n task cài đ t các tool hôỗ ậ ặ trợ
Cài đ t các tool hôỗ tr khóa ặ ợ
Totalhours for the Week
T ng sôế gi trong tuầần ổ ờ
40
Trang 12Mô ta ngắến g n các ho t ọ ạ
đ ng đã th c hi n ộ ự ệ
Tools,machinery,equipment&m ethodology used Các công c , máy móc, trang ụ thiếết b và ph ị ươ ng pháp đ ượ c
s d ng ử ụ
No.ofhour s/day Sôế gi ờ
ho t ạ
đ ng/ngà ộ y Mon
Totalhours for the Week
T ng sôế gi trong tuầần ổ ờ
40
Trang 13Mô ta ngắến g n các ho t ọ ạ
đ ng đã th c hi n ộ ự ệ
Tools,machinery,equipment&m ethodology used Các công c , máy móc, trang ụ thiếết b và ph ị ươ ng pháp đ ượ c
s d ng ử ụ
No.ofhour s/day Sôế gi ờ
ho t ạ
đ ng/ngà ộ y Mon
Thurs
day
Thứ
năm
Online meetng và h c t p vêề ọ ậ
ORM và Spring
Tìm hi u và làm vi c v i ể ệ ớ Spring
Totalhours for the Week
T ng sôế gi trong tuầần ổ ờ
40
Trang 14Mô ta ngắến g n các ho t ọ ạ
đ ng đã th c hi n ộ ự ệ
Tools,machinery,equipment&m ethodology used Các công c , máy móc, trang ụ thiếết b và ph ị ươ ng pháp đ ượ c
s d ng ử ụ
No.ofhour s/day Sôế gi ờ
ho t ạ
đ ng/ngà ộ y Mon
MySQL
Totalhours for the Week
Trang 15Mô ta ngắến g n các ho t ọ ạ
đ ng đã th c hi n ộ ự ệ
Tools,machinery,equipment&m ethodology used Các công c , máy móc, trang ụ thiếết b và ph ị ươ ng pháp đ ượ c
s d ng ử ụ
No.ofhour s/day Sôế gi ờ
ho t ạ
đ ng/ngà ộ y Mon
MySQL Draw.io
MySQL Draw.io Totalhours for the Week
T ng sôế gi trong tuầần ổ ờ
40
Trang 16Mô ta ngắến g n các ho t ọ ạ
đ ng đã th c hi n ộ ự ệ
Tools,machinery,equipment&m ethodology used Các công c , máy móc, trang ụ thiếết b và ph ị ươ ng pháp đ ượ c
s d ng ử ụ
No.ofhour s/day Sôế gi ờ
ho t ạ
đ ng/ngà ộ y Mon
Online meetng làm đôề án Xấy d ng Service CRUD cho ự
Province, District, Commune
Online meetng làm đôề án Xấy d ng Entty Ratng, ự
RatngService thêm đánh giá, xem đánh giá theo s n ph m ả ẩ
Totalhours for the Week
T ng sôế gi trong tuầần ổ ờ
40
Trang 17Mô ta ngắến g n các ho t ọ ạ
đ ng đã th c hi n ộ ự ệ
Tools,machinery,equipment&m ethodology used Các công c , máy móc, trang ụ thiếết b và ph ị ươ ng pháp đ ượ c
s d ng ử ụ
No.ofhour s/day Sôế gi ờ
ho t ạ
đ ng/ngà ộ y Mon
Online meetng làm đôề án Merge code v i các thành ớ
viên, fix bug
Totalhours for the Week
T ng sôế gi trong tuầần ổ ờ
40
Trang 18Mô ta ngắến g n các ho t ọ ạ
đ ng đã th c hi n ộ ự ệ
Tools,machinery,equipment&m ethodology used Các công c , máy móc, trang ụ thiếết b và ph ị ươ ng pháp đ ượ c
s d ng ử ụ
No.ofhour s/day Sôế gi ờ
ho t ạ
đ ng/ngà ộ y Mon
Lên công ty báo cáo Hoàn thi n báo cáo ệ MySQL
Totalhours for the Week
T ng sôế gi trong tuầần ổ ờ
40
Trang 19CHƯƠNG 3: QUÁ TRÌNH XÂY DỰNG PROJECT VÀ KẾT QUẢ 3.1 Giới thiệu project
- Tên đề tài: Xây dựng hệ thống back-end cho website thương mại điện tử Tiki
- Công nghệ sử dụng: Spring boot, Spring Data JPA, Spring Security, Swagger UI
- Cơ sở dữ liệu: Mysql
- IDE sử dụng: Eclipse 2022
- Thời gian bắt đầu: 18/07/2022
- Thời gian kết thúc: 28/08/2022
- Số lượng thành viên: 4 người
- Vị trí trong dự án: Xây dựng, ứng dụng Spring Security vào project để xác thực,phân quyền người dùng với JSON Web Token (JWT) Triển khai, xây dựng cácmodule về người dùng, module xác thực, thiết kế mail server dùng để gửi email xácnhận, xác thực người dùng
Xem chi tiết sản phẩm
Thêm hàng vào giỏ hàng
Đặt hàng và thanh toán
Quản lý đơn hàng cá nhân
Trang 21Hình 3.2: Lược đồ thiết kế CSDL
3.3 Kết quả thực hiện (Swagger UI)
3.3.1 API auth-controller
Trang 223.3.2 API brand-controller
3.3.3 API cart-controller
Trang 233.3.4 API category-controller
3.3.5 API order-controller
Trang 243.3.6 API product-controller
Trang 253.3.7 API province-controller
3.3.8 API rate-controller
Trang 263.3.9 API user-address-controller
3.3.10.API user-controller
Trang 27CHƯƠNG 4: KẾT LUẬN 4.1 Nhận định của bản thân
FPT Software cung cấp môi trường làm việc năng động, cơ sở vật chất hiện đại,đầy đủ đáp ứng được nhu cầu thực tập và làm việc của sinh viên Ngoài ra, công tycòn tổ chức các hoạt động ngoại khoá như các buổi talking, meeting về các chủ đềnhư English, Tech Talk,… để nâng cao trải nghiệm cho quá trình thực tập cũng nhưcác giải đấu thể thao nâng cao sức khoẻ cộng đồng
Tuy khoảng thời gian thực tập khá ngắn ngủi nhưng việc các anh chị admin vàmentor đã tạo điều kiện hỗ trợ hết sức mình giúp quá trình học tập và làm việc trở nênthú vị, năng động hơn thông qua việc phổ biến, cung cấp chia sẻ các kinh nghiệm quacác buổi Talking cũng như Meeting Online cho sinh viên thực tập
4.2 Kết quả đạt được
- Học được tác phong làm việc chuyên nghiệp, kỹ năng mềm như viết email
- Trau dồi kỹ năng làm việc nhóm, tương tác qua lại giữa các thành viên
- Hiểu biết thêm về các công nghệ dùng để triển khai một hệ thống Back-end
- Cách thiết kế, triển khai một hệ thống Back-end với Java Spring Boot
4.3 Hạn chế
Thời gian làm việc trực tiếp trên công ty và số lần gặp mặt trực tiếp các trainer/mentor còn hạn chế Có 2 lớp Back-end nhưng chỉ có 1 lớp Front-end nên nhóm không có Front-end để ghép thành bài hoàn thiện, chỉ có thể chạy bài thông qua các APIs
4.4 Hướng phát triển
- Tạo giao diện đẹp mắt, trực quan, tối ưu hóa hiển thị và độ mượt mà của cáctrang người dùng
- Nâng cấp thêm chức năng thanh toán thông qua ngân hàng, ví điện tử
- Đăng nhập Website bằng tài khoản Google, Facebook…
- Xây dựng và hoàn thiện chức năng trao đổi trực tiếp với khách hàng bằng chatbox
Trang 28TÀI LIỆU THAM KHẢO
1 https://www.javainuse.com/spring/boot-jwt
2 https://springdoc.org/