Buổi 1: Giới thiệu tổng quan java
- Tổng quan về ngôn ngữ Java
- Các đặc trưng cơ bản của Java so với ngôn ngữ C++
- Cài đặt môi trường
- Môi trường chạy Java JVM JRE, môi trường phát triển Java JDK
- Sử dụng IDE trong chương trình Intellij phiên bản Ultimate
- Cài đặt biến môi trường và giải thích ý nghĩa (Compile chương trình)
- Chương trình Helloworld, các phím tắt thông dụng
- Chương trình In ra màn hình và nhập vào từ bàn phím chuỗi và số
- Hướng dẫn sử dụng Git, thực hành các thao tác trên Git
Buổi 2: Biến, kiểu dữ liệu nguyên thủy, các phép toán số học
- Cấu trúc chuẩn chương trình trong Java, câu lệnh khối lệnh, quy tắc đặt tên biến, hàm class trong java
- Biến trong Java
- 8 Kiểu dữ liệu nguyên thủy và ví dụ, ép kiểu trong java
- Toán tử (số học, bit, quan hệ và logic, ép kiểu, điều kiện, thứ tự ưu tiên) và biểu thức trong java
- Cấu trúc điều khiển rẽ nhánh (if else, switch case)
Buổi 3: Câu trúc rẽ nhánh, vòng lặp
- Cấu trúc điều khiển rẽ nhánh (if else, switch case) - Tiếp theo
- Cấu trúc lặp (for, while, do while)
- Hàm trong Java (hàm và hàm đệ quy)
- Toán tử 3 ngôi trong Java.
Buổi 4: Mảng và xử lý chuỗi
- String trong Java (String pool, equals vs ==), StringBuilder, StringBuffer,
- Xử lý chuỗi trong Java
- Mảng 1 chiều và n chiều trong Java, Xử lý mảng trong Java
Buổi 5: OOP (Lập trình hướng đối tượng)
- Bài kiểm tra cuối module lập trình căn bản
- Lý thuyết và thực hành về hướng đối tượng trong Java(tại sao tư duy hướng đối tượng lại càn thiết?)
- Cách viết 1 class trong java (Khái niệm lớp và đối tượng)
- Các thành phần của 1 class (thuộc tính và phương thức), hàm getter setter
- Giải bài tập cộng trừ phân số
Buổi 6: Tính kế thừa và đa hình
- Hàm khởi tạo mặc định, hàm khởi tạo nhiều tham số
- Con trỏ this
- Tính chất kế thừa trong Java (từ khóa extend)
- Overloading và override trong Java
- Phạm vi truy cập (private, default, protected, public) trong Java
- Package trong java
Buổi 7: Trừu tượng và đóng gói
- Từ khóa static trong java (biến static hàm static, class static)
- Inner class trong java
- Abstract class trong Java (Phân biệt với class thường)
- Phương thức abstract trong Java
- Interface class trong java (Phân biệt với abstract class)
Buổi 8: Collection trong java
- Thực hành 4 tính chất đặc trưng của hướng đối tượng(đóng gói, kế thừa, trừu tượng, đa hình)
- Equal và Hashcode trong Java
- Collection và Map trong java và ứng dụng
- Sắp xếp trong Java
Buổi 9: Exception, Stream API
- Stream API trong java
- Xử lý Ngoại lệ (exception handling) trong java (Checked và unchecked trong java)
- Lớp bao kiểu dữ liệu nguyên thủy (wrapper class)
- Lambda Expression & Functional Interface
Buổi 10: I/O, Thread, Java advance
- Input/Output trong Java
- Thread và MultiThread trong Java
- Generic cách sử dụng
Buổi 11: MySQL, các câu lệnh căn bản
- Bài kiểm tra cuối module OOP
- Cài đặt môi trường MySQL,giới thiệu về MySQL, Làm quen với công cụ
- Làm quen Dữ liệu, CSDL với Hệ quản trị CSDL,.
- Các kiểu dữ liệu trong MySQL
- Hướng dẫn tạo TABLE, COLUMN, cài đặt khóa chính,UNIQUE..
- Hướng dẫn câu lên INSERT, UPDATE, DELETE, DROP
- Hướng dẫn câu lệnh QUERY căn bản
Buổi 12: Frontend support (final project)
- QUERY dữ liệu cần toán tử (><>=<=, LIKE, IN...)
- Thực hành LIMIT OFFSET, DISTINCT
- GROUP BY HAVING, ORDER BY
- Các hàm thông dụng trong SQL (sum, avg....)
- Khóa ngoại
- Các phép JOIN (INNER JOIN, LEFT JOIN, RIGHT JOIN)
- Subquery
- VIEW, FUNCTION, PROCEDURE trong SQL
Buổi 13: JDBC và Phân tích thiết kế hệ thống
Tạo lược đồ Use-Case
Tạo lược đồ Activity Diagram
Tạo sơ đồ mô hình ER Diagram
Các chiến lược phân tích ERD
Từ mô hình Thực thể kết hợp thành mô hình quan hệ
Tạo Cơ Sở dữ liệu từ mô hình quan hệ
Thiết kế giao diện người dùng
Thiết kế sơ đồ Kiến trúc phần mềm
Buổi 14: Servlet
- Bài kiểm tra cuối module MYSQL
- Tạo dự án sử dụng Servlet
- Khái niệm về web server, giao thức, kiến trúc web...
- Cấu hình Servlet
- Http Header
- Vòng đời của Servlet
- Request – Response
- Phương thức GET – POST
- Redirect – Forward
Buổi 15: Servlet và JDBC sử dụng reflection
- Java Servlet và JDBC làm việc với cơ sở dữ liệu
- Java Servlet Cookies
- Login sử dụng Servlet Cookie
- Java Servlet Session
- Login và Logout sử dụng Servlet Session
- Java Servlet Filter
- Java Servlet Filter dùng XML config
- Java Servlet Filter sử dụng Java config
- Java Servlet Filter tính số lượt truy cập website
- Java Servlet FilterConfig"
Buổi 16: JSP, Session, cookie
- Phân biệt JSP & Servlet
- Thực hành về JSP
- JSP - HttpServletRequest
- JSP - HttpServletResponse
- JSP Form
- JSP và JDBC
Buổi 17: JSTL, Filter, MVC
- JSP Filter
- JSP Session
- JSP Cookies
- JSP Upload File
- JSP - Expression Language (EL)
- JSP Tag Library (JSTL)
- JSP - Tự Tạo JSTL
Buổi 18: Spring framework, Spring MVC
Hướng dẫn sinh viên chọn đề tài (demo 1 số project các khóa trước đã làm, và gợi ý đề tài gợi ý các chức năng), đưa danh sách đề tài tham khảo
- Spring framework là gì ?/Tại sao lựa chọn Spring?/ Thành phần/ Tính chất chính trong Spring
- Spring Boot là gì, vị trí Springboot trong hệ sinh thái Spring, vai trò của Spring Boot,và tại sao cần học Spring Boot
- Tạo project Spring Boot bằng Intellij
- Tìm hiểu các thành phần cấu trúc các thành phần trong 1 project Spring Boot
- Tìm hiểu công cụ quản lý thư viện maven
- Rest API là gì ? Giao thức HTTP(Thực lành về phương thức, headerParam, Body, HTTP Code)
- Postman là gì? Cách cài đặt và sử dụng công cụ Test API Postman ?
"- Hướng dẫn sử dụng 1 số phương thức đơn giản @RestController:
+ GET endpoint
+ POST endpoint
+ PUT endpoint
+ DELETE endpoint"
- Làm quen và thực hành Json, thực hành xử lý Json, (hoặc xml, xử lý xml)
- Bài tập : Xây dưng hệ thống quản lý thư viện buổi 14 bằng Rest API và JDBC
Buổi 19: Spring MVC, JDBC Template
- Giải thích các thành phần của 1 RestController (Phân biệt @PathVariable, @RequestParam, @RequestBody, @Header)
- Consumer và producer (Xử lý dữ liệu đầu vào và trả về Json hoặc XML)
- Hướng dẫn build dự án, vai trò Tomcat
- Làm quen mô hình MVC(vai trò các tầng, phân biệt giữa DTO và Entity, Tại sao cần phải chia tầng như vậy?)
- Hướng dẫn tải trang bằng Springboot (sử dụng thymeleaf)
- Tổng quan về ViewResolver Thymeleaf (cách truyền dữ liệu từ controller xuống view, cú pháp căn bản thymeleaf để lấy dữ liệu )
- Phân biệt @Controller với @RestController
- Bài tập Xây dựng chương trình quản lý thư viện ở trên bằng cách sử dụng giao diện HTML lấy dữ liệu ra màn hình
Buổi 20: Submit form, validation
- Làm quen thymeleaf (tiếp) submit form, sử dụng biến, vòng lặp, câu điều kiện, block, thymeleaf link...)
- Submit form đính kèm file
- Hướng dẫn validation form sử dụng Spring Boot
- Giải thích sự khác nhau giữa redirect, forward, renderview
- Bài tập: Tiếp túc bài quản lý thư viện áp dụng submitform cho các màn hình thêm sửa
Buổi 21: Bootstrap và Jquery
- Thực hành bootstrap
- Thực hành Jquery
- Sử dụng javascript làm bài tập hiển thị ảnh khi upload
- Hướng dẫn validation sử dụng jquery
- Hướng dẫn sử dụng ajax gọi API
- Hướng dẫn sử dụng fragment Thymeleaf để quản lý header, footer, navigation...
Buổi 22: Resource static, profile
- Resource static trong Springboot
- Đa ngôn ngữ Spring Boot
- Giải thích sâu về cơ chế Spring
- Annotation, Spring Annotations: @Autowired, @Component,
@Service, @Repository, @Configuration, @Primary....
- Dependency inversion in Spring: A few more examples...,
IOC Container, Application Context and Bean Factory"
- Nguyên lý SOLID
Bài tập, bài test cuối module
Buổi 23: ORM, Hibernate
- Chấm điểm đồ án đợt 1 với các tiêu chí:
- Chấm điểm danh sách các chức năng
- Sơ đồ USECASE (các đối tượng tham gia hệ thống)
- Hoàn thiện tối thiểu 30% màn hình có chức năng thêm sửa xóa, danh sách"
- Tìm hiểu ORM – Object Relational Mapping
- JPA – Java Persistence API
- Tìm hiểu về Hibernate
- Cách cấu hình dự án
- Bài tập: Tiếp tục bài tập buổi trước với yêu cầu chuyển từ JDBC sang ORM
Buổi 24: Spring Data JPA
- Spring Data JPA
- Cách cấu hình dự án
- Cách tạo Entity, Repository trong Spring Data JPA
- Sử dụng các hàm mặc định (save, findAll, getById....)
- Bài tập: Tiếp tục bài tập buổi trước với yêu cầu chuyển từ JDBC sang ORM
Buổi 25: JPA Query
- Spring data JPA query method, query creation Property Expressions
- Sử dụng Name Query
- Hướng dẫn custom Query và cách query các câu truy vấn phức tạp
- Hướng dẫn tìm kiếm phân trang
Buổi 26: JPA Transaction
- Transaction trong SpingDataJPA
- Sử dụng query OneTomany, ManyToMany
- Đối chiếu từ Spring Data JPA sang Hibernate
+Các trạng thái object
+ Vòng đời các trạng thái
+ Sessionfactory với EntityManager
Buổi 27: Spring Security
- Chấm điểm đồ án đợt 2 với các tiêu chí:
+ Hoàn thiện tối thiểu 70% màn hình có chức năng thêm sửa xóa, danh sách sử dụng ORM"
- Tổng quan về Spring Security (giải thích 2 vấn đề authentication và authorize)
- Cơ chế filter trong Java servlet
- Hướng dẫn cấu hình form login sử dụng spring security
- PasswordEncoder
- UserDetailSservice
- Spring Email
Thực hành: Tạo mới User, xác thực user qua email
Buổi 28: Xử lý phân quyền
- Hướng dẫn lấy thông tin người dùng trên backend và thymeleaf (ContextHolder)
- Cơ chế lưu thông tin user, Phiên và cấu hình phiên Phân biệt SESSION và COOKIE
- Hướng dẫn phân quyền USER sử dụng config và annotation
- Bài tập: Phân quyền cho ứng dụng quản lý thư viện, chức năng quên mật khẩu và thay đổi mật khẩu
Buổi 29: ControllerAdvice
- Hướng dẫn tạo trang chủ sử dụng template (Trang public), cách sử dụng phân quyền khi thực hiện luồng đặt hàng, thanh toán...
- Hướng dẫn Handler trong trường hợp đăng nhập thành công hoặc lỗi
- @ControllerAdvise bắt các Exception khi request lỗi
- Bài tập tiếp túc cho chức năng trang chủ của phần mềm quản lý thư viện
Buổi 30: JWT
- Spring Security API(Giải thích sự khác nhau giữa cơ chế xác thực bằng session và token)
- Hướng dẫn cài đặt và các thành phần trong Spring JWT
- Thực hành: Viết giao diện sử dụng javascript JWT gọi API qua backend
Buổi 31: Schedule, websocket
- Hướng dẫn sử dụng action @Schedule thực hiện các Job chạy ngầm
- Hướng dẫn báo cáo thống kê (giao diện biểu đồ và backend)
- Hướng dẫn xuất báo cáo sử dụng thư viện org.apache.poi
- các nội dung websocket, cache, thread, log4j2…
Buổi 32: UnitTest
- Unit test sử dụng JUnit (Làm quen và hướng dẫn cấu hình, ví dụ hàm test)
- Cách viết Unit Test cho các layer
+ Repository
+ Service
+ Controller"
Review đồ án của học viên, hướng dẫn giải đáp thắc mắc