CodeGym /Blog Java /Ngẫu nhiên /Phần 8. Hãy viết một ứng dụng nhỏ bằng Spring Boot
John Squirrels
Mức độ
San Francisco

Phần 8. Hãy viết một ứng dụng nhỏ bằng Spring Boot

Xuất bản trong nhóm
Tài liệu này là phần kết của loạt bài "Giới thiệu về phát triển doanh nghiệp". Các bài viết trước: Phần 8. Hãy viết một ứng dụng nhỏ bằng Spring Boot - 1Hãy xem cách triển khai MVC đơn giản nhất bằng cách sử dụng Spring MVC làm ví dụ. Để làm điều này, chúng ta sẽ viết một ứng dụng Hello World nhỏ bằng Spring Boot. Tôi sẽ cung cấp cho bạn hướng dẫn từng bước để bạn có thể tự lặp lại mọi thứ. Đầu tiên, chúng tôi sẽ viết một ứng dụng nhỏ, sau đó chúng tôi sẽ phân tích nó.

Bước 1. Tạo ứng dụng Spring Boot trong IntelliJ IDEA.

Sử dụng Tệp -> Mới -> Dự án… để tạo một dự án mới. Trong cửa sổ mở ra, ở menu bên trái, chọn Spring Initializr và chọn SDK dự án. Để mặc định cho tùy chọn URL dịch vụ khởi tạo. Phần 8. Viết một ứng dụng nhỏ bằng Spring Boot - 2Nhấp vào nút "Tiếp theo". Trong cửa sổ tiếp theo, chúng ta cần chọn cài đặt dự án. Chúng ta sẽ có một dự án Maven. Chọn Dự án Maven làm loại. Điền vào các trường Nhóm và Tạo tác Nhấp vào Tiếp theo. Phần 8. Hãy viết một ứng dụng nhỏ bằng Spring Boot - 3Trong cửa sổ tiếp theo, chúng ta cần chọn các thành phần Spring Framework mà chúng ta sẽ sử dụng. Hai là đủ cho chúng tôi:
  • Spring Web là một thành phần cho phép chúng ta tạo các ứng dụng web. Thành phần này bao gồm Spring MVC.
  • Thymeleaf là công cụ mẫu của chúng tôi. Đó là một thứ cho phép chúng tôi gửi dữ liệu từ các trang Java sang HTML
Phần 8. Hãy viết một ứng dụng nhỏ bằng Spring Boot - 4Phần 8. Hãy viết một ứng dụng nhỏ bằng Spring Boot - 5Trong cửa sổ tiếp theo, chọn tên và vị trí của dự án trong hệ thống tệp: Phần 8. Hãy viết một ứng dụng nhỏ bằng Spring Boot - 6Nhấp vào nút "Hoàn tất". Dự án được tạo ra. Chúng tôi kết thúc với cấu trúc dự án sau: Phần 8. Hãy viết một ứng dụng nhỏ bằng Spring Boot - 7Ở đây chúng tôi quan tâm đến 2 tệp: pom.xml (bộ mô tả triển khai). Điều này cho phép bạn nhanh chóng và dễ dàng nhập các thư viện từ các khung khác nhau vào dự án của chúng tôi. Đó cũng là nơi chúng tôi định cấu hình cách ứng dụng của chúng tôi được xây dựng. Ứng dụng của chúng tôi được xây dựng bằng Maven và pom.xml là tệp cấu hình cho hệ thống xây dựng này. Lớp Java là MvcDemoApplication. Đây là lớp chính của ứng dụng của chúng tôi. Chúng tôi sẽ khởi chạy dự án Spring Boot của chúng tôi từ nó. Để bắt đầu, chỉ cần chạy phương thức chính của lớp này. Đây là mã cho lớp này, cũng như tệp pom.xml: MvcDemoApplication:

@SpringBootApplication
public class MvcDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(MvcDemoApplication.class, args);
    }

}
pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.codegym/groupId>
    <artifactId>mvc_demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>mvc_demo</name>
    <description>Spring MVC Demo</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

Bước 2. Tạo trang web

Ứng dụng của chúng tôi sẽ cực kỳ đơn giản. Chúng ta sẽ có một trang chính (index.html), trang này sẽ chứa một liên kết đến trang chào mừng (greeting.html). Trên trang lời chào, chúng tôi hiển thị lời chào. Chúng tôi sẽ sử dụng các tham số URL để chuyển tên sẽ được sử dụng trong lời chào sang trang hello.html. Hãy tạo trang chính của ứng dụng — index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Main page</title>
</head>
<body>
    <p>Get your greeting <a href="/greeting">here</a></p>
</body>
</html>
Bây giờ chúng ta sẽ tạo trang hello.html:

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Getting Started: Serving Web Content</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
    <p th:text="'Hello, ' + ${name} + '!'" />
</body>
</html>
Trang của chúng tôi có một <p th:text="'Hello, ' + ${name} + '!'" />thẻ, điều này không bình thường đối với HTML. Thuộc thtính của pthẻ là một cơ chế được sử dụng bởi công cụ mẫu Thymeleaf. Giá trị của thẻ psẽ là "Xin chào" + giá trị của namebiến mà chúng ta sẽ đặt trong mã Java.

Bước 3. Tạo bộ điều khiển

Bên trong gói mvc_demo, chúng ta sẽ tạo một gói điều khiển, trong đó chúng ta sẽ tạo bộ điều khiển của mình, HelloWorldController:

@Controller
public class HelloWorldController {

   @RequestMapping(value = "/greeting")
   public String helloWorldController(@RequestParam(name = "name", required = false, defaultValue = "World") String name, Model model) {
       model.addAttribute("name", name);
       return "greeting";
   }

}
Một mặt, có rất ít mã, nhưng mặt khác, có rất nhiều thứ đang diễn ra. Hãy bắt đầu phân tích của chúng tôi. Chú thích @Controller chỉ ra rằng lớp này là bộ điều khiển. Vào mùa xuân, bộ điều khiển xử lý các yêu cầu HTTP hướng đến các URL cụ thể. Lớp của chúng tôi có một phương thức helloWorldController được đánh dấu bằng chú thích @RequestMapping(value = "/greeting") . Chú thích này chỉ ra rằng phương thức này xử lý các yêu cầu HTTP GET hướng đến URL /greeting. Nói cách khác, phương thức này sẽ được gọi nếu ai đó điều hướng đến /greeting. Phương thức này trả về một Chuỗi. Theo Spring MVC, phương thức điều khiển sẽ trả về tên của chế độ xem. Tiếp theo, Spring sẽ tìm một tệp HTML có cùng tên, tệp này sẽ trả về dưới dạng phản hồi cho yêu cầu HTTP. Bạn có thể thấy, Phương pháp của chúng tôi có 2 đối số. Hãy xem xét chúng: Tham số 1: @RequestParam(name = "name", required = false, defaultValue = "World") Tên chuỗi. Chú thích @RequestParam chỉ ra rằng tham số Tên chuỗi là tham số URL. Nếu chú thích chỉ ra rằng tham số URL này là tùy chọn (bắt buộc = false), thì nếu không có chú thích, giá trị của tham số Tên chuỗi sẽ là "Thế giới" (defaultValue = "World"). Nếu có, thì tham số URL sẽ là "tên" (tên = "tên"). Có thể có rất nhiều bạn không hiểu ở đây. Hãy cung cấp một số ví dụ. Bảng bên dưới cho biết giá trị của tham số Tên chuỗi, với các tùy chọn khác nhau để truy cập /lời chào (có và không có tham số URL)
URL mẫu Giá trị của Tên chuỗi
/Lời chào Thế giới
/greeting?name=Amigo bạn thân
/greeting?name=Zor Zor
Tham số 2: Tham số thứ hai là một mô hình Model. Tham số này là một số mô hình. Mô hình này bao gồm các thuộc tính bên trong khác nhau. Mỗi thuộc tính có một tên và một giá trị. Một cái gì đó giống như cặp khóa-giá trị. Chúng ta có thể sử dụng tham số này để gửi dữ liệu từ mã Java đến các trang HTML. Hoặc, sử dụng thuật ngữ MVC, gửi dữ liệu từ mô hình đến dạng xem. Nó chỉ còn lại để kiểm tra dòng cuối cùng. Đó là cách chúng tôi gửi dữ liệu từ Java sang HTML hoặc từ mô hình đến dạng xem. Phương thức bao gồm dòng sau: model.addAttribute("name", name); Ở đây chúng tôi tạo một thuộc tính mới có tên là tên và gán cho nó giá trị của tham số tên. Hãy nhớ rằng, gần đây chúng ta đã thảo luận <p th:text = "'Hello,' + ${name} + '!'" /> Chúng ta đã nói rằng giá trị của thẻ p là "Xin chào," + giá trị của biến tên mà chúng ta sẽ đặt trong mã Java. Chúng tôi đặt giá trị này bằng cách sử dụng dòng model.addAttribute("name", name);

Bước 5. Chạy

Để bắt đầu, chúng ta cần chạy phương thức chính của lớp MvcDemoApplication: Phần 8. Hãy viết một ứng dụng nhỏ bằng Spring Boot - 9Trong nhật ký, chúng ta sẽ thấy rằng ứng dụng web của chúng ta đã bắt đầu trên cổng 8080: Phần 8. Hãy viết một ứng dụng nhỏ bằng Spring Boot - 10Và điều này có nghĩa là trong trình duyệt, chúng ta có thể truy cập trang tại http:// localhost:8080 : Phần 8. Hãy viết một ứng dụng nhỏ bằng Spring Boot - 11Ở đây chúng ta có trang index.html. Hãy theo liên kết đến trang lời chào: Phần 8. Viết một ứng dụng nhỏ bằng Spring Boot - 12Bộ điều khiển của chúng tôi đã được gọi trong quá trình chuyển đổi này. Chúng tôi đã không chuyển bất kỳ tham số nào qua URL. Do đó, thuộc tính tên sẽ nhận giá trị mặc định ("Thế giới") được chỉ định trong chú thích. Hãy thử truyền tham số qua URL: Phần 8. Hãy viết một ứng dụng nhỏ bằng Spring Boot - 13Mọi thứ hoạt động như dự định. Bây giờ hãy thử theo dõi đường dẫn của biến tên:
  1. Người dùng đã chuyển "name=Amigo" trong URL ->
  2. Bộ điều khiển đã xử lý hành động của chúng tôi, nhận biến tên và đặt thuộc tính mô hình có tên tên bằng với giá trị nhận được ->
  3. Dữ liệu này được xem từ mô hình, kết thúc bằng trang hello.html và được hiển thị cho người dùng
Đó là nó cho bây giờ!

Hôm nay chúng ta đã làm quen với chủ đề khá lớn và thú vị về MVC (Model - View - Controller). Đây là phần cuối của loạt bài được thiết kế để giới thiệu cho bạn những điều bạn cần biết trước khi bắt đầu phát triển doanh nghiệp.

Trong phần nhận xét, hãy cho chúng tôi biết bạn quan tâm đến chủ đề nào — Chúng tôi sẽ giải quyết chúng!

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION