JavaRush /จาวาบล็อก /Random-TH /ตอนที่ 8. การเขียนแอปพลิเคชั่นขนาดเล็กใน spring-boot
Professor Hans Noodles
ระดับ

ตอนที่ 8. การเขียนแอปพลิเคชั่นขนาดเล็กใน spring-boot

เผยแพร่ในกลุ่ม
เนื้อหานี้เป็นส่วนสุดท้ายของชุด "ข้อมูลเบื้องต้นเกี่ยวกับการพัฒนาองค์กร" บทความก่อนหน้านี้: ตอนที่ 8. การเขียนแอปพลิเคชั่นขนาดเล็กใน spring-boot - 1ลองดูตัวอย่างที่ง่ายที่สุดของการนำ MVC ไปใช้โดยใช้ Spring-MVC เป็นตัวอย่าง เมื่อต้องการทำเช่นนี้ เรามาเขียนแอปพลิเคชัน Hello World ขนาดเล็กใน spring-boot เพื่อให้คุณสามารถทำซ้ำทุกอย่างได้ด้วยตัวเอง ฉันจะให้คำแนะนำทีละขั้นตอนแก่คุณ ก่อนอื่นเราจะเขียนแอปพลิเคชันขนาดเล็ก จากนั้นเราจะวิเคราะห์มัน

ขั้นตอนที่ 1: สร้างแอปพลิเคชัน spring-boot ใน IntelliJ IDEA

การใช้ไฟล์ -> ใหม่ -> โครงการ... สร้างโครงการใหม่ ในหน้าต่างที่เปิดขึ้น ในเมนูด้านซ้าย ให้เลือก Spring Initializr เลือก Project SDK และปล่อยให้ตัวเลือก Initializr Service URL เป็นค่าเริ่มต้น ตอนที่ 8. การเขียนแอปพลิเคชั่นขนาดเล็กใน spring-boot - 2คลิกปุ่มถัดไป ในหน้าต่างถัดไป เราต้องเลือกพารามิเตอร์ของโครงการ เราจะมีโครงการมาเวน เลือกประเภท - โครงการ Maven กรอกกลุ่มและสิ่งประดิษฐ์ ตอนที่ 8. การเขียนแอปพลิเคชั่นขนาดเล็กใน spring-boot - 3แล้วคลิกถัดไป ในหน้าต่างถัดไป เราจำเป็นต้องเลือกส่วนประกอบ Spring Framework ที่เราจะใช้ เราต้องการเพียงสอง:
  • Spring Web เป็นส่วนประกอบที่จะช่วยให้เราสามารถสร้างเว็บแอปพลิเคชันได้ ส่วนประกอบนี้รวมถึง Spring MVC
  • Thymeleaf - เอ็นจิ้นเทมเพลตที่เรียกว่า สิ่งที่จะทำให้เราสามารถถ่ายโอนข้อมูลจาก Java ไปยังหน้า HTML
ตอนที่ 8. การเขียนแอปพลิเคชั่นขนาดเล็กใน spring-boot - 4ตอนที่ 8. การเขียนแอปพลิเคชั่นขนาดเล็กใน spring-boot - 5ในหน้าต่างถัดไป ให้เลือกชื่อและตำแหน่งของโปรเจ็กต์ในระบบไฟล์: ตอนที่ 8. การเขียนแอปพลิเคชั่นขนาดเล็กใน spring-boot - 6คลิกปุ่มเสร็จสิ้น โครงการได้ถูกสร้างขึ้น เรามีโครงสร้างโครงการดังต่อไปนี้: ตอนที่ 8. การเขียนแอปพลิเคชั่นขนาดเล็กใน spring-boot - 7ที่นี่เราสนใจ 2 ไฟล์: pom.xml - ตัวอธิบายการปรับใช้ สิ่งที่ช่วยให้คุณนำเข้าไลบรารีจากเฟรมเวิร์กที่แตกต่างกันมายังโปรเจ็กต์ของเราได้อย่างรวดเร็วและง่ายดาย รวมถึงสิ่งที่เรากำหนดค่าแอสเซมบลีของแอปพลิเคชันของเรา แอปพลิเคชันของเราสร้างขึ้นโดยใช้ Maven โดย pom.xml เป็นไฟล์กำหนดค่าของระบบบิลด์นี้ คลาส Java - MvcDemoApplication นี่คือคลาสหลักของแอปพลิเคชันของเรา ซึ่งเราจะเปิดตัวโปรเจ็กต์ spring-boot ของเรา ในการเริ่มต้น เพียงรันเมธอดหลักในคลาสนี้ นี่คือโค้ดสำหรับคลาสนี้ รวมถึงไฟล์ 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.javarush</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>

ขั้นตอนที่ 2 สร้างหน้าเว็บ

การสมัครของเราจะง่ายมาก เราจะมีหน้าหลัก - index.html ซึ่งภายในจะมีลิงก์ไปยังหน้ายินดีต้อนรับ - Greeting.html ในหน้าคำทักทายเราจะแสดงคำทักทาย ลองใช้ความสามารถในการส่งชื่อทักทายไปยังหน้า Greeting.html ผ่านพารามิเตอร์ url มาสร้างหน้าหลักของแอปพลิเคชันของเรา - 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>
ตอนนี้เรามาสร้างหน้า Greeting.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>
จากหน้า html ที่ไม่ปกติ คุณจะเห็นแท็กได้ที่นี่: <p th:text="'Hello, ' + ${name} + '!'" /> คุณลักษณะthแท็กpเป็นเครื่องมือของกลไกเทมเพลต Thymeleaf ด้วยเหตุนี้ค่าของแท็กpจะเป็นข้อความ “สวัสดี” + ค่าของตัวแปรnameซึ่งเราจะตั้งค่าจากโค้ด Java

ขั้นตอนที่ 3: สร้างตัวควบคุม

ภายในแพ็คเกจ mvc_demo เราจะสร้างแพ็คเกจตัวควบคุม ซึ่งภายในเราจะสร้างคอนโทรลเลอร์ของเรา 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";
   }

}
ในด้านหนึ่งมีโค้ดน้อยมาก แต่อีกด้านหนึ่งก็มีเรื่องมากมายเกิดขึ้น มาเริ่มการวิเคราะห์กันดีกว่า คำอธิบายประกอบ @Controller ระบุว่าคลาสนี้เป็นตัวควบคุม ตัวควบคุมใน Spring ประมวลผลคำขอ HTTP ไปยังที่อยู่เฉพาะ ชั้นเรียนของเรามีเมธอด helloWorldController ซึ่งมีเครื่องหมายกำกับไว้ - @RequestMapping(value = "/greeting") คำอธิบายประกอบนี้บอกเราว่าเมธอดนี้ประมวลผลคำขอ HTTP GET ไปยังที่อยู่ /greeting กล่าวอีกนัยหนึ่ง วิธีนี้จะได้ผลถ้ามีคนไปที่ /greeting วิธีการนี้จะส่งกลับสตริง ตาม Spring-MVC วิธีการควบคุมจะต้องส่งคืนชื่อของมุมมอง ต่อไป Spring จะค้นหาไฟล์ html ที่มีชื่อเดียวกัน ซึ่งจะถูกส่งกลับเป็นการตอบสนองต่อคำขอ HTTP อย่างที่คุณเห็นวิธีการของเราจะส่งคืนชื่อของหน้าเว็บที่เราสร้างไว้ก่อนหน้านี้ - คำทักทาย วิธีการของเราใช้เวลา 2 ข้อโต้แย้ง พารามิเตอร์ 1: @RequestParam(name = "name", required = false, defaultValue = "World") String name คำอธิบายประกอบ @RequestParam ระบุว่าพารามิเตอร์ชื่อสตริงเป็นพารามิเตอร์ url วงเล็บคำอธิบายประกอบระบุว่าพารามิเตอร์นี้ใน url เป็นทางเลือก (ต้อง = false) หากไม่มี ค่าของพารามิเตอร์ชื่อสตริงจะเป็น World (defaultValue = "World") และหากมีอยู่ พารามิเตอร์นี้ ใน url จะเรียกว่า name (name = "name") ในนี้อาจมีหลายอย่างที่ไม่ชัดเจน ลองยกตัวอย่าง ตารางด้านล่างแสดงค่าของพารามิเตอร์ String name สำหรับตัวเลือกต่างๆ ในการเข้าถึงที่อยู่ /greeting (มีและไม่มีพารามิเตอร์ใน URL)
URL ตัวอย่าง ค่าพารามิเตอร์ชื่อสตริง
/การทักทาย โลก
/greeting?name=อามิโก้ อามิโก
/greeting?name=ซอร์ ซอร์
พารามิเตอร์ 2: พารามิเตอร์ตัวที่สองคือ Model model พารามิเตอร์นี้เป็นแบบจำลอง โมเดลนี้ประกอบด้วยคุณลักษณะต่างๆ ภายใน แต่ละแอตทริบิวต์มีชื่อและค่า บางอย่างเช่นคู่คีย์-ค่า การใช้พารามิเตอร์นี้เราสามารถถ่ายโอนข้อมูลจากโค้ด Java ไปยังหน้า html หรือในคำศัพท์ MVC ให้ถ่ายโอนข้อมูลจากโมเดลไปยังมุมมอง มันยังคงแยกวิเคราะห์บรรทัดสุดท้าย วิธีที่เราส่งข้อมูลจาก Java ไปยัง html หรือจาก Model ไปยัง View เนื้อหาของวิธีการประกอบด้วยบรรทัดต่อไปนี้: model.addAttribute("name", name); ที่นี่เราสร้างแอตทริบิวต์ใหม่ที่เรียกว่าชื่อและกำหนดค่าของพารามิเตอร์ชื่อ โปรดจำไว้ว่าเมื่อเร็ว ๆ นี้เราได้พูดถึงแท็ก: <p th:text="'Hello, ' + ${name} + '!'" /> เราบอกว่าค่าของแท็ก p จะเป็นข้อความ “สวัสดี” + ค่าของตัวแปรชื่อ ซึ่งเราจะตั้งค่าจากโค้ด Java เราตั้งค่านี้โดยใช้เส้น model.addAttribute("name", name);

ขั้นตอนที่ 5 เปิดตัว

ในการเปิดตัว เราจำเป็นต้องเรียกใช้เมธอดหลักในคลาส MvcDemoApplication: ตอนที่ 8. การเขียนแอปพลิเคชั่นขนาดเล็กใน spring-boot - 9ในบันทึกการเปิดตัว เราจะเห็นว่าเว็บแอปพลิเคชันของเราเริ่มต้นที่พอร์ต 8080: ตอนที่ 8. การเขียนแอปพลิเคชั่นขนาดเล็กใน spring-boot - 10และนั่นหมายความว่าเราสามารถไปที่หน้าในเบราว์เซอร์: http:// localhost:8080 : ตอนที่ 8. การเขียนแอปพลิเคชั่นขนาดเล็กใน spring-boot - 11ที่นี่หน้า index.html ถูกแสดงให้เราเห็น ไปตามลิงก์เพื่อทักทายกัน: ตอนที่ 8. การเขียนแอปพลิเคชั่นขนาดเล็กใน spring-boot - 12ในระหว่างการเปลี่ยนแปลงนี้ ตัวควบคุมของเราทำงานได้ เราไม่ได้ส่งพารามิเตอร์ใดๆ ผ่าน URL ดังนั้น ตามที่ระบุไว้ในคำอธิบายประกอบ ค่าของแอตทริบิวต์ name จะใช้ค่าเริ่มต้น World ตอนนี้ลองส่งพารามิเตอร์ผ่าน url: ตอนที่ 8. การเขียนแอปพลิเคชั่นขนาดเล็กใน spring-boot - 13ทุกอย่างทำงานได้ตามที่ตั้งใจไว้ ตอนนี้พยายามติดตามเส้นทางของตัวแปรชื่อ:
  1. ผู้ใช้ส่งค่าของพารามิเตอร์ชื่อ = Amigo -> ผ่าน url
  2. ตัวควบคุมประมวลผลการกระทำของเรา ยอมรับตัวแปรชื่อ และตั้งค่าแอตทริบิวต์ model พร้อมด้วยชื่อชื่อและค่าที่ยอมรับ ->
  3. จากแบบจำลอง ข้อมูลนี้ไปที่มุมมอง ไปยังหน้า Greeting.html และแสดงต่อผู้ใช้
นั่นคือทั้งหมด!

วันนี้เราแนะนำให้คุณรู้จักกับหัวข้อ MVC (รุ่น - มุมมอง - ตัวควบคุม) ที่ค่อนข้างใหญ่และน่าสนใจ นี่เป็นการสิ้นสุดของซีรีส์นี้ โดยมีจุดประสงค์เพื่อแนะนำให้คุณรู้จักกับสิ่งที่คุณจำเป็นต้องรู้ก่อนเริ่มการพัฒนา Enterprise

ออกจากหัวข้อที่คุณสนใจในความคิดเห็น - เราจะทำมัน!

ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION