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:
alt text

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:
alt text

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 WebThymeleaf, sau đó chọn Next:
alt text

Chọn Finish:
alt text

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.
alt text

Đây là cây thư mục của dự án sau khi khởi tạo xong:
alt text

File pom.xml:
alt text

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ào test 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ính msg có nội dung là "Hello World Spring" cho view test.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:
alt text
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ính th: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:
alt text

OK, lúc này ta vào địa chỉ http://localhost:8080, dòng chữ "Hello World Spring" đã được hiển thị:
alt text

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Nguyễn Tuấn Anh

9 bài viết.
77 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
33 28
MyContact là một ứng dụng mà mình thường viết mỗi khi học một ngôn ngữ hay công nghệ mới. MyContact chỉ là một ứng dụng CRUD đơn giản, cho phép ngư...
Nguyễn Tuấn Anh viết hơn 1 năm trước
33 28
White
20 11
Hướng dẫn lập trình Spring Security Trong bài viết lần này, mình sẽ giúp các bạn bước đầu tìm hiểu (Link) thông qua xây dựng các chức năng: Đăng ...
Nguyễn Tuấn Anh viết hơn 1 năm trước
20 11
White
12 0
Giới thiệu Spring Framework Trong bài viết này, mình sẽ giới thiệu cho các bạn về một trong những Java EE framework rất nổi bật và phổ biến hiện ...
Nguyễn Tuấn Anh viết hơn 1 năm trước
12 0
Bài viết liên quan
White
20 11
Hướng dẫn lập trình Spring Security Trong bài viết lần này, mình sẽ giúp các bạn bước đầu tìm hiểu (Link) thông qua xây dựng các chức năng: Đăng ...
Nguyễn Tuấn Anh viết hơn 1 năm trước
20 11
White
33 28
MyContact là một ứng dụng mà mình thường viết mỗi khi học một ngôn ngữ hay công nghệ mới. MyContact chỉ là một ứng dụng CRUD đơn giản, cho phép ngư...
Nguyễn Tuấn Anh viết hơn 1 năm trước
33 28
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
9 bài viết.
77 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!