JavaRush /Блоги Java /Random-TG /Қисми 8. Навиштани аризаи хурд дар spring-boot

Қисми 8. Навиштани аризаи хурд дар spring-boot

Дар гурӯҳ нашр шудааст
Ин мавод қисми ниҳоии силсилаи «Муқаддима ба рушди корхона» мебошад. Мақолаҳои қаблӣ: Қисми 8. Навиштани аризаи хурд дар spring-boot - 1Биёед соддатарин мисоли татбиқи MVC-ро бо истифода аз Spring-MVC ҳамчун мисол бубинем. Барои ин, биёед як барномаи хурди Hello World дар spring-boot нависед. Барои он ки шумо ҳама чизро худатон такрор кунед, ман ба шумо қадам ба қадам дастурҳо медиҳам. Аввал аризаи хурде менависем, баъд онро тахлил мекунем.

Қадами 1: Дар IntelliJ IDEA як барномаи пурборкунандаи баҳор эҷод кунед

Истифодаи Файл -> Нав -> Лоиҳа... лоиҳаи нав эҷод кунед. Дар равзанаи кушодашуда, дар менюи тарафи чап, Spring Initializr -ро интихоб кунед, Project SDK -ро интихоб кунед ва имконоти URL Service Initializr -ро ҳамчун пешфарз гузоред. Қисми 8. Навиштани аризаи хурд дар spring-boot - 2Тугмаи Next -ро пахш кунед. Дар равзанаи оянда мо бояд параметрҳои лоиҳаро интихоб кунем. Мо лоиҳаи Maven хоҳем дошт. Навъи - Лоиҳаи Maven -ро интихоб кунед, Гурӯҳ ва Артефактро пур кунед Қисми 8. Навиштани аризаи хурд дар spring-boot - 3ва Next -ро клик кунед. Дар равзанаи навбатӣ мо бояд ҷузъҳои Spring Framework-ро интихоб кунем, ки мо онҳоро истифода мебарем. Ба мо танҳо ду лозим аст:
  • Spring Web ҷузъест, ки ба мо имкон медиҳад барномаҳои веб эҷод кунем. Ин компонент Spring MVC-ро дар бар мегирад.
  • Thymeleaf - Ба ном муҳаррики шаблон. Чизе, ки ба мо имкон медиҳад, ки маълумотро аз Java ба саҳифаҳои HTML интиқол диҳем
Қисми 8. Навиштани аризаи хурд дар spring-boot - 4Часть 8. Пишем небольшое приложение на spring-boot - 5Дар равзанаи навбатӣ, ном ва ҷойгиршавии лоиҳаро дар системаи файлӣ интихоб кунед: Часть 8. Пишем небольшое приложение на spring-boot - 6Тугмаи Finish -ро пахш кунед. Лоиҳа сохта шудааст. Мо сохтори зерини лоиҳа дорем: Часть 8. Пишем небольшое приложение на spring-boot - 7Дар ин ҷо мо ба 2 файл таваҷҷӯҳ дорем: pom.xml - тавсифкунандаи ҷойгиркунӣ. Чизе, ки ба шумо имкон медиҳад, ки китобхонаҳоро аз чаҳорчӯбаҳои гуногун ба лоиҳаи мо зуд ва ба осонӣ ворид кунед, инчунин чизе, ки дар он мо маҷмӯи замимаи худро танзим мекунем. Замимаи мо бо истифода аз Maven сохта шудааст, pom.xml файли конфигуратсияи ин системаи сохтмон аст. Синфи Java - MvcDemoApplication. Ин синфи асосии замимаи мост, ки аз он мо лоиҳаи баҳории боркунии худро оғоз мекунем. Барои оғоз кардан, танҳо усули асосиро дар ин синф иҷро кунед. Ин аст рамзи ин синф, инчунин файли 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 дорем, ки дар дохor он пайванд ба саҳифаи истиқбол - greeting.html мавҷуд хоҳад буд. Дар саҳифаи табрикот мо табрикро нишон медиҳем. Биёед қобorяти фиристодани номи саломро ба саҳифаи 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, ки мо онро аз codeи Java муқаррар мекунем.

Қадами 3: Назоратчӣ эҷод кунед

Дар дохor бастаи mvc_demo мо як бастаи контроллерро эҷод мекунем, ки дар дохor он мо контролери худ 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";
   }

}
Аз як тараф code хеле кам бошад хам, аз тарафи дигар бошад. Биёед таҳлилро оғоз кунем. Шарҳи @Controller нишон медиҳад, ки ин синф контроллер аст. Назоратчиён дар фасли баҳор дархостҳои HTTP-ро ба суроғаҳои мушаххас коркард мекунанд. Синфи мо усули helloWorldController дорад, ки бо эзоҳ ишора шудааст - @RequestMapping(value = "/greeting"). Ин эзоҳ ба мо мегӯяд, ки ин усул дархостҳои HTTP GET-ро ба суроғаи / салом коркард мекунад. Ба ибораи дигар, ин усул кор мекунад, агар касе ба / салом равад. Ин усул String-ро бармегардонад. Мувофиқи Spring-MVC, усули контроллер бояд номи намоишро баргардонад. Баъдан, Spring файли html-ро бо ҳамон ном ҷустуҷӯ мекунад, ки ҳамчун посух ба дархости HTTP баргардонида мешавад. Тавре ки шумо мебинед, усули мо номи веб-саҳифаеро, ки қаблан таъсис дода будем, бармегардонад - салом. Усули мо 2 далелро мегирад. Биёед онҳоро бубинем: Параметри 1: @RequestParam(ном = "ном", лозим = бардурӯғ, defaultValue = "Ҷаҳон") Номи сатр. Шарҳи @RequestParam мегӯяд, ки параметри номи сатр параметри url аст. Қавсҳои эзоҳ нишон медиҳанд, ки ин параметр дар URL ихтиёрӣ аст (зарур = бардурӯғ), агар он мавҷуд набошад, арзиши параметри номи сатр Ҷаҳон (defaultValue = "World") хоҳад буд ва агар он мавҷуд бошад, пас ин параметр дар url ном номида мешавад (ном = "ном") Шояд дар ин ҷо бисёр чизҳо норавшан бошанд. Биёед мисолхо орем. Ҷадвали зер нишон медиҳад, ки арзиши параметри номи сатр барои вариантҳои гуногуни дастрасӣ ба суроғаи /салом (бо ва бидуни параметрҳо дар URL) чӣ гуна хоҳад буд.
Намунаи URL Арзиши параметри номи сатр
/салом Ҷаҳон
/салом?name=Амиго Амиго
/салом?name=Зор Зор
Параметри 2: Параметри дуюм модели намунавӣ мебошад. Ин параметр як модел аст. Ин модел аз хусусиятҳои дохилӣ иборат аст. Ҳар як атрибут ном ва арзиш дорад. Чизе ба монанди ҷуфтҳои калид-арзиш. Бо истифода аз ин параметр, мо метавонем маълумотро аз codeи Java ба саҳифаҳои html интиқол диҳем. Ё, дар истилоҳоти MVC, маълумотро аз Модел ба Намоиш интиқол диҳед. Барои таҳлor сатри охирин боқӣ мемонад. Тарзи интиқоли маълумот аз Java ба html ё аз Модел ба Намоиш. Дар таркиби метод сатри зерин мавҷуд аст: model.addAttribute("name", name); Дар ин ҷо мо атрибути наверо бо номи name эҷод мекунем ва ба он арзиши параметри номро таъин мекунем. Дар хотир доред, ки ба наздикӣ мо тегро муҳокима кардем: <p th:text="'Hello, ' + ${name} + '!'" /> Мо гуфтем, ки арзиши теги p матни "Салом," + арзиши тағирёбандаи ном хоҳад буд, ки мо онро аз codeи 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 нагузаронидем, бинобар ин, тавре ки дар эзоҳ гуфта шудааст, арзиши атрибути ном арзиши пешфарзро World гирифт. Биёед ҳоло кӯшиш кунем, ки параметрро тавассути url гузаронем: Часть 8. Пишем небольшое приложение на spring-boot - 13Ҳама чиз мувофиқи пешбинишуда кор мекунад. Акнун кӯшиш кунед, ки роҳи тағирёбандаи номро пайгирӣ кунед:
  1. Корбар арзиши номи параметрро = Amigo -> тавассути url гузаронд
  2. Назоратчӣ амали моро коркард кард, тағирёбандаи номро қабул кард ва атрибути моделро бо номи ном ва арзиши қабулшуда муқаррар кард ->
  3. Аз модел, ин маълумот ба Намоиш, ба саҳифаи greeting.html рафт ва ба корбар намоиш дода шуд
Ҳамааш ҳамин!

Имрӯз мо шуморо бо мавзӯи хеле калон ва ҷолиби MVC (Модели - Намоиш - Назоратчӣ) шинос кардем. Ин охири силсила аст, ки ҳадафи он муаррифии шумо бо он чизест, ки шумо пеш аз оғози рушди Enterprise бояд донед.

Мавзӯъҳоеро, ки ба шумо таваҷҷӯҳ доранд, дар шарҳҳо гузоред - мо инро мекунем!

Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION