JavaRush /Java блогы /Random-KK /Java тіліндегі веб-қосымша
Viacheslav
Деңгей

Java тіліндегі веб-қосымша

Топта жарияланған
Java тіліндегі веб-қосымша – 1

Кіріспе

Бір кездері Java веб-қосымшаларды басымдық ретінде таңдағандықтан, өз орнын нығайтты. Java өзінің алғашқы күндерінен бастап өз жолын табу үшін күресті. Біріншіден, мен апплеттерді ұсындым. Бұл әзірлеушілерге статикалық HTML беттерінде динамикалық мазмұн жасау үшін көптеген мүмкіндіктер берді. Дегенмен, апплеттер көптеген себептер бойынша үмітті ақтай алмады: қауіпсіздік, үстеме шығындар және т.б. Содан кейін Java тілін әзірлеушілер балама ұсынды - Servlet API . Және бұл дұрыс шешім болып шықты. Servlet API — кез келген Java веб-бағдарламасы құрастырылған спецификация, ол веб-негізделген қолданба немесе ақпаратты сұралғандай қайтаратын веб-қызмет болсын. Сондықтан Java веб-қосымшаларының қалай жұмыс істейтінін түсіну жолы Servlet API түсінуден басталады.
Java тіліндегі веб-қосымша – 2

Сервлет API

Сонымен, Servlet API - бұл тіл әзірлеушілері Java әзірлеушілеріне ұсынатын нәрсе. Servlet API - бұл біздің негізгі сұрақтарымызға жауап беретін спецификация. Оны мына жерден таба аласыз: " JSR-000340 JavaTM Servlet 3.1 Бағалау үшін соңғы шығарылымы ". « 1.1 Сервлет дегеніміз не? » тарауында сервлет динамикалық мазмұнды (яғни мазмұнды) жасайтын Java технологиясына негізделген веб-компонент екені айтылады . «Java негізіндегі» сервлет byte codeқа құрастырылған Java класы екенін білдіреді . Сервлеттер кейде Сервлет қозғалтқышы деп аталатын сервлет контейнерімен басқарылады. Сервлет контейнері сервлет функционалдығын қамтамасыз ететін веб-server кеңейтімі болып табылады. Өз кезегінде, сервлеттер сервлет контейнерімен жүзеге асырылатын сұрау/жауап парадигмасында клиентпен өзара әрекеттесуді қамтамасыз етеді. « 1.2 Сервлет контейнері дегеніміз не? » тарауында сервлет контейнері сұраулар мен жауаптар жіберілетін, MIME негізіндегі сұраулар мен жауаптар жасалатын және өңделетін желілік қызметтерді ұсынатын веб-serverдің немесе қолданбалы serverдің бөлігі екендігі айтылады. . Сонымен қатар, сервлет контейнерлері сервлеттердің өмірлік циклін басқарады (яғни, оларды қашан жасау, жою және т.б. шешу). Барлық сервлет контейнерлері сұрауларды қабылдау және жауаптарды жіберу үшін HTTP протоколын қолдауы керек. Бұл жерде MIME стандартты, ақпаратты интернет арқылы жіберуге болатындай етіп codeтау және хабарларды пішімдеу керектігін айтатын спецификация екенін қосқым келеді.
Java тіліндегі веб-қосымша – 3

Web-server

Веб-server – бұл клиенттерден HTTP сұрауларын қабылдайтын және оларға HTTP жауаптарын беретін server (әдетте HTML бетімен, суретімен, файлымен немесе басқа деректермен бірге). Сұралған ресурстар URL мекенжайлары арқылы анықталады. Servlet API қолдауы бар ең танымал веб-serverлердің бірі - Apache Tomcat . Көптеген веб-serverлер әр түрлі компоненттерден тұратын күрделі машиналар болып табылады, олардың әрқайсысы белгілі бір функцияларды орындайды. Мысалы:
Java тіліндегі веб-қосымша – 4

Қосқыштар

— Кірісте бізде клиенттердің кіріс сұрауларын қабылдайтын қосқыштар (яғни қосқыштар) бар. Tomcat ішіндегі HTTP қосқышы "Coyote" компоненті арқылы жүзеге асырылады. Қосқыштар клиенттен деректерді алады және оны Tomcat Engine жүйесіне жібереді. Сервлет контейнері - Tomcat Engine өз кезегінде клиенттен алынған сұранысты сервлет контейнері болып табылатын "Catalina" компонентін пайдалана отырып өңдейді. Қосымша мәліметтер алу үшін Tomcat құжаттамасын қараңыз: " Архитектураға шолу ". Servlet API спецификациясын қолдайтын басқа веб-serverлер бар. Мысалы, « Жетти » немесе « Су асты ». Олардың архитектурасы ұқсас, сондықтан бір сервлет контейнерімен жұмыс істеу принципін түсіне отырып, басқасымен жұмыс істеуге ауысуға болады.
Java тіліндегі веб-қосымша – 5

Веб қолданбасы

Сонымен, веб-бағдарламаны іске қосу үшін бізге Servlet API қолдайтын веб-server қажет (яғни веб-serverге Servlet API қолдауын жүзеге асыратын кеңейтім құрамдас бөлігі бар). Жақсы. Веб-қосымша дегеніміз не? Servlet API спецификациясының " 10 веб-қосымшасы " тарауына сәйкес веб-бағдарлама - бұл веб-serverдегі соңғы қолданбаны құрайтын сервлеттердің, HTML беттерінің, сыныптардың және басқа ресурстардың жинағы. « 10.6 Веб қолданбасының мұрағат файлы » тарауына сәйкес веб-қосымшаны Web ARchive (WAR кеңейтімі бар мұрағат) бумасына салуға болады. « Глоссарий-219 » бетінде айтылғандай :
Java тіліндегі веб-қосымша – 6
Яғни, бұл веб-қосымша екенін көрсету үшін JAR орнына WAR жасалған. Келесі маңызды факт: біздің WAR мұрағатымызда белгілі бір каталог құрылымы болуы керек. Servlet API спецификациясында « 10.5 Каталог құрылымы » тарауында. Бұл тарауда «WEB-INF» деп аталатын арнайы каталог бар екені айтылады. Бұл каталог клиентке көрінбейтіндігімен және оған тікелей көрсетілмейтіндігімен ерекше, бірақ ол сервлет codeы үшін қолжетімді. Сондай-ақ ол WEB-INF каталогында не болуы мүмкін екенін айтады:
Java тіліндегі веб-қосымша – 7
Осы тізімнің барлығынан біз қазір деployment descriptor деп аталатын кейбір web.xml файлы туралы элементті білмейміз және түсінбейміз . Бұл не? " 14. Орналастыру дескрипторы " тарауы орналастыру дескрипторына арналған. Қысқаша айтқанда, орналастыру дескрипторы веб-serverде веб-қосымшаны қалай орналастыру керектігін (яғни іске қосуды) сипаттайтын xml файлы болып табылады. Мысалы, орналастыру дескрипторы қолданбамызға қатынасу үшін қандай URL мекенжайларын пайдалану керектігін көрсетеді, қолданбамызға қатысты қауіпсіздік параметрлері және т.б. көрсетілген. " 14.2 Орналастыруды өңдеу ережелері " тарауында web.xml қолданбасы конфигурацияланып, іске қосылмас бұрын схема тексерілетіні айтылады (яғни, web.xml мазмұны схемаға сәйкес дұрыс жазылғаны тексеріледі) . Ал " 14.3 Орналастыру дескрипторы " тарауында диаграмманың мына жерде екендігі көрсетілген: Егер файлдың мазмұнына қарасақ, мынаны көруге болады: http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd
Java тіліндегі веб-қосымша – 8
XML файлдары үшін қандай схема қолданылады? Схемалар XML құжатын қалай дұрыс толтыру керектігін көрсетеді: қандай элементтерді қолдануға болады, элементтерде қандай деректер түрін көрсетуге болады, элементтер қандай ретпен жүруі керек, қандай элементтер қажет және т.б. XML құжатының схемасын Java тіліндегі интерфейспен салыстыруға болады, себебі Java тіліндегі схема берілген интерфейсті қанағаттандыратын (яғни берілген интерфейсті жүзеге асыратын) сыныптардың қалай жазылу керектігін де көрсетеді. Сонымен, біз құпия біліммен қаруландық және бірінші веб-қосымшаны жасауға дайынбыз!
Java тіліндегі веб-қосымша – 9

Веб-қосымшаны құру

Автоматты жоба құру жүйелерін қолданбай заманауи Java қолданбасымен жұмыс істеуді елестету қиын. Ең танымал жүйелердің кейбірі Maven және Gradle болып табылады . Бұл шолу үшін біз Gradle қолданбасын қолданамыз. Gradle орнату ресми сайтында сипатталған . Жаңа қосымшаны жасау үшін бізге Gradle ішіне орнатылған плагин қажет: " Build Init Plugin ". Java қолданбасын жасау үшін келесі пәрменді орындау керек: gradle init --type java-application
Java тіліндегі веб-қосымша – 10
Жобаны жасағаннан кейін build.gradle файлын өңдеу керек болады . Бұл құрастыру сценарийі деп аталады (толығырақ мәлімет алу үшін Gradle құжаттамасын қараңыз: " Құрастыру сценарийлерін жазу "). Бұл файл жобаны құрастыру жолын және Java жобасымен жұмыс істеудің басқа аспектілерін сипаттайды. Плагиндер блогы ағымдағы Gradle жобасы үшін қандай " Gradle плагиндерін " пайдалану керектігін сипаттайды. Плагиндер жобамыздың мүмкіндіктерін кеңейтеді. Мысалы, әдепкі плагин « java ». Бұл плагин әрқашан Java қолдауына мұқтаж болса пайдаланылады. Бірақ бізге « қолданба » плагині қажет емес , өйткені... оның сипаттамасында оның «орындалатын JVM қолданбасын» жасау үшін пайдаланылатыны, яғни. JVM қолданбаларын іске қосу. Біз WAR мұрағаты түрінде веб-қосымшаны жасауымыз керек. Егер біз Gradle құжаттамасында WAR сөзін іздесек, біз « War Plugin » табамыз. Сондықтан біз келесі плагиндерді анықтаймыз:
plugins {
    id 'java'
    id 'war'
}
Сондай-ақ « Соғыс плагинінің әдепкі параметрлерінде » веб-бағдарламаның барлық мазмұны бар каталог «src/main/webapp» болуы керек, web.xml болуы керек бірдей WEB-INF каталогы болуы керек делінген. орналасқан. Осындай файлды жасайық. Біз оны сәл кейінірек толтырамыз, өйткені... Бұл үшін бізде әлі жеткілікті ақпарат жоқ. «Тәуелділіктер» блогында біз жобамыздың тәуелділіктерін, яғни біздің қолданба жұмыс істей алмайтын кітапханаларды/жақтауларды көрсетеміз. Бұл жағдайда біз веб-қосымшаны жазып жатырмыз, яғни Servlet APIсіз жұмыс істей алмайтынымызды білдіреді:
dependencies {
    providedCompile 'javax.servlet:javax.servlet-api:3.1.0'
    testCompile 'junit:junit:4.12'
}
provideCompile тәуелділікті веб-қосымшаның WAR мұрағатына қосудың қажеті жоқ дегенді білдіреді: ол тек компиляция үшін қажет. Ал орындалған кезде бұл тәуелділікті басқа біреу (яғни веб-server) қамтамасыз етеді. Біз құрастыру сценарийінде қандай тәуелділік репозиторийін пайдаланғымыз келетіні туралы ақпаратты қалдырамыз - барлық көрсетілген тәуелділіктер одан жүктеледі:
repositories {
    jcenter()
}
Қалғанының барлығын құрастыру сценарий файлынан алып тастаймыз. Енді src\main\java\App.java сыныбын өңдейік. Одан сервлет жасайық. " 2-ТАРАУ. Servlet интерфейсі " тарауындағы Servlet API спецификациясы Сервлет интерфейсінде HttpServlet негізгі іске асыруы бар екенін айтады , ол көп жағдайда жеткілікті болуы керек және әзірлеушілер одан мұрагер болуы керек. Ал « 2.1.1 HTTP арнайы сұраныстарды өңдеу әдістері » тарауында кіріс сұрауларды өңдейтін негізгі әдістер көрсетілген. Осылайша, App.java сыныбын қайта жазайық:
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import java.io.IOException;

public class App extends HttpServlet {
    public String getGreeting() {
        return "Hello world.";
    }

    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 		// https://www.oracle.com/technetwork/java/servlet-142430.html
 		PrintWriter out = resp.getWriter();
 		out.println(this.getGreeting());
 		out.close();
 	}
}
Демек, бізде бәрі дайын сияқты. Орналастыру дескрипторын дұрыс жазу ғана қалады. Диаграммадан келесі мәтінді web.xml ішіне көшіріңіз:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="..."
      version="3.1">
      ...
</web-app>
Сондай-ақ, онда көрсетілген схемаға жол: http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd Енді web.xml serverінің API спецификациясында қалай көрінетінінің мысалын қарастырайық. Бұл мысал « 14.5.1 Негізгі мысал » тарауында берілген . Диаграммада көрсетілгенді спецификацияда көрсетілген мысалмен біріктірейік. Біз келесіні аламыз:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
      version="3.1">
      <display-name>A Simple Web Application</display-name>
      <servlet>
		<servlet-name>app</servlet-name>
		<servlet-class>App</servlet-class>
	  </servlet>
	  <servlet-mapping>
		<servlet-name>app</servlet-name>
		<url-pattern>/app</url-pattern>
	  </servlet-mapping>
</web-app>
Көріп отырғаныңыздай, біз бұрын көрсетілген схема мен schemaLocation қолдандық. Ал элементтердің өздерін сипаттау 14.5.1 тараудағы мысалдан алынды. Егер біз бәрін дұрыс орындасақ, біз градильдік соғыс тапсырмасын қатесіз орындаймыз:
Java тіліндегі веб-қосымша – 11
Java тіліндегі веб-қосымша – 12

Веб-қосымшаны іске қосу

Веб қолданбасы қалай іске қосылады? Алдымен неғұрлым күрделі нұсқамен айналысайық. Біз бұрын Servlet API қолдайтын Apache Tomcat веб-serverі бар екенін айтқанбыз. Бұл біздің жинақталған соғыс мұрағатын («орналастыру» деп те айтады) осы serverде орналастыра алатынымызды білдіреді. « Tomcat жүктеп алу » бетінде «Екілік таратулар» бөлімінен zip пішіміндегі «Core» жеткізу түрін жүктеп алыңыз. Жүктелген мұрағатты қандай да бір каталогқа ашыңыз, мысалы, C:\apache-tomcat-9.0.14. Серверді іске қоспас бұрын, өңдеу үшін файлды ашып conf\tomcat-users.xml, оған келесі жолды қосамыз: <user username="tomcat" password="tomcat" roles="tomcat,manager-gui,admin-gui"/> Енді пәрмен жолында bin каталогына өтіп, орындаңыз catalina.bat start. Әдепкі бойынша server консолі мына мекенжайда қолжетімді болады http://localhost:8080/manager. Логин мен құпия сөз tomcat-users.xml ішінде біз көрсеткендермен бірдей. Tomcat-те веб-қосымшаларды қамтитын «webapps» каталогы бар. Егер біз өзімізді орналастырғымыз келсе, соғыс мұрағатымызды сол жерге көшіруіміз керек. Біз бұрын gradle war командасын орындаған кезде, \build\libs\каталогта соғыс мұрағаты жасалды. Бұл бізге көшіру керек. Көшіргеннен кейін бетті жаңартып, http://localhost:8080/managerмынаны қараңыз:
Java тіліндегі веб-қосымша – 13
Аяқтағаннан кейін http://localhost:8080/javaweb/appбіз сервлетімізге жүгінеміз, өйткені Біз бұрын /app сұрауын Қолданба сервлетіне «салыстырдық» (яғни, салыстырдық). Қолданбаның қалай жұмыс істейтінін тексерудің жылдам жолы бар. Ал құрастыру жүйесі бізге тағы да көмектеседі. Gradle жобамыздың құрастыру сценарийінде біз плагиндер бөліміне жаңа " Grettyid "org.gretty" version "2.3.1" " плагинін қоса аламыз: Енді біз қолданбаны іске қосу үшін gradle тапсырмасын орындай аламыз:gradle appRun
Java тіліндегі веб-қосымша – 14
Мәліметтерді " Gretty плагинді қосу және қолданбаны іске қосу " бөлімінен қараңыз.
Java тіліндегі веб-қосымша – 15

Spring және Servlet API

Сервлеттер барлығының негізі болып табылады. Тіпті қазір танымал Spring Framework Servlet API қосымшасынан басқа ештеңе емес. Біріншіден, көктемгі шеңбер - бұл біздің жоба үшін жаңа тәуелділік. Сондықтан оны тәуелділіктер блогындағы құрастыру сценарийіне қосамыз: Spring Framework құжаттамасында " 1.1. DispatcherServletcompile 'org.springframework:spring-webmvc:5.1.3.RELEASE' " тарауы бар . Онда Spring Framework «алдыңғы контроллер» үлгісіне салынғанын айтады - бұл « DispatcherServlet » деп аталатын орталық сервлет болған кезде. Барлық сұраулар осы сервлетке келеді және ол қоңырауларды қажетті құрамдастарға береді. Көрдіңіз бе, тіпті мұнда сервлеттер бар. Орналастыру дескрипторына тыңдаушы қосу керек:
<listener>
	&ltlistener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
Бұл сервлет мәтінмәндік оқиға тыңдаушысы. Яғни, Сервлет мәтінмәні іске қосылғанда көктемгі мәтінмән (WebApplicationContext) де басталады. Сервлет мәтінмәні дегеніміз не? Ол Servle API спецификациясында " 4-БӨЛІМ. Servlet мәтінмәні " тарауында сипатталған . Сервлет мәтінмәні — сервлеттер іске қосылған веб-бағдарламаның сервлеттің «көрінісі». Әрбір веб-бағдарламаның өзінің Сервлет мәтінмәні бар. Әрі қарай, Spring Framework жүйесін қосу үшін контекст-парам - сервлет мәтінмәні үшін баптандыру параметрін көрсету керек.
<context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>/WEB-INF/app-context.xml</param-value>
</context-param>
Және DispatcherServlet анықтамасы конфигурацияны аяқтайды :
<servlet>
	<servlet-name>app</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<init-param>
		<param-name>contextConfigLocation</param-name>
 		<param-value></param-value>
	</init-param>
	<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
	<servlet-name>app</servlet-name>
	<url-pattern>/</url-pattern>
</servlet-mapping>
Енді бізге contextConfigLocation ішінде көрсетілген файлды толтыру керек. Мұны істеу жолы «1.3.1. Декларация» тарауындағы Spring Framework құжаттамасында сипатталған:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <context:component-scan base-package="ru.javarush.javaweb"/>
    <mvc:annotation-driven/>
</beans>
Мұнда қандай пакетті сканерлеу керектігін көрсету ғана емес, сонымен қатар annotationға негізделген, яғни Spring қалай жұмыс істейтіні туралы annotationларды бақылау маңызды. Тек ru.javarush.javaweb бумасын жасау және оған Spring контроллері класын орналастыру ғана қалады:
package ru.javarush.javaweb;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class SpringController {

    @GetMapping("/app")
    @ResponseBody
    public String getGreeting() {
        return "Hello world.";
    }
}
Енді gradle appRun бағдарламасын іске қосып, мекенжайға барсақ, http://127.0.0.1:8080/javaweb/appбіз бірдей Hello World аламыз. Көріп отырғаныңыздай, Spring Framework Servlet API-мен тығыз байланысты және оны оның үстінде жұмыс істеу үшін пайдаланады.
Java тіліндегі веб-қосымша – 16

Аннотациялар

Көріп отырғанымыздай, annotationлар ыңғайлы. Және олай ойлаған жалғыз біз емес едік. Сондықтан, Servlet API спецификациясында, 3.0 нұсқасынан бастап, сервлет контейнерлері бұрын annotationлар арқылы Орналастыру дескрипторында көрсетілгенді көрсету мүмкіндігін қолдау керектігін көрсететін « 8-БӨЛІМ Аңдатпалар және қосылатын мүмкіндік » тарауы пайда болды. Осылайша, web.xml файлын жобадан толығымен алып тастауға болады және сервлет сыныбының үстінде @WebServlet annotationсын көрсетуге және сервлеттің қай жолды салыстыру керектігін көрсетуге болады. Мұнда бәрі түсінікті сияқты. Бірақ егер біз көктемді күрделірек параметрлерді қажет ететін жобаға қоссақ ше? Мұнда бәрі біршама күрделірек. Біріншіден, Spring құжаттамасында Spring файлын web.xmlсіз конфигурациялау үшін WebApplicationInitializer іске асыратын өз сыныбыңызды пайдалану қажет екендігі айтылады. Қосымша мәліметтерді " 1.1. DispatcherServlet " тарауынан қараңыз. Бұл Көктем сабағы екен. Сервлет API мұнда қалай пайдаланылады? Шын мәнінде, ServletContainerInitializer Servlet API 3.0 нұсқасына қосылған . Java тіліндегі арнайы механизмді ( SPI деп аталады ) пайдалана отырып, Spring өзінің сервлет контейнерінің инициализаторы деп аталады SpringServletContainerInitializer. Ол өз кезегінде WebApplicationInitializer іске асыруларын іздейді және қажетті әдістерді шақырады және қажетті параметрлерді орындайды. Қосымша мәліметтер алу үшін " Сервлет контейнері WebApplicationInitializer іске асыруларын қалай табады " бөлімін қараңыз. Жоғарыдағы параметрлерді келесідей жасауға болады:
package ru.javarush.javaweb.config;

import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;

public class AppInitializer implements WebApplicationInitializer {
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        // регистрируем конфигурацию созданую высше
        ctx.register(AppConfig.class);
        // добавляем в контекст слушателя с нашей конфигурацией
        servletContext.addListener(new ContextLoaderListener(ctx));

        ctx.setServletContext(servletContext);

        // настраиваем маппинг Dispatcher Servlet-а
        ServletRegistration.Dynamic servlet =
                servletContext.addServlet("dispatcher", new DispatcherServlet(ctx));
        servlet.addMapping("/");
        servlet.setLoadOnStartup(1);
    }
}
Енді « Java негізіндегі конфигурацияны » пайдаланып, қай пакетті сканерлеу керек + annotationларды қосу керек екенін көрсетеміз:
package ru.javarush.javaweb.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "ru.javarush.javaweb.controllers")
public class AppConfig {
}
ru.javarush.javaweb.controllersСканерлеу кезінде конфигурация өзін таппай, тек контроллерлерді іздеуі үшін SpringController-дің өзі -ге жылжытылды .
Java тіліндегі веб-қосымша – 17

Қорытындылау

Бұл шолу Java-да веб-қосымшалардың қалай жұмыс істейтініне біраз жарық берді деп үміттенемін. Бұл айсбергтің ұшы ғана, бірақ негіздерін түсінбестен, осы іргетасқа негізделген технологиялар қалай жұмыс істейтінін түсіну қиын. Servlet API кез келген Java веб-бағдарламасының орталық бөлігі болып табылады және біз басқа фреймворктардың оған қалай сәйкес келетінін қарастырдық. Жалғастыру үшін келесі материалдарды көруге болады: #Вячеслав
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION