Bạn có chắc chắn muốn xóa bài viết này không ?
Bạn có chắc chắn muốn xóa bình luận này không ?
Viết ứng dụng đầu tiên với Spring
Viết ứng dụng đầu tiên với Spring
Trong bài viết này, mình sẽ hướng dẫn các bạn viết ứng dụng HelloWorld kinh điển trong Spring.
Các công cụ mình sẽ sử dụng bao gồm:
- Ubuntu 16.04
- JDK 1.8
- Eclipse Neon đã cài đặt Spring Tool Suite
Các công nghệ mình sẽ sử dụng bao gồm:
- Spring Boot
- Spring MVC
- Thymeleaf
Khởi tạo dự án
Với công cụ Spring Tool Suite, chúng ta có thể nhanh chóng tạo 1 dự án Spring bằng Spring Boot như sau:
Đầu tiên, ta chọn File -> New -> Spring Starter Project:
Sau đó nhập các thông tin cơ bản như Name, Group, Artifact, Package. Các bạn chú ý Name không được có dấu cách nhé. Ở đây mình sẽ chọn Type là Maven và Java Version là 8:
Sau đó, chọn Next. Spring Boot sẽ yêu cầu chọn các dependency cho dự án. Ở đây, mình sẽ lựa chọn dependency Web và Thymeleaf, sau đó chọn Next:
Qúa trình khởi tạo dự án bắt đầu. Spring Boot sẽ tự động tải các dependency mà ta đã chọn ở trên.
Đây là cây thư mục của dự án sau khi khởi tạo xong:
Viết controller
Ta tạo một package controller
trong src/main/java
để chứa các class controller của dự án. Mỗi một class controller sẽ chứa nhiều phương thức. Mỗi phương thức thực thi một nhiệm vụ riêng và sẽ có một URI pattern riêng.
Sau đó, tạo class MainController.java
có nội dung như sau:
package com.yuen.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class MainController {
@GetMapping("/")
public String test(Model model) {
model.addAttribute("msg", "Hello World Spring");
return "test";
}
}
Trong đoạn code trên, mình sử dụng:
- Annotation
@Controller
để thông báo cho Spring biết class hiện tại là một controller - Annotation
@GetMapping
xác định phương thức hiện tại sẽ xử lý các request có HTTP Method là GET và URI Pattern là "/". Ngoài@GetMapping
, Spring MVC cũng cung cấp annotation cho các HTTP Method còn lại như@PostMapping
,@PutMapping
,@PatchMapping
,@DeleteMapping
.
- Biến
model
truyền vàotest
có kiểu dữ liệu là Model. Model là một interface trong Spring MVC, có nhiệm vụ truyền dữ liệu từ controller cho view. Ở đây mình sẽ truyền thuỘc tínhmsg
có nội dung là "Hello World Spring" cho viewtest.html
bằng cách sử dụng phương thức addAttribute của Model. Ngoài cách dùng Model, ta cũng có thể dùng ModelMap hoặc ModelAndView để truyền dữ liệu từ controller cho view - Controller sẽ trả về một String tương ứng với tên của view:
return "test"
=> view là test.html (do mình dùng template engine là Thymeleaf nên file view là file html, một số template engine khác như Apache Tiles thì file view là file jsp...)
Viết view
Như đã nói ở trên thì file view của ta lúc này có tên là test.html
. Do Spring MVC khuyến khích sử dụng Thymeleaf nên trong tut này mình sẽ lựa chọn template engine này.
Các file view sẽ được đặt trong thư mục templates
của src/main/resources
:
Ta tạo file test.html
có nội dung như sau:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8" />
<title>Hello World</title>
</head>
<body>
<h1 th:text="${msg}"></h1>
</body>
</html>
Có một vài điểm chúng ta cần chú ý khi sử dụng Thymeleaf:
- Để thông báo cho Spring biết file html hiện tại đang dùng Thymleaf, ta cần khai báo thêm XML namespace
xmnlns:th="http://www.thymeleaf.org"
. Đây là một điểm chú ý rất quan trọng - Các thẻ html trong Thymeleaf bắt buộc là các thẻ đóng. Nếu không để ý rất có thể chương trình của chúng ta sẽ bị lỗi vì quên đóng thẻ
meta
:D - Để đổ
msg
ở controller ra view, mình sẽ sử dụng thuộc tínhth:text
của Thymeleaf. Còn${attributeName}
là cách để ta truy cập thuộc tính model của controller trong Thymeleaf, khá giống với Expresion Language trong JSP.${}
thực ra ở đây là một Spring EL. Spring EL (Spring Expression Language) là một ngôn ngữ hỗ trợ truy vấn và thao tác object graph tại thời điểm runtime.
Các bạn có thể tìm hiểu thêm về Thymeleaf cũng như cách tích hợp Thymeleaf với Spring tại đây
Chạy dự án
Để chạy dự án, ta sẽ chuột phải tên dự án, rồi chọn Run As -> Spring Boot App:
OK, lúc này ta vào địa chỉ http://localhost:8080, dòng chữ "Hello World Spring" đã được hiển thị:






