1. Spring / Spring Boot là gì
Spring là một FrameWork, mã nguồn mở phổ biến để tạo các ứng dụng chạy trên máy ảo Java (JVM).
Spring Boot là một công cụ giúp phát triển ứng dụng web và dịch vụ vi mô bằng Spring Framework nhanh hơn , dễ dàng hơn thông qua ba khả năng cốt lõi (quên = trượt phỏng vấn):
👉 Khả năng tự động cấu hình
👉 Opinionated approach: cho phép bạn config nhưng theo khuôn khổ nhất định
👉 Khả năng tạo các ứng dụng độc lập
Các tính năng này phối hợp với nhau, cung cấp cho bạn một công cụ cho phép bạn thiết lập ứng dụng dựa trên Spring với cấu hình và thiết lập tối thiểu.
2. Tải Inteliji IDEA
Công cụ giúp bạn lập trình mấy ứng dụng Java mà mình thấy là mượt mà và chuyên nghiệp nhất, recommend cho các bạn nên dùng, ít ra là thử một lần cho biết. Ngoài ra còn có một số IDE khác như Esclipse, NetBean, nhưng ở bài viết này mình chỉ hướng dẫn trên Inteliji
Tải bản full tại đây
3. Tạo Project trên Inteliji bằng Spring Initializr
Ấn Next
Đặt tên theo ý bạn
Tiếp theo, các bạn chọn vào những thứ mình sẽ dùng cho web, mới bắt đầu thì các bạn chỉ cần chọn những thứ theo mình như: Spring Web, Spring Boot DevTools, LomBok
Tìm kiếm tại ô thứ 1 và chọn thứ cần thiết tại ô thứ 2
Chọn thư mục để lưu project và hoàn thành tạo project
4. Hình như làm sai rồi nó sinh ra nguyên một đống File
Bình tĩnh, mình sẽ giải thích từng nội dung trong cái project này
👉 Thư mục src là nơi lưu trữ source code của bạn, mặc định là vậy, đổi ăn lone. Ở đây có hai thư mục con là main và test, nhưng mình là coder chân chính nên không quan trọng thư mục test, quan tâm main thôi nhé
👉 Thư mục src/main/java là nơi lưu Model, Controller của bạn, và bạn sẽ thấy một file Java với tên của Project, file này chỉ có duy nhất 1 hàm main, dùng để khởi động project Spring
👉 Thư mục resources là nơi lưu các file tĩnh như css, js, img và trong này có file application.properties dùng để config toàn bộ project Spring của bạn
👉 Bên ngoài cùng chúng ta sẽ thấy file pom.xml, file này dùng để khai báo những thư viện cần dùng và file này nói cho Inteliji biết project của chúng ta sẽ được chạy như thế nào, dựa vào những gì, nó bao gồm
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
Khai báo cái này để sau này dùng thư viện của spring, file pom chỉ lấy từ thằng này về cho tiện, khỏi khai báo phiên bản
<!-- Spring Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Đây là 1 thư viện mà chúng ta sẽ dùng, thư viện này dùng chung với plugin bên dưới để khởi động project spring
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
5. Giải thích pom.xml
Muốn Project chạy ngon hơn thì các bạn có thể thêm vào một số thư viện sau, nhưng không phải là lên mạng tải file jar về xong import vô như cách các bạn được học trên trường:
Bước 1. Chúng ta sẽ request luôn thư viện từ thằng Spring Parent như mình đã nói ở trên, hoặc nếu thằng này ko có thì các bạn có thể lên mạng tìm kiếm với từ khóa: tên thư viện + 'maven dependency'
Bước 2. Copy hết đống xml họ đưa rồi dán vào file pom.xml
Bước 3. Nó sẽ báo đỏ, đừng lo, ấn nút này để reload lại, nếu reload lại mà vẫn báo đỏ thì kiểm tra mình gõ đúng chưa
Các thư viện nên thêm vào, kèm giải thích:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
JSTL: Ai từng code web bằng Java chắc điều biết cái thư viện này, khỏi nhắc
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
Dùng JSP thì phải có cái này để xử lí đống jsp đó, không là chạy web nó không biến hóa jsp ra html được đâu
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
Dùng Anonation để tự sinh hàm Getter/Setter
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
Giúp các bạn Live Edit, không cần khởi động lại Spring mỗi lần để test. Để có thể Live Edit, sau khi cài thư viện này xong, các bạn làm theo ảnh bên dưới để Edit Configuration
6. Tạo View (Copy đại file JSP nào đó cũng được)
Đây là cấu trúc Project mẫu hiện tại, các views (file render ra thành trang web để cho người dùng tương tác, thấy được) thì các bạn có thể đặt nó ở bất kỳ đâu trong project này, nhưng các bạn phải biết cách cấu hình làm sao cho Spring và Inteliji hiểu ý của bạn
👉 Đầu tiên, vì mình đang code trên Inteliji, nên mình sẽ làm thêm 1 bước là khai báo module web cho Inteliji biết, bằng cách chọn File trên thanh công cụ -> Project Structure, sau đó thêm thư mục /webapp vào module web như hình dưới
👉 Tiếp theo, giả sử mình muốn đặt views là các file jsp, nằm bên trong thư mục webapp/views , đầu tiên mình sẽ tạo các thư mục còn thiếu này với tên tương ứng như hình trên, sau đó mình sẽ khai báo cho Spring hiểu rằng view của mình hiện tại đang nằm trong đó bằng các thêm vào file application.properties 2 dòng sau
spring.mvc.view.prefix=/views/
spring.mvc.view.suffix=.jsp
Việc Config đã xong, bây giờ các bạn có thể tạo bất kỳ views jsp nào tại thư mục đã khai báo, ví dụ như tạo thêm một file home.jsp với nội dung
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page contentType="text/html" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Spring</title>
</head>
<body>
<c:forEach var="i" begin="1" end="5" varStatus="count">
<h2>${count.index}: Hello World</h2>
<br><hr><br>
</c:forEach>
</body>
</html>
7. Tạo Controller
Vì Spring Boot hiểu bạn bằng các Annotation, nên việc tạo Controller đơn giản hơn rất nhiều, các bạn sẽ tạo một file java, đặt bất cứ đâu bạn muốn bên trong thư mục source code của bạn, ở đây là src/main/... Và sử dụng Annotation @Controller để Spring hiểu rằng file java đó chính là một Controller và sẽ quét các đường link request khi bạn khởi chạy project Spring, như ví dụ bên dưới là một file Controller đơn giản nhất kèm chú thích
package com.sat.satellite.Controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
//Đây là một Controller
@Controller
public class HomeController {
//Nếu đường link là "/" hay "/index" thì thực hiện hàm này, hàm trả về view (GET)
@RequestMapping(value = { "/", "/index" },method = RequestMethod.GET)
public String index(Model model) {
//Thêm một số Dynamic Data vào view, dùng bằng cách sử dụng JSTL hoặc Thymleaft tương tự như bên Strut
String message = "Hello Spring Boot + JSP";
model.addAttribute("Bruh", message);
//Trả về view có tên là home, postfix ko cần thêm vì đã kahi báo trong file application.properties
return "home";
}
}
8. Bạn đã là master spring boot
Rồi, chạy thử bằng cách xem lại phần 4 bên trên và vào đường link localhost:8080 , vì có dùng thư viện thêm nên bạn có thể Live Edit ở chế độ chạy Run hoặc Debug điều được, thành quả như bên dưới, source code mẫu bên dưới nữa, hết
Xem Source Code github tại đây
Cảm ơn các bạn đã tham khảo, By Tín