JavaRush /Java Blog /Random-TK /Maven, Bahar, MySQL, Gibernate we ilkinji CRUD programmas...
Макс
Dereje

Maven, Bahar, MySQL, Gibernate we ilkinji CRUD programmasy bilen tanyşlyk (1-nji bölüm)

Toparda çap edildi
Günüňiz haýyrly bolsun! Bu makalada ýönekeý CRUD programmasyny döretmek prosesinde Maven, Bahar, Gibernate, MySQL we Tomcat ýaly zatlar bilen ilkinji duşuşygymy paýlaşmak isleýärin. Bu 4-nji bölümiň birinji bölümi. Makala, esasan, bu ýerde eýýäm 30-40 derejäni tamamlan, ýöne entek arassa Java-dan geçmedik we açyk dünýä girip başlaýan (ýa-da başlajak) adamlar üçin niýetlenendir. bu tehnologiýalaryň, çarçuwalaryň we beýleki nätanyş sözleriň hemmesi. Maven, Bahar, MySQL, Gibernate we ilkinji CRUD programmasy (1-nji bölüm) - 1

Mazmuny:

Giriş

Ulanylan dürli mysallary öwrenip, meniň üçin täze bolan tehnologiýalar we çarçuwalar bilen tanşyp başladym, sebäbi adatça doly hukukly programmanyň mysaly bilen hereketde görenimde iň gowy zada düşünýärin. Adatça, şular ýaly mysallar CRUD programmalarydyr ( C reate, Read , U pdate, D elete), Internet dürli çylşyrymlylyk mysallaryndan doly. Mesele, adatça, ol ýerde nädip, näme we näme üçin edilendigi, beýle we beýle garaşlylygyň näme üçin goşulandygy, beýle synpyň näme üçin zerurdygyny we ş.m. jikme-jik düşündirip bilmezligidir. Köplenç, gutarnykly POM faýly, sapaklaryň soňky wersiýalary bilen doly gutarnykly programmany alýarlar we tejribeli adama düşnükli ýaly görünýän ownuk zatlara ünsi jemlemän, hersiniň üstünden geçýärler. Şeýle mysallaryň köpüsine göz aýladym we adatça hemme zadyň nähili işleýändigi düşnükli, ýöne muňa nädip gelendigi düýbünden düşnükli däl. Şol sebäpden, şeýle mysalyň tejribeli işläp düzüjiniň wezipesinden däl-de, Bahar, Gibernate we beýleki zatlar bilen iş salyşmadyk başlangyç wezipesinden peýdaly boljakdygyna karar berdim.
Знакомство с Maven, Spring, MySQL, Hibernate и первое CRUD приложение (часть 1) - 2
Iň ýönekeý Salam Dünýä derejesinde bir zat bilen başlap, CRUD programmasyny döretmegiň ähli ýoluny mümkin boldugyça jikme-jik düşündirmäge synanyşaryn. Ilki bilen muny özüm üçin edýärin, sebäbi bir zady suratlandyrmaga, aýtmaga, düşündirjek bolanyňda, kelläňe has gowy siňýär we tertiplenýär. Thisöne bu kimdir biri üçin peýdaly bolsa we bir zady anyklamaga kömek etse, men gaty begenerin. Bu mysalda, Maven , Tomcat , Bahar , Gibernate we MySQL ulanyp, ýönekeý CRUD programmasyny döretmäge synanyşalyň . Maven , MySQL gurmak, ideýanyň Ultimate wersiýasyny ulanmak we ş.m. ýaly deslapky ädimler. Jikme-jik beýan etmegiň zerurlygy ýok, bu meselede hiç hili problema bolmaly däl diýip pikir edýärin. Bu mysalda, konfigurasiýa xml ulanman Java synplaryny (JavaConfig diýilýär) ulanyp düzüljekdigini bellemelidiris.

Taslama döretmek

Şeýlelik bilen, täze gelenim üçin, düşnüksiz arhetipleri ulanmarys. Bahar başlangyjy henizem gaty gorkunç bolup görünýär. Şonuň üçin iň ýönekeý Maven taslamasyny dörederis. Domen adym ýok, şonuň üçin toparlaýyn görnüşde diňe ýazaryn testgroup, artifaktidde bolsa adyny ýazaryn, mysal üçin filmography(bu filmleriň sanawy bolar). Taslama döredýäris we Enable auto-importideýa teklip edeninde saýlaýarys. Munuň netijesinde her gezek POM faýlyna haýsydyr bir üýtgeşme girizenimizde (Taslamanyň obýekt modeli, bu faýl Maven taslamasynyň ähli gurluşyny suratlandyrýar), hemme zat derrew taslama awtomatiki usulda ulanylar. Kitaphanalar ýerli ammarymyzdan eýýäm bar bolsa ýa-da öň işlemedik käbir täze garaşlylyklarymyzy ulansak, Maven olary merkezi ammardan internet arkaly göçürip alar. Maveniň çeşmeleri we resminamalary göçürip almak funksiýasy bar (Çeşmeleri we / ýa-da resminamalary göçürip almak). Şeýle hem bu örän amatly, haýsydyr bir synp ýa-da usul bilen bir zat düşnüksiz bolsa, deslapky koda baryp, içindäki zatlaryň nähili işleýändigini görüp bilersiňiz. Geliň, birnäçe jikme-jiklik goşalyň. Bu web programmasy bolar we Tomcat ulanarys . Tomkata bir programma ýerleşdirmek üçin ony söweş arhiwi görnüşinde geçirmeli (Web Programma Resursy, web programmalary üçin ýörite format). Munuň üçin programma söweş arhiwine düzüler ýaly POM faýlyna aşakdaky setiri goşuň:
<packaging>war</packaging>
Şeýle hem, web çeşmeleri üçin ýörite katalog gerek bolar, biziň ýagdaýymyzda jsp sahypalary we käbir web çeşmeleri bolar . Geliň, bir mainkatalog döredeliň webapp. Edil şonuň ýaly atlandyrylmaly we edil şol mainbir ýerde ýerleşmeli java, resourcessebäbi bu adaty Maven katalog gurluşy. Bukjany gurnanymyzdan warwe munuň web taslamasydygyny kesgitlänimizden soň, katalog webappawtomatiki usulda Web programma çeşmesi hökmünde bellik ediler (üstünde gök nokat bolar) we web bilen baglanyşykly hemme zat şu bukjada gözlener. Bir pursat. Düzgüne görä, Maven 1.5 wersiýa dilini ulanýar, ýöne men, mysal üçin, 1.8 - Java 8 wersiýasyny ulanasym gelýär (10 ýa-da 11 alyp bilersiňiz, ýöne şonda-da ol ýerden haýsydyr bir aýratynlygy ulanmak meýilnamasy ýok, şonuň üçin 8 bolsun ). Bu gaty ýönekeý çözülip bilner, Google-da “Maven java 8” ýaly bir zat ýazýarys we POM faýlyna nämäniň goşulmalydygyny görýäris, şonuň üçin Maven sapaklarymyzy zerur wersiýa üçin düzýär. Netijede, aşakdakylar bar: Знакомство с Maven, Spring, MySQL, Hibernate и первое CRUD приложение (часть 1) - 3

Bahar MVC birikmesi

Bir ýerden başlamaly. Meýilnama görä, maglumat bazasyny birikdireris we Gibernate ulanarys, ýöne häzirlikçe bularyň hemmesi birneme gorkunç bolup görünýär. Ilki bilen has ýönekeý bir zat etmeli. Bahar MVC, bu eýýäm has gowudyr, MVC nagşy bilen köpden bäri tanyş, kursyň uly meseleleriniň ýarysynda ulanyldy. Bu ýerden tans edip başlarys. Bahar MVC bilen web programmasy döretmek üçin bize Servlet-API, ýagny zerur. kömegi bilen haýyş-jogap täsiri amala aşyrylar. Muny birikdirmäge synanyşalyň. Google-a girýäris, Maven ammarynda zerur baglylyklary gözleýäris we olara goşýarys pom.xml. Знакомство с Maven, Spring, MySQL, Hibernate и первое CRUD приложение (часть 1) - 4Daşarky kitaphanalar bölüminde diňe bir bahar-webmvc-iň däl , eýsem başga-da bir topar zadyň ýüklenendigini görüp bilersiňiz. Bular. goşmaça baharyň özenine , kontekstine , noýba we ş.m. baglylyklary goşmaly däldiris. bize gerek zat, bahar-webmvc bilen bilelikde çekildi .

Kiçijik boýun gaçyrmaly. Adatça ulanylan her bir kitaphana üçin garaşlylygy goşmak maslahat berilýär, hatda eýýäm goşulanlar bilen birikdirilen hem bolsa, sebäbi bu käbir kynçylyklardan we ýalňyşlyklardan gaça durup biler.

Simpleönekeý mysal. Käbir API ulanýan garaşlylygy goşduk diýeliň we şol bir wagtyň özünde bu API üçin haýsydyr bir durmuşa geçiriş çeker. Soň bolsa şol bir API ulanýan we munuň üçin durmuşa geçirilişiniň käbirini çekýän başga bir garaşlylygy goşduk, ýöne bu gezek başgaça. Şeýlelik bilen, şol bir API-den 2 dürli durmuşa geçirişimiz bolar. Eger-de özümiz bu API-iň käbir usullaryny bir ýerde ulanmak islesek, bir mesele ýüze çykar, sebäbi ulgam haýsy durmuşa geçirilişini bilmez, tötänleýin saýlar, belki garaşyşymyz ýaly bolmaz. Eger ýerine ýetirişleriň birine baglylygy aç-açan kesgitlän bolsaňyz, oňa ileri tutular.

Şeýle-de bolsa, bu beýle berk maslahat däl, esasan dürli kompaniýalardan köp dürli kitaphanalaryň ulanylýan uly taslamalaryna degişlidir. POM faýlyny gaty köp ýüklemezlik üçin bu ýerde etmeris, hiç hili problema garaşylmaýar. Emma, ​​muňa garamazdan, muny ýatda saklamaly.

Moreene bir bellik. providedBaglamak nämäni aňladýar javax.servlet-api? Ulanyş çäkleri garaşlylygyň çägidir, providedbu garaşlylygy programmany düzmek we synagdan geçirmek tapgyrynda elýeterli boljakdygyny aňladýar, ýöne arhiwlenmez. Hakykat, programmany ýerleşdirmek üçin “Tomcat” hyzmat ediş konteýnerini ulanarys we içinde eýýäm şeýle kitaphanalar bar, şonuň üçin olary şol ýere geçirmegiň we arhiwi zerur däl ýük bilen ýüklemegiň zerurlygy ýok. Öňe seretseň, şol bir sebäbe görä, adaty usul bolmazdan ederis main, sebäbi ol Tomkatyň içinde eýýäm bar.

Sahypalary we dolandyryjy döretmek

Geliň indi ýönekeý bir zat bişirmäge synanyşalyň. Ilki bilen, mysal üçin pikirlerimiziň saklanjak webappgoşmaça bukjany döredeliň. pagesjsp sahypalary we iki sahypa dörediň. Geljekde filmleriň sanawy görkeziljek sahypa gerek bolar, meselem films.jsp, redaktirlemek üçin aýratyn sahypa ýasap bileris editPage.jsp. Olary häzirlikçe çynlakaý bir zat bilen doldurmarys, diňe synag üçin, bir sahypada beýlekisine baglanyşyk ederis. Indi bize haýyşlary gaýtadan işleýän synp gerek. gözegçilik ediji. Geliň, täze paket goşalyň controllerwe onda synp döredeliň FilmController(umuman, hemme zady dürli paketlere gaplamak hökman däl, bu programma gaty kiçi we ýönekeý bolar, ýöne adaty bir taslamada gözegçilik edijiler, konfigurasiýa synplary, modeller köp bolup biler we ş.m., şonuň üçin hatda kiçi taslamalardan başlap, hemme zady tertipsiz we tertipli ýerine ýetirmäge öwrenişmek has gowudyr). Bu synpda haýyşlara jogap hökmünde pikirlerimizi yzyna gaýtarjak usullary dörederis.
package testgroup.filmography.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class FilmController {

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public ModelAndView allFilms() {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("films");
        return modelAndView;
    }

    @RequestMapping(value = "/edit", method = RequestMethod.GET)
    public ModelAndView editPage() {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("editPage");
        return modelAndView;
    }
}
Näme? Bahar MVC diýilýän bir zat bar DispatcherServlet. Bu esasy gözegçä meňzeýär, gelýän ähli haýyşlar ondan geçýär we soňra belli bir gözegçä geçirilýär. Bellik @Controllerdiňe Bahar MVC-e bu synpyň gözegçilik ediji (umuman logiki) diýýändigini, dispetçeriň @RequestMappingdegişli usuly çagyrmak üçin bellikleri barlajakdygyny aýdýar. Bellik, @RequestMappingmüşderide (brauzerde) elýeterli boljak gözegçilik ediji usullaryň salgylaryny kesgitlemäge mümkinçilik berýär. Şeýle hem, ähli usullaryň kök salgysyny bellemek üçin kontrol synpyna hem ulanylyp bilner. Usulyň allFilms()parametri value"" "düzüldi , şonuň üçin brauzere http: // host: port // kombinasiýasy girizilende derrew çagyrylar (ýagny, adaty ýagdaýda http: // localhost: 8080 / ýa-da http) : //127.0 .0.1: 8080 / ). Parametr haýsy haýyşyň goldanýandygyny kesgitleýär (GET, POST, PUT we ş.m.). Bu ýerde diňe maglumatlary alýarys, GET ulanylýar. Soňrak, goşmak we redaktirlemegiň usullary peýda bolanda, eýýäm POST haýyşlary bolar. (Theeri gelende aýtsak, usuly görkezýän düşündirişiň ýerine , bellikleri we ş.m. deň derejede ulanyp bilersiňiz )). Usullarymyzda bir obýekt döredýäris we yzyna gaýtarylmaly görnüşiň adyny kesgitleýäris. method@RequestMapping@GetMapping@PostMapping@GetMapping@RequestMapping(method = RequestMethod.GETModelAndView

Sazlama

Sazlamany düzmäge geçeliň. Geliň, bukjada configsynp döredeliň WebConfig. Onda görnüşdäki obýekti yzyna gaýtaryp berýän diňe bir usul bolar ViewResolver, bu at bilen wekilçilik tapmak üçin zerur interfeýsdir.
package testgroup.filmography.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "testgroup.filmography")
public class WebConfig {

    @Bean
    ViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/pages/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }
}
@ConfigurationBaharyň bu synpyň konfigurasiýa synpydygyny we beankomponentleriň kesgitlemelerini we garaşlylygyny öz içine alýandygyny aýdýar. Fasulye Bahar tarapyndan dolandyrylýan zatlar. Annotasiýa noýba kesgitlemek üçin ulanylýar @Bean. @EnableWebMvcbahar MVC konfigurasiýasyny import etmäge mümkinçilik berýär WebMvcConfigurationSupport. Mundan başga-da, WebMvcConfigurerbir topar usuly bolan interfeýsi durmuşa geçirip bilersiňiz we hemme zady öz islegiňiz boýunça düzüp bilersiňiz, ýöne entek girmeli däl, adaty sazlamalar ýeterlikdir. @ComponentScandolandyrmaly komponentleri nireden gözlemelidigini Bahara aýdýar. düşündiriş bilen bellenen synplar ýa @Component-da @Controller,, @Repository. @ServiceBu düşündirişler synp noýbasyny awtomatiki kesgitleýär. Usulda, viewResolver()onuň ýerine ýetirilişini döredýäris we wekilçilikleri nireden gözlemelidigini kesgitleýäris webapp. Şonuň üçin gözegçilik ediji usulynda "" films"adyny goýanymyzda görnüş" "" tapylar /pages/films.jsp, şonuň üçin konfigurasiýa synpymyz bar, ýöne häzirlikçe bu diňe bir aýratyn synp, bu biziň amalymyza hiç hili täsir etmeýär. . Bu konfigurasiýany Bahar kontekstinde hasaba almaly. Munuň üçin synp gerek AbstractAnnotationConfigDispatcherServletInitializer. Bukjada, “AppInitializer”config diýýäris we onuň usullaryny durmuşa geçirýäris.
package testgroup.filmography.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[0];
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{WebConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}
Iň soňky usul salgylary hasaba alýar we konfigurasiýa synplaryny hasaba almak üçin ýene 2 usul bar. Web konfigurasiýalary, ViewResolverwe şuňa meňzeşler kesgitlenen ýerde ýerleşdirilýär getServletConfigClasses(). Bularyň hemmesini resminamalarda we dürli gollanmalarda okamak has gowudyr, ýöne biziň ýagdaýymyzda entek öwrenmek zerurlygy ýok, biziňkiler, ikisinde-de kesgitlenip WebConfigbilner RootClasses, hatda ikisini hem kesgitläp bilersiňiz, ol henizem işlär . Ýene bir zat. Kodlamakda kynçylyklar bolup biler, haçan-da formadan rus harplary bilen bahalar iberilende, netijeler ýazylar. Bu meseläni çözmek üçin haýyşlary öňünden işleýän süzgüç goşarys. “AppInitializer” synpyna girýäris we islenýän kodlamagy görkezýän usulymyzy ýok edýäris getServletFilters, elbetde, sahypalardaky we maglumatlar bazasyndaky ýaly beýleki ýerlerdäki ýaly bolmaly:
protected Filter[] getServletFilters() {
        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
        characterEncodingFilter.setEncoding("UTF-8");
        characterEncodingFilter.setForceEncoding(true);
        return new Filter[] {characterEncodingFilter};
    }
Dogrusy, hemme zat gurnalan ýaly, ony işledip, nämäniň bolup geçýändigini görüp bilersiňiz. Işletmek -> Işletmek -> Sazlamalary redaktirlemek -> Täze konfigurasiýa goşmak -> Tomcat serweri -> Nexterli indiki, ýerleşdirmek üçin artefakt saýlamaly. Pikiriň özi duýduryş berer : ýerleşdirmek üçin bellik edilen eserler ýok . Düzediş düwmesine basyň we ...: uruş partlady . Ora-da Deployment -> add -> Artifact -> ... gidip bilersiňiz : uruş ýaryldy . Şeýle hem, “Deployment”Знакомство с Maven, Spring, MySQL, Hibernate и первое CRUD приложение (часть 1) - 5 -e girip , “Applecation” kontekst meýdançasyny (bu programma brauzerde elýeterli boljak url salgysynyň bir bölegi bolar) “" ” bellemeli . Soňra programmamyz derrew http: // localhost: 8080 / -de elýeterli bolar (ýöne siz ol ýerde bir zady görkezip bilersiňiz, mysal üçin " ", soň bolsa muny diňe ähli salgylara goşmaly bolarsyňyz, mysal üçin ýok "http: // localhost: 8080 / edit" , ýöne "http: // localhost: 8080 / filmografiýa / redaktirlemek" bolar . Işlet düwmesine basyň we başlaýança garaşyň. Ine, alan zadym: Hemme zat gowy ýaly bolup görünýär, ýöne bir gowak bar. Hakykat, sahypalarymyza indi köpçülige açyk we salgy setirine ýol ýazmak arkaly göni girip bolýar. Http: // localhost: 8080 / pages / films.jsp girýäris we indi sahypamyzy gözegçiniň habary bolmazdan aldyk. Näme-de bolsa bu gaty dogry däl, şonuň üçin ýörite katalog dörederis . Içindäki zatlar halkdan gizlener we diňe gözegçilik ediji arkaly girip bolar. Katalogy öz pikirlerimiz ( ) bilen ýerleşdirýäris we şoňa görä prefiksine goşýarys: /Знакомство с Maven, Spring, MySQL, Hibernate и первое CRUD приложение (часть 1) - 6/filmographyЗнакомство с Maven, Spring, MySQL, Hibernate и первое CRUD приложение (часть 1) - 7webappWEB-INFpagesWEB-INFViewResolver
viewResolver.setPrefix("/WEB-INF/pages/");
Indi sahypamyzy http: // localhost: 8080- den alýarys , ýöne göni http: // localhost: 8080 / WEB-INF / pages / films.jsp-a synanyşsak , 404 ýalňyşlyk alarys. Gowy, bizde bar iň ýönekeý web-ýüz tutma, Olaryň aýdyşy ýaly Salam Dünýä. Taslamanyň gurluşy häzirki wagtda şeýle:
Знакомство с Maven, Spring, MySQL, Hibernate и первое CRUD приложение (часть 1) - 8

Model

Bizde eýýäm görüşler we gözegçilik ediji bar, ýöne MVC-de 3-nji harp bar, şonuň üçin suraty tamamlamak üçin bir model hem goşarys. Bukjada, mysal üçin, aşakdaky meýdanlar bilen modelsynp döredeliň : , (ady), (çykan ýyly), (reanr) we (meselem, bu filmi eýýäm gördüňizmi ýa-da görmediňiz). Filmint idString titleint yearString genreboolean watched
package testgroup.filmography.model;

public class Film {
    private int id;
    private String title;
    private int year;
    private String genre;
    private boolean watched;
// + Getters and setters
}
Üýtgeşik zat ýok, diňe adaty synp, hususy meýdanlar, getterler we sazlaýjylar. Şeýle synplaryň obýektlerine (Plain Old Java Object) hem diýilýär POJO, ýagny "ýönekeý java obýekti". Indi şeýle obýekti döretmäge we sahypada görkezmäge synanyşalyň. Häzirlikçe, ony nädip döredip boljakdygy barada kän alada etmeris. Synap görmek üçin, samsyklyk bilen gönüden-göni kontrolda döredeliň, mysal üçin:
public class FilmController {
    private static Film film;

    static {
        film = new Film();
        film.setTitle("Inception");
        film.setYear(2010);
        film.setGenre("sci-fi");
        film.setWatched(true);
    }
ModelAndViewUsuly ulanyp, bu obýekti bize goşuň addObject:
@RequestMapping(method = RequestMethod.GET)
    public ModelAndView allFilms() {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("films");
        modelAndView.addObject("film", film);
        return modelAndView;
    }
Indi bu obýekti sahypamyzda görkezip bileris. “Salam World” -yň ýerine films.jspýazarys ${film}we atribut adyna gabat gelýän obýekt filmşu ýerde çalşyrylar. Ony işletmäge we nämäniň bolandygyny görmäge synanyşalyň (obýektiň anyk çykmagy üçin synp Filmtäzeden kesgitlenildi toString()):
Знакомство с Maven, Spring, MySQL, Hibernate и первое CRUD приложение (часть 1) - 9

Model-Görkeziji

Bu etapda, eýýäm doly bahaly MVC programmasy bar ýaly. Dowam etmezden ozal hemme zada göz aýlap, hemmesiniň nähili işleýändigini anyklamak gowy bolardy. Internetde bu hakda köp suratlary we diagrammalary tapyp bilersiňiz, men muny haladym:
Знакомство с Maven, Spring, MySQL, Hibernate и первое CRUD приложение (часть 1) - 10
Brauzer setirinde haýyş ýazanymyzda, ol kabul edilýär Dispatcher Servlet, soň bolsa bu haýyşy ulanmak üçin amatly gözegçi tapýar HandlerMapping(bu kontrolleýeri saýlamak üçin interfeýs, bar bolan dolandyryjylaryň haýsysynyň şeýle salgyny kabul edýän usulynyň bardygyny barlaýar) , amatly usuly çagyrýar we Controllergörnüş barada maglumat berýär, soň dispetçer islenýän görnüşi ViewResolver'a' ulanyp tapýar, şondan soň model maglumatlary bu görnüşe geçirilýär we sahypamyzy çykyş hökmünde alýarys. Şuňa meňzeş bir zat. Dowam etmek üçin ... Maven, Bahar, MySQL, Gibernate we ilkinji CRUD programmasy (1-nji bölüm) Maven, Bahar, MySQL, Gibernate we ilkinji CRUD programmasy bilen tanyşdyrmak (2-nji bölüm) Maven, Bahar, MySQL, Gibernate we the ilkinji CRUD programmasy (3-nji bölüm) Maven, Bahar, MySQL, Gibernate we ilkinji CRUD programmasy (4-nji bölüm)
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION