JavaRush /Blog Java /Random-MS /Bahagian 8. Menulis aplikasi kecil dalam spring-boot

Bahagian 8. Menulis aplikasi kecil dalam spring-boot

Diterbitkan dalam kumpulan
Bahan ini adalah bahagian akhir siri "Pengenalan kepada Pembangunan Perusahaan". Artikel sebelumnya: Bahagian 8. Menulis aplikasi kecil dalam spring-boot - 1Mari kita lihat contoh termudah pelaksanaan MVC menggunakan Spring-MVC sebagai contoh. Untuk melakukan ini, mari tulis aplikasi Hello World kecil dalam but spring. Supaya anda boleh mengulangi semuanya sendiri, saya akan memberi anda arahan langkah demi langkah. Mula-mula kami akan menulis aplikasi kecil, dan kemudian kami akan menganalisisnya.

Langkah 1: Buat aplikasi spring-boot dalam IntelliJ IDEA

Menggunakan Fail -> Baharu -> Projek... buat projek baharu. Dalam tetingkap yang terbuka, dalam menu sebelah kiri, pilih Spring Initializr, pilih Project SDK dan biarkan pilihan URL Perkhidmatan Initializr sebagai lalai. Bahagian 8. Menulis aplikasi kecil dalam spring-boot - 2Klik butang Seterusnya. Dalam tetingkap seterusnya kita perlu memilih parameter projek. Kami akan mengadakan projek Maven. Pilih Jenis - Projek Maven, isikan Kumpulan dan Artifak Bahagian 8. Menulis aplikasi kecil dalam spring-boot - 3dan klik Seterusnya. Dalam tetingkap seterusnya kita perlu memilih komponen Spring Framework yang akan kita gunakan. Kami hanya memerlukan dua:
  • Spring Web ialah komponen yang membolehkan kami membuat aplikasi Web. Komponen ini termasuk Spring MVC.
  • Thymeleaf - Enjin templat yang dipanggil. Satu perkara yang membolehkan kami memindahkan data dari Java ke halaman HTML
Bahagian 8. Menulis aplikasi kecil dalam spring-boot - 4Bahagian 8. Menulis aplikasi kecil dalam spring-boot - 5Dalam tetingkap seterusnya, pilih nama dan lokasi projek dalam sistem fail: Bahagian 8. Menulis aplikasi kecil dalam spring-boot - 6Klik butang Selesai. Projek telah dibuat. Kami mempunyai struktur projek berikut: Bahagian 8. Menulis aplikasi kecil dalam spring-boot - 7Di sini kami berminat dengan 2 fail: pom.xml - deskriptor penempatan. Perkara yang membolehkan anda mengimport perpustakaan dengan cepat dan mudah daripada rangka kerja yang berbeza ke dalam projek kami, serta perkara yang kami konfigurasikan pemasangan aplikasi kami. Aplikasi kami dibina menggunakan Maven, pom.xml ialah fail konfigurasi sistem binaan ini. Kelas Java - MvcDemoApplication. Ini adalah kelas utama aplikasi kami, dari mana kami akan melancarkan projek spring-boot kami. Untuk memulakan, jalankan kaedah utama dalam kelas ini. Berikut ialah kod untuk kelas ini, serta fail 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>

Langkah 2. Buat halaman web

Permohonan kami akan menjadi sangat mudah. Kami akan mempunyai halaman utama - index.html, di dalamnya terdapat pautan ke halaman selamat datang - greeting.html. Pada halaman ucapan kami akan memaparkan ucapan tersebut. Mari kita laksanakan keupayaan untuk menghantar nama ucapan ke halaman greeting.html melalui parameter url. Mari buat halaman utama aplikasi kami - 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>
Sekarang mari buat halaman 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>
Di sini, daripada halaman html atipikal, anda boleh melihat teg: <p th:text="'Hello, ' + ${name} + '!'" /> Atribut thteg pialah alat enjin templat Thymeleaf. Terima kasih kepadanya, nilai teg pakan menjadi teks "Hello, " + nilai pembolehubah name, yang akan kami tetapkan daripada kod Java.

Langkah 3: Buat Pengawal

Di dalam pakej mvc_demo kami akan mencipta pakej contoller, di dalamnya kami akan mencipta pengawal kami, 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";
   }

}
Di satu pihak terdapat kod yang sangat sedikit, tetapi di sisi lain terdapat banyak perkara yang berlaku. Mari kita mulakan analisis. Anotasi @Controller menunjukkan bahawa kelas ini ialah pengawal. Pengawal dalam Spring memproses permintaan HTTP ke alamat tertentu. Kelas kami mempunyai kaedah helloWorldController, yang ditandakan dengan anotasi - @RequestMapping(value = "/greeting"). Anotasi ini memberitahu kami bahawa kaedah ini memproses permintaan HTTP GET ke alamat /greeting. Dalam erti kata lain, kaedah ini akan berfungsi jika seseorang pergi ke /menyambut. Kaedah ini mengembalikan String. Menurut Spring-MVC, kaedah pengawal mesti mengembalikan nama paparan. Seterusnya, Spring akan mencari fail html dengan nama yang sama, yang akan dikembalikan sebagai respons kepada permintaan HTTP. Seperti yang anda lihat, kaedah kami mengembalikan nama halaman web yang kami buat sebelum ini - salam. Kaedah kami mengambil 2 hujah. Mari lihat mereka: Parameter 1: @RequestParam(name = "name", required = false, defaultValue = "World") Nama rentetan. Anotasi @RequestParam menyatakan bahawa parameter nama String ialah parameter url. Tanda kurungan anotasi menunjukkan bahawa parameter ini dalam url adalah pilihan (diperlukan = palsu), jika ia tiada, nilai parameter nama String akan menjadi Dunia (defaultValue = "Dunia"), dan jika ia ada, maka parameter ini dalam url akan dipanggil nama (nama = "nama") Mungkin terdapat banyak yang tidak jelas di sini. Mari beri contoh. Jadual di bawah menunjukkan nilai parameter nama String untuk pilihan yang berbeza untuk mengakses alamat /salam (dengan dan tanpa parameter dalam URL)
Contoh URL Nilai parameter nama rentetan
/salam dunia
/salam?nama=Amigo Amigo
/salam?nama=Zor Zor
Parameter 2: Parameter kedua ialah Model model. Parameter ini ialah model. Model ini terdiri secara dalaman daripada pelbagai atribut. Setiap atribut mempunyai nama dan nilai. Sesuatu seperti pasangan nilai kunci. Menggunakan parameter ini, kami boleh memindahkan data dari kod Java ke halaman html. Atau, dalam terminologi MVC, pindahkan data daripada Model ke Paparan. Ia kekal untuk menghuraikan baris terakhir. Cara kami menghantar data dari Java ke html atau dari Model ke View. Badan kaedah mengandungi baris berikut: model.addAttribute("name", name); Di sini kita mencipta atribut baharu yang dipanggil nama dan memberikannya nilai parameter nama. Ingat, baru-baru ini kami membincangkan teg: <p th:text="'Hello, ' + ${name} + '!'" /> Kami mengatakan bahawa nilai teg p ialah teks "Hello, " + nilai pembolehubah nama, yang akan kami tetapkan daripada kod Java. Kami menetapkan nilai ini menggunakan baris model.addAttribute("name", name);

Langkah 5. Lancarkan

Untuk melancarkan, kita perlu menjalankan kaedah utama dalam kelas MvcDemoApplication: Bahagian 8. Menulis aplikasi kecil dalam spring-boot - 9Dalam log pelancaran, kita akan melihat bahawa aplikasi web kita bermula pada port 8080: Bahagian 8. Menulis aplikasi kecil dalam spring-boot - 10Dan ini bermakna kita boleh pergi ke halaman dalam penyemak imbas: http:// localhost:8080 : Bahagian 8. Menulis aplikasi kecil dalam spring-boot - 11Di sini halaman index.html telah dipaparkan kepada kami. Mari ikut pautan untuk memberi salam: Bahagian 8. Menulis aplikasi kecil dalam spring-boot - 12Semasa peralihan ini, pengawal kami berfungsi. Kami tidak menghantar sebarang parameter melalui URL, oleh itu, seperti yang dinyatakan dalam anotasi, nilai atribut nama mengambil nilai lalai Dunia. Sekarang mari cuba lulus parameter melalui url: Bahagian 8. Menulis aplikasi kecil dalam spring-boot - 13Semuanya berfungsi seperti yang dimaksudkan. Sekarang cuba jejaki laluan pembolehubah nama:
  1. Pengguna melepasi nilai nama parameter = Amigo -> melalui url
  2. Pengawal memproses tindakan kami, menerima pembolehubah nama dan menetapkan atribut model, dengan nama nama dan nilai yang diterima ->
  3. Daripada model, data ini pergi ke View, ke halaman greeting.html dan dipaparkan kepada pengguna
Itu sahaja!

Hari ini kami memperkenalkan anda kepada topik MVC (Model - View - Controller) yang agak besar dan menarik. Ini adalah penghujung siri ini, yang tujuannya adalah untuk memperkenalkan anda kepada perkara yang perlu anda ketahui sebelum memulakan pembangunan Perusahaan.

Tinggalkan topik yang menarik minat anda dalam ulasan - kami akan melakukannya!

Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION