JavaRush /Java блогу /Random-KY /8-бөлүк. Жазгы жүктөөдө чакан арыз жазуу
Professor Hans Noodles
Деңгээл

8-бөлүк. Жазгы жүктөөдө чакан арыз жазуу

Группада жарыяланган
Бул материал «Ишкананы өнүктүрүүгө киришүү» сериясынын жыйынтыктоочу бөлүгү болуп саналат. Мурунку макалалар: 8-бөлүк. Жазгы жүктөөдө чакан арыз жазуу - 1Мисал катары Spring-MVC аркылуу MVC ишке ашыруунун эң жөнөкөй мисалын карап көрөлү. Бул үчүн, келгиле, жазгы жүктөөдө кичинекей Hello World тиркемесин жазалы. Баарын өзүңүз кайталай алышыңыз үчүн, мен сизге этап-этабы менен көрсөтмөлөрдү берем. Алгач кичинекей арыз жазып, анан талдайбыз.

1-кадам: IntelliJ IDEAда жазгы жүктөө тиркемесин түзүңүз

Файлды колдонуу -> Жаңы -> Долбоор... жаңы долбоорду түзүңүз. Ачылган терезеде, сол тараптагы менюдан Spring Initializr тандаңыз, Project SDK тандаңыз жана Initializr Service URL параметрин демейки катары калтырыңыз. 8-бөлүк. Жазгы жүктөөдө чакан арыз жазуу - 2Кийинки баскычын басыңыз. Кийинки терезеде биз долбоордун параметрлерин тандоо керек. Бизде Maven долбоору болот. Тип - Maven долбоорун тандап, Топту жана Артефактты толтуруп 8-бөлүк. Жазгы жүктөөдө чакан арыз жазуу - 3, Кийинки баскычын басыңыз. Кийинки терезеде биз колдоно турган Spring Framework компоненттерин тандоо керек. Бизге эки гана керек:
  • Spring Web - бул веб тиркемелерди түзүүгө мүмкүндүк берүүчү компонент. Бул компонент Spring MVC камтыйт.
  • Thymeleaf - Шаблон кыймылдаткычы деп аталган. Бул нерсе бизге Javaдан HTML баракчаларына маалыматтарды өткөрүүгө мүмкүндүк берет
8-бөлүк. Жазгы жүктөөдө чакан арыз жазуу - 48-бөлүк. Жазгы жүктөөдө чакан арыз жазуу - 5Кийинки терезеде файл тутумундагы долбоордун атын жана ордун тандаңыз: 8-бөлүк. Жазгы жүктөөдө чакан арыз жазуу - 6Аяктоо баскычын чыкылдатыңыз. Долбоор түзүлдү. Бизде төмөнкү долбоордун структурасы бар: 8-бөлүк. Жазгы жүктөөдө чакан арыз жазуу - 7Бул жерде бизди 2 файл кызыктырат: pom.xml - жайгаштыруу дескриптору. Биздин долбоорго ар кандай алHowтардан китепканаларды тез жана оңой импорттоого мүмкүндүк берген нерсе, ошондой эле биздин тиркеменин жыйындысын конфигурациялаган нерсе. Биздин колдонмо Maven аркылуу курулган, pom.xml бул куруу тутумунун конфигурация файлы. Java классы - MvcDemoApplication. Бул биздин тиркеменин негизги классы, андан биз жазгы жүктөө долбоорубузду ишке киргизебиз. Баштоо үчүн, бул класстагы негизги ыкманы иштетиңиз. Бул жерде бул класстын codeу, ошондой эле 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. Саламдашуу барагында биз саламдашууну көрсөтөбүз. url параметрлери аркылуу greeting.html баракчасына саламдашуу атын жөнөтүү мүмкүнчүлүгүн ишке ашыралы. Келгиле, биздин тиркеменин негизги барагын түзөлү - 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 баракчасынан тегди көрө аласыз: Tag <p th:text="'Hello, ' + ${name} + '!'" /> атрибуту Thymeleaf шаблон кыймылдаткычынын куралы болуп саналат. Анын аркасында тегдин мааниси "Салам," тексти + өзгөрмөнүн мааниси болот , аны биз Java codeунан орнотобуз. thppname

3-кадам: Controller түзүү

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";
   }

}
Бир жагынан code абдан аз, бирок экинчи жагынан көп нерсе болуп жатат. Анализди баштайлы. @Controller annotationсы бул класстын контроллер экенин көрсөтүп турат. Жаздагы контроллерлор HTTP сурамдарын белгилүү даректерге иштетишет. Биздин класста helloWorldController ыкмасы бар, ал annotation менен белгиленген - @RequestMapping(value = "/greeting"). Бул annotation бизге бул ыкма HTTP GET сурамдарын /саламдашуу дарегине иштетээрин айтат. Башкача айтканда, кимдир бирөө /саламдашууга барса, бул ыкма иштейт. Бул ыкма String кайтарат. Spring-MVC ылайык, контроллер ыкмасы көрүнүштүн атын кайтарып бериши керек. Андан кийин, Spring HTTP сурамына жооп катары кайтарылат, ошол эле аталыштагы html файлын издейт. Көрүнүп тургандай, биздин ыкма мурда түзүлгөн веб-баракчанын атын кайтарат - саламдашуу. Биздин ыкма 2 аргумент алат. Келгиле, аларды карап көрөлү: Параметр 1: @RequestParam(аты = "аты", талап = false, defaultValue = "Дүйнө") Саптын аталышы. @RequestParam annotationсында String name параметри url параметри экенин айтат. Аннотация кашаалары url'деги бул параметр милдеттүү эмес экенин көрсөтүп турат (талап = false), эгерде ал жок болсо, String name параметринин мааниси World (defaultValue = "World") болот, ал эми ал бар болсо, анда бул параметр url аты менен аталат (аты = "аты") Бул жерде түшүнүксүз нерселер көп болушу мүмкүн. Мисалдарды келтирели. Төмөнкү table /саламдашуу дарегине жетүүнүн ар кандай варианттары үчүн String name параметринин мааниси кандай болорун көрсөтөт (URL дарегинде параметрлери бар жана жок)
Мисал URL Саптын аталышынын параметр мааниси
/саламдашуу World
/greeting?name=Amigo Amigo
/greeting?name=Зор Zor
Параметр 2: Экинчи параметр Модель модели. Бул параметр модель болуп саналат. Бул модель ички ар кандай атрибуттардан турат. Ар бир атрибуттун аты жана мааниси бар. Ачкыч-маани жуптары сыяктуу бир нерсе. Бул параметрди колдонуу менен биз Java codeунан html баракчаларына маалыматтарды өткөрө алабыз. Же, MVC терминологиясында, Моделден Көрүнүшкө маалыматтарды өткөрүңүз. Акыркы сапты талдоо үчүн калды. Дайындарды Javaдан htmlге же Моделден Көрүнүшкө өткөрүү жолу. Методдун негизги бөлүгү төмөнкү сапты камтыйт: model.addAttribute("name", name); Бул жерде биз name деп аталган жаңы атрибутту түзөбүз жана ага name параметринин маанисин ыйгарабыз. Эсиңизде болсун, жакында эле биз тегди талкууладык: <p th:text="'Hello, ' + ${name} + '!'" /> Биз p тегинин мааниси "Салам," тексти + Java codeунан орното турган ат өзгөрмөнүн мааниси болорун айттык. Биз бул маанини сызык аркылуу койдук model.addAttribute("name", name);

5-кадам. Ишке киргизүү

Ишке киргизүү үчүн, биз MvcDemoApplication классында негизги ыкманы иштетишибиз керек: 8-бөлүк. Жазгы жүктөөдө чакан арыз жазуу - 9Ишке киргизүү журналдарында биздин веб тиркеме 8080 портунда башталганын көрөбүз: 8-бөлүк. Жазгы жүктөөдө чакан арыз жазуу - 10Бул биз браузердеги баракка өтө алабыз дегенди билдирет: http:// localhost:8080 : 8-бөлүк. Жазгы жүктөөдө чакан арыз жазуу - 11Бул жерде index.html баракчасы бизге көрсөтүлдү. Саламдашуу үчүн шилтемени карайлы: 8-бөлүк. Жазгы жүктөөдө чакан арыз жазуу - 12Бул өтүү менен биздин контроллер иштеди. Биз URL аркылуу эч кандай параметр өткөргөн жокпуз, annotationда айтылгандай, name атрибутунун мааниси демейки World маанисин алган. Эми параметрди url аркылуу өткөрүүгө аракет кылалы: 8-бөлүк. Жазгы жүктөөдө чакан арыз жазуу - 13Баары ойлогондой иштейт. Эми аты өзгөрмөнүн жолун издөөгө аракет кылыңыз:
  1. Колдонуучу = Amigo -> url аркылуу параметрдин маанисин өткөрдү
  2. Контроллер биздин аракетти иштетип, аталыштын өзгөрмөсүн кабыл алды жана аталыштын аталышы жана кабыл алынган мааниси менен моделдин атрибутун койду ->
  3. Модельден бул маалымат View'ге, greeting.html барагына өтүп, колдонуучуга көрсөтүлдү
Баары болду!

Бүгүн биз сизди MVC (Модель - Көрүнүш - Контроллер) абдан чоң жана кызыктуу темасы менен тааныштырдык. Бул сериянын аягы, анын максаты - Enterprise өнүктүрүүнү баштоодон мурун эмнени бorшиңиз керектиги менен тааныштыруу.

Сизди кызыктырган темаларды комментарийге калтырыңыз - биз жасайбыз!

Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION