JavaRush /Java blogi /Random-UZ /8-qism. Spring-boot-da kichik dastur yozish

8-qism. Spring-boot-da kichik dastur yozish

Guruhda nashr etilgan
Ushbu material "Korxonani rivojlantirishga kirish" seriyasining yakuniy qismidir. Oldingi maqolalar: 8-qism. Spring-boot-da kichik dastur yozish - 1Misol sifatida Spring-MVC yordamida MVC amalga oshirishning eng oddiy misolini ko'rib chiqaylik. Buning uchun bahor-bootda kichik Hello World ilovasini yozamiz. Hamma narsani o'zingiz takrorlashingiz uchun men sizga bosqichma-bosqich ko'rsatmalar beraman. Avval kichik ariza yozamiz, keyin uni tahlil qilamiz.

1-qadam. IntelliJ IDEA da bahorgi yuklash dasturini yarating

File -> New -> Project... yordamida yangi loyiha yarating. Ochilgan oynada, chap tomondagi menyuda Spring Initializr-ni tanlang, Project SDK-ni tanlang va Initializr Service URL-ni sukut bo'yicha qoldiring. 8-qism. Spring-boot-da kichik dastur yozish - 2Keyingi tugmasini bosing. Keyingi oynada biz loyiha parametrlarini tanlashimiz kerak. Bizda Maven loyihasi bo'ladi. Type - Maven Project-ni tanlang, Group va Artifact-ni to'ldiring 8-qism. Spring-boot-da kichik dastur yozish - 3va Keyingiga bosing. Keyingi oynada biz foydalanadigan Spring Framework komponentlarini tanlashimiz kerak. Bizga faqat ikkita kerak:
  • Spring Web - bu veb-ilovalarni yaratishga imkon beradigan komponent. Ushbu komponent Spring MVC ni o'z ichiga oladi.
  • Thymeleaf - shablon dvigateli deb ataladigan vosita. Java'dan HTML sahifalariga ma'lumotlarni o'tkazishga imkon beradigan narsa
8-qism. Spring-boot-da kichik dastur yozish - 48-qism. Spring-boot-da kichik dastur yozish - 5Keyingi oynada fayl tizimidagi loyiha nomi va joylashuvini tanlang: 8-qism. Spring-boot-da kichik dastur yozish - 6Finish tugmasini bosing. Loyiha yaratildi. Bizda quyidagi loyiha tuzilmasi mavjud: 8-qism. Spring-boot-da kichik dastur yozish - 7Bu erda bizni 2 ta fayl qiziqtiradi: pom.xml - joylashtirish deskriptori. Bizning loyihamizga turli ramkalardagi kutubxonalarni tez va oson import qilish imkonini beradigan narsa, shuningdek, biz ilovamizni yig'ishni sozlashimiz mumkin bo'lgan narsa. Bizning ilovamiz Maven yordamida yaratilgan, pom.xml - bu qurish tizimining konfiguratsiya fayli. Java sinfi - MvcDemoApplication. Bu bizning ilovamizning asosiy klassi bo'lib, undan biz bahor-boot loyihamizni ishga tushiramiz. Boshlash uchun ushbu sinfdagi asosiy usulni ishga tushirish kifoya. Mana bu sinf uchun kod, shuningdek pom.xml fayli: 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-qadam. Veb-sahifalarni yarating

Bizning arizamiz juda oddiy bo'ladi. Bizda asosiy sahifa bo'ladi - index.html, uning ichida salomlash sahifasiga havola bo'ladi - greeting.html. Tabriklash sahifasida salomlashishni ko'rsatamiz. url parametrlari orqali greeting.html sahifasiga salomlashish nomini yuborish imkoniyatini amalga oshiramiz. Ilovamizning asosiy sahifasini yaratamiz - 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>
Endi greeting.html sahifasini yaratamiz:
<!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>
Bu yerda, atipik HTML sahifasidan tegni ko'rishingiz mumkin: teg <p th:text="'Hello, ' + ${name} + '!'" /> atributi Thymeleaf shablon mexanizmining asbobidir. Buning yordamida tegning qiymati "Salom," matni + o'zgaruvchining qiymati bo'ladi , biz Java kodidan o'rnatamiz. thppname

3-qadam: Controller yarating

Mvc_demo paketi ichida biz boshqaruvchi paketini yaratamiz, uning ichida biz HelloWorldController boshqaruvchimizni yaratamiz:
@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";
   }

}
Bir tomondan kod juda oz, lekin boshqa tomondan juda ko'p narsa bor. Keling, tahlilni boshlaylik. @Controller izohi bu sinf boshqaruvchi ekanligini bildiradi. Bahordagi kontrollerlar HTTP so'rovlarini muayyan manzillarga qayta ishlaydilar. Bizning sinfimizda helloWorldController usuli mavjud bo'lib, u izoh bilan belgilanadi - @RequestMapping(value = "/greeting"). Ushbu izoh ushbu usul HTTP GET so'rovlarini / salomlashish manziliga qayta ishlashini aytadi. Boshqacha qilib aytganda, agar kimdir /salomlashishga borsa, bu usul ishlaydi. Bu usul Stringni qaytaradi. Spring-MVC ga ko'ra, boshqaruvchi usuli ko'rinish nomini qaytarishi kerak. Keyinchalik, Spring xuddi shu nomdagi html faylini qidiradi, u HTTP so'roviga javob sifatida qaytariladi. Ko'rib turganingizdek, bizning usulimiz avval yaratgan veb-sahifaning nomini qaytaradi - salomlashish. Bizning usulimiz 2 ta argumentni oladi. Keling, ularni ko'rib chiqamiz: Parametr 1: @RequestParam(name = "ism", talab = noto'g'ri, defaultValue = "Jahon") String nomi. @RequestParam izohi String name parametri url parametri ekanligini bildiradi. Izoh qavslari urldagi ushbu parametr ixtiyoriy ekanligini ko'rsatadi (majburiy = noto'g'ri), agar u yo'q bo'lsa, String name parametrining qiymati World (defaultValue = "World") bo'ladi va agar mavjud bo'lsa, bu parametr urlda ism deb nomlanadi (ism = "ism") Bu erda juda ko'p noaniq bo'lishi mumkin. Keling, misollar keltiraylik. Quyidagi jadvalda /salomlashish manziliga kirishning turli variantlari uchun String name parametrining qiymati qanday bo'lishi ko'rsatilgan (URLda parametrlar bilan va parametrlarsiz)
Misol URL String nomi parametr qiymati
/salom Dunyo
/salom?name=Amigo Amigo
/greeting?name=Zor Zor
2-parametr: Ikkinchi parametr - Model modeli. Ushbu parametr modeldir. Ushbu model ichki jihatdan turli xil atributlardan iborat. Har bir atributning nomi va qiymati bor. Kalit-qiymat juftliklari kabi narsa. Ushbu parametr yordamida biz ma'lumotlarni Java kodidan html sahifalariga o'tkazishimiz mumkin. Yoki MVC terminologiyasida ma'lumotlarni Modeldan Ko'rinishga o'tkazing. Oxirgi qatorni tahlil qilish uchun qoladi. Java'dan html-ga yoki Modeldan View-ga ma'lumotlarni uzatish usuli. Usulning tanasi quyidagi qatorni o'z ichiga oladi: model.addAttribute("name", name); Bu erda biz name nomli yangi atribut yaratamiz va unga name parametrining qiymatini beramiz. Esingizda bo'lsa, yaqinda biz tegni muhokama qildik: <p th:text="'Hello, ' + ${name} + '!'" /> Biz p tegining qiymati "Salom," matni + Java kodidan o'rnatadigan nom o'zgaruvchisining qiymati bo'lishini aytdik. Ushbu qiymatni chiziq yordamida o'rnatamiz model.addAttribute("name", name);

5-qadam. Ishga tushirish

Ishga tushirish uchun MvcDemoApplication sinfida asosiy usulni ishga tushirishimiz kerak: 8-qism. Spring-boot-da kichik dastur yozish - 9Ishga tushirish jurnallarida bizning veb-ilovamiz 8080 portda boshlanganini ko'ramiz: 8-qism. Spring-boot-da kichik ariza yozish - 10Va bu biz brauzerdagi sahifaga o'tishimiz mumkinligini anglatadi: http:// localhost:8080 : 8-qism. Spring-boot-da kichik ariza yozish - 11Bu yerda index.html sahifasi bizga ko'rsatildi. Keling, salomlashish uchun havolaga o'tamiz: 8-qism. Spring-boot-da kichik ariza yozish - 12Ushbu o'tish paytida bizning kontroller ishladi. Biz URL orqali hech qanday parametr o'tkazmadik, shuning uchun izohda aytilganidek, name atributining qiymati World standart qiymatini oldi. Keling, parametrni url orqali o'tkazishga harakat qilaylik: 8-qism. Spring-boot-da kichik ariza yozish - 13Hamma narsa mo'ljallangandek ishlaydi. Endi nom o'zgaruvchisining yo'lini kuzatishga harakat qiling:
  1. Foydalanuvchi parametr nomi qiymatini = Amigo -> url orqali uzatdi
  2. Nazoratchi bizning harakatimizni qayta ishladi, nom o'zgaruvchisini qabul qildi va nom nomi va qabul qilingan qiymat bilan model atributini o'rnatdi ->
  3. Modeldan ushbu ma'lumotlar Ko'rinishga, greeting.html sahifasiga o'tdi va foydalanuvchiga ko'rsatildi
Ana xolos!

Bugun biz sizni MVC ning juda katta va qiziqarli mavzusi bilan tanishtirdik (Model - Ko'rish - Controller). Bu seriyaning oxiri, uning maqsadi sizni Enterprise rivojlanishini boshlashdan oldin bilishingiz kerak bo'lgan narsalar bilan tanishtirishdir.

Izohlarda sizni qiziqtirgan mavzularni qoldiring - biz buni qilamiz!

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