JavaRush /Java Blog /Random-TK /Java-da web programmasy
Viacheslav
Dereje

Java-da web programmasy

Toparda çap edildi
Java-da web programmasy - 1

Giriş

Bir wagtlar Java web programmalaryny ileri tutýanlygy sebäpli pozisiýasyny berkitdi. Java ilkinji günlerinden bäri öz ýoluny tapmak üçin göreşýär. Ilki bilen almalary teklip etdim. Bu, döredijilere statiki HTML sahypalarynda dinamiki mazmun döretmek üçin köp mümkinçilik berdi. Şeýle-de bolsa, almalar köp sebäplere görä garaşylýanlary kanagatlandyrmady: howpsuzlyk, ýerüsti we başgalar. Soňra Java dilini döredijiler alternatiwany - Servlet API teklip etdiler . Dogry karara geldi. Servlet API , web esasly programma bolsun ýa-da talap edilişi ýaly maglumatlary yzyna gaýtaryp berýän web hyzmaty bolsun, islendik Java web programmasynyň gurlan spesifikasiýasydyr. Şonuň üçin Java web programmalarynyň işleýşine düşünmegiň ýoly Servlet API-e düşünmekden başlaýar.
Java-da web programmasy - 2

Servlet API

Şeýlelik bilen, “Servlet API” dil döredijileriň Java döredijilere hödürleýän zadydyr. Servlet API esasy soraglarymyza jogap bermeli spesifikasiýa. Bu ýerden tapyp bilersiňiz: " JSR-000340 JavaTM Servlet 3.1 Baha bermek üçin jemleýji goýberiş ". " 1.1 Servlet näme? " Bölüminde dinamiki mazmun döredýän mazmun (ýagny mazmun) döredýän Java tehnologiýasyna esaslanýan web komponenti diýilýär . "Java esasly" serwletiň bytekodda düzülen Java synpydygyny aňladýar . Servletler käwagt Servlet Motor diýlip atlandyrylýan servlet konteýner tarapyndan dolandyrylýar. Servlet konteýner, servlet işleýşini üpjün edýän web serwer giňeltmesi . Hyzmatkärler, öz gezeginde, servlet konteýner tarapyndan amala aşyrylýan haýyş / jogap paradigmasynda müşderi bilen özara gatnaşygy üpjün edýär. " 1.2 Servlet konteýner näme? " Bölüminde servlet konteýneriniň haýyşlar we jogaplar iberilýän, MIME esasly haýyşlar we jogaplar döredilýän we işlenýän ulgam hyzmatlaryny berýän web serweriniň ýa-da amaly serweriň bir bölegi bolandygy aýdylýar. . Mundan başga-da, servlet konteýnerleri servletleriň ýaşaýyş siklini dolandyrýar (ýagny haçan dörediljekdigini, ýok edilmegini we ş.m.). Servhli hyzmat ediş gaplary, haýyşlary almak we jogap ibermek üçin HTTP protokolyny goldamalydyr. Bu ýerde, MIME-iň standart, spesifikasiýa bolup, maglumatlaryň nädip kodlanmalydygyny we habarlaryň internet arkaly iberilmegi üçin formatlanmalydygyny görkezýär.
Java-da web programmasy - 3

Web-serwer

Web serwer, müşderileriň HTTP isleglerini kabul edýän we olara HTTP jogaplaryny berýän serwerdir (köplenç HTML sahypasy, surat, faýl ýa-da başga maglumatlar bilen bilelikde). Talap edilýän çeşmeler URL-ler bilen kesgitlenýär. Servlet API goldawy bilen iň meşhur web serwerlerinden biri Apache Tomcat . Web serwerleriň köpüsi, hersi belli bir funksiýalary ýerine ýetirýän dürli komponentlerden durýan çylşyrymly maşynlardyr. Mysal üçin:
Java-da web programmasy - 4

Baglaýjylar

- Girişde müşderileriň gelýän isleglerini kabul edýän Baglaýjylarymyz bar (ýagny birleşdirijiler). Tomkatda HTTP birleşdirijisi "Koýot" komponentini ulanyp amala aşyrylýar. Baglaýjylar müşderiden maglumatlary alýarlar we Tomcat motoryna geçirýärler. Servlet konteýner - Tomcat Motor, öz gezeginde serwet konteýni bolan "Katalina" komponentini ulanyp, müşderiden alnan haýyşy işleýär. Has giňişleýin maglumat üçin Tomcat resminamalaryna serediň: " Arhitektura syn ". Servlet API spesifikasiýasyny goldaýan beýleki web serwerleri bar. Mysal üçin, " Jetty " ýa-da " Undertow ". Olaryň arhitekturasy meňzeş, şonuň üçin bir hyzmat ediji konteýner bilen işlemek ýörelgesine düşünip, beýlekisi bilen işe geçip bilersiňiz.
Java-da web programmasy - 5

Web programmasy

Şeýlelik bilen, web programmasyny işletmek üçin Servlet API-ni goldaýan web serweri gerek (ýagny web serweri üçin Servlet API goldawyny amala aşyrýan giňeltme komponenti bar). Gowy. Her niçigem bolsa web programmasy näme? Servlet API spesifikasiýasynyň " 10 web programmasy " bölümine görä , web programmasy , web serwerinde soňky programmany düzýän hyzmatlar, HTML sahypalary, synplar we beýleki çeşmeler ýygyndysydyr. " 10.6 Web Programma Arhiw Faýly " bölümine görä , web programmasy Web ARchive-de (WAR giňeldilen arhiw) gaplanyp bilner. " Sözlük-219 " sahypasynda aýdylyşy ýaly :
Java-da web programmasy - 6
.Agny, bu web programmasydygyny görkezmek üçin JAR ýerine JAR edilýär. Indiki möhüm hakykat: WAR arhiwimizde belli bir katalog gurluşy bolmaly. Servlet API spesifikasiýasynda " 10.5 Katalog gurluşy " bölüminde . Bu bapda "WEB-INF" atly ýörite katalog bar diýilýär. Bu katalog, müşderä görünmeýän we gönüden-göni görkezilmeýänligi sebäpli, hyzmat ediş kody üçin elýeterlidir. Şeýle hem, WEB-INF katalogynda näme bolup biljekdigini aýdýar:
Java-da web programmasy - 7
Bu sanawdan tutuşlygyna ýerleşdirme beýan ediji diýilýän käbir web.xml faýly baradaky zady bilemzok we düşünemzok . Bu näme? " 14. Gurnama beýany " bölümi ýerleşdiriş beýanyna bagyşlanýar. Gysgaça aýdylanda, ýerleşdiriş beýany web serwerimizde web programmamyzy nädip ýerleşdirmelidigini (ýagny işletmegi) beýan edýän xml faýlydyr. Mysal üçin, ýerleşdiriş beýany, programmamyza girmek üçin haýsy URL-leriň ulanylmalydygyny, programmamyza degişli howpsuzlyk sazlamalaryny we ş.m. görkezilýär. " Göçürmäni gaýtadan işlemegiň 14.2 düzgüni " bölüminde , programmamyz düzülmän we işe başlamazdan ozal web.xml shema laýyklykda tassyklanjakdygy (ýagny web.xml mazmunynyň dogry ýazylandygy barlanar) diýilýär. shema). " 14.3 Deployment Descriptor " bölüminde diagrammanyň şu ýerde görkezilendigi görkezilýär: Faýlyň mazmunyna seretsek, görüp bileris: http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd
Java-da web programmasy - 8
XML faýllary üçin shema näme? Shemalar XML resminamasyny nädip dogry doldurmalydygyny görkezýär: haýsy elementleri ulanyp boljakdygyny, elementlerde haýsy maglumatlary kesgitläp boljakdygyny, elementleriň haýsy tertipde gitmelidigini, haýsy elementleriň zerurdygyny we ş.m. XML resminamasynyň shemasyny Java-daky interfeýs bilen deňeşdirip bilersiňiz, sebäbi Java-daky shema belli bir interfeýsi kanagatlandyrýan synplaryň (ýagny berlen interfeýsi durmuşa geçirýän) nädip ýazylmalydygyny hem kesgitleýär. Şeýlelik bilen, gizlin bilimler bilen ýaraglanýarys we ilkinji web programmamyzy döretmäge taýýar!
Java-da web programmasy - 9

Web programmasy döretmek

Awtomatiki gurluşyk ulgamlaryny ulanman, häzirki zaman Java programmasy bilen işlemegi göz öňüne getirmek kyn. Iň meşhur ulgamlaryň käbiri Maven we Gradle . Bu syn üçin Gradle ulanarys. Gradle gurmak resmi web sahypasynda beýan edilýär . Täze programma döretmek üçin Gradle-de gurlan bir plugin gerek: " Init Plugin-i guruň ". Java programmasyny döretmek üçin aşakdaky buýrugy işletmeli: gradle init --type java-application
Java-da web programmasy - 10
Taslama döredilenden soň, build.gradle faýlyny redaktirlemeli bolarys . Bu “Gurluş skripti” diýlip atlandyrylýar (has giňişleýin maglumat üçin “Gradle” resminamalaryna serediň: “ Gurluş skriptlerini ýazmak ”). Bu faýl taslamany nädip ýygnamalydygyny we Java taslamasy bilen işlemegiň beýleki taraplaryny beýan edýär. Plaginler bloky, häzirki Gradle taslamasy üçin haýsy " Gradle pluginleriniň " ulanylmalydygyny düşündirýär. Pluginler taslamamyzyň mümkinçiliklerini giňeldýärler. Mysal üçin, deslapky plugin " java ". Java goldawy gerek bolsa, bu plugin elmydama ulanylýar. Emma bize “ programma ” plugin gerek däl , sebäbi ... beýanynda "ýerine ýetirip bolýan JVM goýmasy" döretmek üçin ulanylýandygy aýdylýar. JVM programmalaryny işletmek. WAR arhiwi görnüşinde Web programmasy döretmeli. Gradle resminamalarynda WAR sözüni gözlesek, “ Uruş plaginini ” taparys. Şonuň üçin aşakdaky pluginleri görkezeris:
plugins {
    id 'java'
    id 'war'
}
Şeýle hem " Uruş plagininiň deslapky sazlamalarynda" web programmasynyň ähli mazmuny bolan bukjanyň "src / main / webapp" bolmalydygy, web.xml bolmaly şol bir WEB-INF katalogy bolmalydygy aýdylýar. ýerleşýär. Geliň, şeýle faýl döredeliň. Biraz soň doldurarys, sebäbi ... entek munuň üçin ýeterlik maglumat ýok. "Baglylyklar" blokunda taslamamyzyň garaşlylygyny görkezýäris, ýagny programmamyzyň işlemeýän kitaphanalary / çarçuwalary. Bu ýagdaýda, Servlet API bolmasa işläp bilmejekdigimizi aňladýan web programmasy ýazýarys:
dependencies {
    providedCompile 'javax.servlet:javax.servlet-api:3.1.0'
    testCompile 'junit:junit:4.12'
}
providedCompile, garaşlylygyň web programmasynyň WAR arhiwimize goşulmagynyň zerur däldigini aňladýar: diňe düzmek üçin zerur. Executederine ýetirilende bu garaşlylygy başga biri üpjün eder (ýagny web serweri). Dogrusy, haýsy garaşlylyk ammaryny ulanmak isleýändigimiz barada skript maglumatlary goýýarys - görkezilen ähli baglylyklar ondan göçüriler:
repositories {
    jcenter()
}
Gurluş skript faýlyndan galan zatlaryň hemmesini aýyrýarys. Indi src \ main \ java \ App.java synpyny redaktirläliň. Ondan bir servlet ýasalyň. " 2-nji BAP " Servlet API spesifikasiýasy, Servlet Interfeýsiniň HttpServlet-iň esasy ýerine ýetirilişiniň bardygyny , bu köp halatlarda ýeterlik bolmalydygyny we işläp düzüjileriň diňe miras almalydygyny aýdýar. " 2.1.1 HTTP ýörite haýyş bilen işlemegiň usullary " bölüminde gelýän haýyşlary gaýtadan işleýän esasy usullar görkezilýär. Şeýlelik bilen, “App.java” synpyny täzeden ýazalyň:
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();
 	}
}
Şeýlelik bilen, hemme zat taýyn ýaly. Galan zat, ýerleşdiriş beýanyny dogry ýazmak. Diagrammadan aşakdaky teksti web.xml-a göçüriň:
<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>
Şeýle hem, onda görkezilen shema barýan ýol: http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd Indi web.xml-iň Servlet API spesifikasiýasynda nähili bolmalydygyna bir mysal göreliň. Bu mysal " 14.5.1 Esasy mysal " bölüminde berilýär . Diagrammada görkezilenleri spesifikasiýada görkezilen mysal bilen birleşdireliň. Aşakdakylary alýarys:
<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>
Görşüňiz ýaly, öň kesgitlenen shema we shemaLocation ulanýardyk. Elementleriň beýany 14.5.1-njy bapdan mysaldan alyndy. Everythinghli zady dogry ýerine ýetiren bolsak, derejeli söweş meselesini ýalňyşsyz ýerine ýetireris:
Java-da web programmasy - 11
Java-da web programmasy - 12

Web programmasyny işe girizmek

Web programmasy nädip işe başlaýar? Ilki bilen has çylşyrymly wariant bilen iş salyşalyň. Öň Servlet API-ni goldaýan Apache Tomcat web serweriniň bardygyny aýdypdyk. Bu, ýygnan söweş arhiwimizi (olar "ýerleşdir" diýýärler) bu serwerde ýerleşdirip biljekdigimizi aňladýar. " Tomkaty göçürip al " sahypasynda "Ikitaraplaýyn paýlamalar" bölüminden poçta görnüşinde "Esasy" gowşuryş görnüşini göçürip alyň. Göçürilen arhiwi käbir kataloga açyň, mysal üçin C: \ apache-tomcat-9.0.14. Serweri açmazdan ozal, redaktirlemek üçin faýly açalyň conf\tomcat-users.xmlwe oňa aşakdaky setiri goşalyň: <user username="tomcat" password="tomcat" roles="tomcat,manager-gui,admin-gui"/> Indi buýruk setirinde bin katalogyna giriň we ýerine ýetiriň catalina.bat start. Düzgüne görä, serwer konsoly elýeterli bolar http://localhost:8080/manager. Giriş we parol, tomcat-users.xml-de görkezenlerimizdir. Tomcat-da web programmalaryny öz içine alýan "webapps" katalogy bar. Özümizi ýerleşdirmek islesek, söweş arhiwimizi şol ýerden göçürmeli. Öň derejeli söweş buýrugyny ýerine ýetirenimizde, \build\libs\katalogda söweş arhiwi döredildi. Göçürmeli zadymyz şu. Göçüreniňizden soň sahypany täzeläň http://localhost:8080/managerwe serediň:
Java-da web programmasy - 13
Gutaranymyzdan soň http://localhost:8080/javaweb/app, hyzmatymyza ýüz tutarys, sebäbi Mundan ozal programma hyzmatyna / programma haýyşyny “kartalaşdyrdyk” (ýagny kartalaşdyrdyk). Programmanyň işleýşini barlamagyň has çalt usuly bar. Gurnama ulgamy bu meselede bize ýene kömek edýär. “Gradle” taslamamyzyň gurluş skriptinde, pluginler bölümine täze “ Grettyid "org.gretty" version "2.3.1" ” goşup bileris: Indi bolsa programmamyzy işletmek üçin ýuwaş-ýuwaşdan bir meseläni ýerine ýetirip bileris:gradle appRun
Java-da web programmasy - 14
Jikme-jiklikler üçin " Gretty plugin goşuň we programmany işlediň " -e serediň.
Java-da web programmasy - 15

Bahar we Servlet API

Hyzmatkärler hemme zadyň esasyny düzýär. Hatda häzirki meşhur Bahar çarçuwasy hem Servlet API-den goşmaça zat däl. Ilki bilen, “Bahar çarçuwasy” taslamamyz üçin täze garaşlylykdyr. Şol sebäpden, garaşlylyk blokundaky gurluş skriptine goşalyň: “ compile 'org.springframework:spring-webmvc:5.1.3.RELEASE' Bahar çarçuwasy” resminamalarynda “ 1.1. DispatcherServlet ” bölümi bar. “Bahar çarçuwasynyň” “öňdäki gözegçilik” nagşynyň üstünde gurlandygy aýdylýar - bu “ DispatcherServlet ” atly merkezi hyzmat ediş wagty. Requhli islegler bu hyzmat gullugyna gelýär we zerur komponentlere jaňlary iberýär. Görýäňizmi, hatda bärde hyzmatkärlerem bar. Gurnama beýanyna diňleýji goşmaly:
<listener>
	&ltlistener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
Bu serwet kontekst wakasyny diňleýji. Servagny, “Servlet” konteksti başlanda, Bahar konteksti (WebApplicationContext) hem başlaýar. Servlet konteksti näme? Servle API spesifikasiýasynda " 4-nji BAP Servlet konteksti " bölüminde düşündirilýär . Servlet konteksti, hyzmatçylaryň işleýän web programmasynyň "görnüşi". Her web programmasynyň öz Servlet konteksti bar. Ondan soň, “Bahar çarçuwasy” -ny işletmek üçin kontekst-parametri - hyzmat ediş kontekstiniň başlangyç parametrini görkezmeli.
<context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>/WEB-INF/app-context.xml</param-value>
</context-param>
DispatcherServlet kesgitlemesi bolsa konfigurasiýany tamamlaýar :
<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>
Indi bolsa diňe “ConfigLocation” kontekstinde görkezilen faýly doldurmaly. Muny nädip etmeli "1.3.1. Deklarasiýa" bölüminde "Bahar çarçuwasy" resminamalarynda düşündirilýär:
<?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>
Bu ýerde diňe haýsy bukjany skanirlemelidigini görkezmek bilen çäklenmän, düşündirişli, ýagny Baharyň nähili işlejekdigi baradaky belliklere gözegçilik etmek isleýäris. Galan zat, ru.javarush.javaweb paketini döretmek we oňa Bahar gözegçilik ediji synpyny ýerleşdirmek:
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.";
    }
}
Indi gradle appRun-y işledip, adrese baranymyzda, http://127.0.0.1:8080/javaweb/appşol bir “Salam World” alarys. Görşüňiz ýaly, Bahar çarçuwasy Servlet API bilen ýakyndan baglanyşyklydyr we üstünde işlemek üçin ulanýar.
Java-da web programmasy - 16

Annotasiýa

Görşümiz ýaly, düşündirişler amatly. Biz beýle pikir eden ýeke-täk däldik. Şol sebäpden, 3.0 wersiýasyndan başlap, “Servlet API” spesifikasiýasynda “ 8-nji BAP Annotasiýa we dykyzlyk ” bölümi peýda boldy, bu hyzmat ediş konteýnerleriniň ýerleşdiriş beýanynda düşündirişler arkaly ozal görkezilen zady kesgitlemek ukybyny goldamalydygyny görkezýär. Şeýlelik bilen, web.xml taslamadan düýbünden aýrylyp bilner we servlet synpynyň ýokarsynda @WebServlet düşündirişini görkezip , serwletiň haýsy ýoluny karta etmelidigini görkezip bilersiňiz. Bu ýerde hemme zat düşnükli ýaly. Springöne bahary has çylşyrymly sazlamalary talap edýän taslama bilen baglanyşdyrsak näme? Bu ýerde hemme zat birneme çylşyrymly. Ilki bilen, Bahar resminamalarynda “Bahary” web.xml-den düzmek üçin “WebApplicationInitializer” -i durmuşa geçirjek öz synpyňyzy ulanmaly diýilýär. Has giňişleýin maglumat üçin " 1.1. DispatcherServlet " bölümine serediň . Görnüşi ýaly, bu Bahar synpy. Onda bu ýerde Servlet API nähili ulanylýar? Aslynda, ServletContainerInitializer Servlet API 3.0-e goşuldy . Java-da ( SPI diýilýär) ýörite mehanizm ulanyp , Bahar diýilýän servlet konteýner başlangyjyny kesgitleýär SpringServletContainerInitializer. Öz gezeginde, eýýäm WebApplicationInitializer-iň durmuşa geçirilmegini gözleýär we zerur usullary çagyrýar we zerur sazlamalary ýerine ýetirýär. Has giňişleýin maglumat üçin " Serwet konteýneriniň WebApplicationInitializer ýerine ýetirişlerini nädip tapýandygyny " görüň. Aboveokardaky sazlamalar şeýle edilip bilner:
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);
    }
}
Indi, " Java esasly konfigurasiýa " ulanyp, haýsy bukjany skanirlemelidigini we bellikleri işjeňleşdirjekdigini görkezeris:
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” -iň özi bolsa, gözden geçirilende konfigurasiýa özüni tapmaz, diňe dolandyryjylary gözlär ýaly göçürildi .
Java-da web programmasy - 17

Jemleme

Bu syn, web programmalarynyň Java-da işleýşine belli bir derejede ýagtylyk berdi diýip umyt edýärin. Bu buz buzunyň uçy, ýöne esaslaryna düşünmän, bu binýadyň tehnologiýalarynyň nähili işleýändigine düşünmek kyn. Servlet API islendik Java web programmasynyň merkezi bölegidir we beýleki çarçuwalaryň oňa näderejede laýykdygyny gördük. Dowam etmek üçin aşakdaky materiallary görüp bilersiňiz: # Wiaçeslaw
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION