JavaRush /Блоги Java /Random-TG /Эҷоди як лоиҳаи оддии веб дар IntelliJ Idea Enterprise. Қ...
Стас Пасинков
Сатҳи
Киев

Эҷоди як лоиҳаи оддии веб дар IntelliJ Idea Enterprise. Қадам ба қадам, бо тасвирҳо

Дар гурӯҳ нашр шудааст
Сатҳи донише, ки барои фаҳмидани мақола зарур аст: шумо аллакай кам ё камтар Java Core-ро фаҳмидаед ва мехоҳед ба технологияҳои JavaEE ва барномасозии веб назар кунед. Агар шумо ҳоло ҷустуҷӯи Java Collections-ро, ки мавзӯъҳои наздики мақоларо дар бар мегирад, меомӯзед, ин хеле маъно дорад. Эҷоди як лоиҳаи оддии веб дар IntelliJ Idea Enterprise.  Қадам ба қадам, бо тасвирҳо - 1Ҳоло ман IntelliJ IDEA Enterprise Edition-ро истифода мебарам (ин versionи пешрафтаи пулакии IDE аст, одатан дар рушди касбӣ истифода мешавад - ёддошти муҳаррир ). Кор бо лоиҳаҳои веб назар ба нашри ройгони Community хеле осонтар аст. Ҳамин тавр, дар Enterprise Edition, аслан бо як клики муш, лоиҳа ҷамъ карда мешавад, ба контейнери сервлет рехта мешавад, server оғоз мешавад ва ҳатто дар браузер саҳифа бо лоиҳаи иҷрошаванда кушода мешавад. Дар versionи ройгони идея, қисми зиёди ин бояд мустақилона, ба ибораи дигар, "дастӣ" анҷом дода шавад. Ман Apache Maven-ро барои сохтани лоиҳа ва идоракунии давраи зиндагии он истифода мекунам. Дар ин кор ман танҳо як қисми ками қобorятҳои онро истифода кардам (идоракунии баста/вобастагӣ). Ман versionи Apache Tomcat 9.0.0.M4-ро ҳамчун контейнери сервлет/serverи барнома интихоб кардам. Ман медонам, ки аллакай versionҳои навтар ҳастанд, аммо ин ҳамонест, ки ман насб кардам.

Биёед оғоз кунем

Аввалан, биёед IntelliJ IDEA -ро кушоем ва лоиҳаи холии Maven эҷод кунем.
Эҷоди як лоиҳаи оддии веб дар IntelliJ Idea Enterprise.  Қадам ба қадам, бо тасвирҳо - 2
Дар ин ҷо дар тарафи чап мо Maven-ро интихоб мекунем, санҷед, ки JDK барои лоиҳа дар боло нишон дода шудааст. Агар он вуҷуд надошта бошад, аз рӯйхат онеро, ки ба шумо лозим аст, интихоб кунед ё Нав...-ро пахш кунед ва мустақиман аз компютери худ интихоб кунед. Дар мобайни тиреза ман аниматсияи боркунии рӯйхати архетипҳоро дорам. Мо ба онҳо эҳтиёҷ надорем, бинобар ин, бе интизории зеркашӣ, озодона пахш кунед Баъдӣ дар поёни равзана.
Эҷоди як лоиҳаи оддии веб дар IntelliJ Idea Enterprise.  Қадам ба қадам, бо тасвирҳо - 3
Дар ин равзана шумо бояд GroupId ва ArtifactId -ро муайян кунед . GroupId ба идентификатори ягонаи ширкате, ки лоиҳаро истеҳсол мекунад, ишора мекунад. Истифодаи номи домени ширкат маъмул аст, аммо бо тартиби баръакс. На ба маънои оина, балки агар, масалан, номи домени ширкат maven.apache.org бошад , GroupId он org.apache.maven хоҳад буд . Яъне аввал домени дараҷаи аввалро менависем, онро бо нуқта ҷудо мекунем, номи домени дараҷаи дуюмро менависем ва ғайра. Ин усули аз ҷониби умум қабулшуда аст. Дар ҳолате, ки шумо лоиҳаро мустақилона "буридаед", на ҳамчун як ширкат, номи домени шахсии худро дар ин ҷо нависед (инчунин бо тартиби баръакс!). Агар шумо онро дошта бошед, албатта :). Агар не, хафа нашавед. Дар асл, шумо метавонед дар ин ҷо чизе нависед .
Барои ширкате бо номи домени vasya.pupkin.org, GroupId org.pupkin.vasya хоҳад буд. Чунин равиш ба номҳо барои ҷудо кардани лоиҳаҳо бо як ном, вале аз ҷониби ширкатҳои гуногун баровардашуда зарур аст.
Дар ин мисол, ман номи домени сохтаи fatfaggy.info.javarush.ru -ро истифода хоҳам кард . Мувофиқи он, ман ru.javarush.info.fatfaggy -ро дар майдони GroupId дохил мекунам . ArtefactId танҳо номи лоиҳаи мост. Шумо метавонед ҳарфҳо ва баъзе аломатҳоро (масалан, дефис) барои ҷудо кардани калимаҳо истифода баред. "Артефакт"-и мо маҳз ҳамон тавре номида мешавад, ки мо дар ин ҷо менависем. Дар ин мисол, ман лоиҳаи ман-супер-ро менависам . Мо ҳоло ба майдони version даст нарасонем, мо онро тавре мегузорем.
Эҷоди як лоиҳаи оддии веб дар IntelliJ Idea Enterprise.  Қадам ба қадам, бо тасвирҳо - 4
Хуб, равзанаи стандартии IDEA ҳангоми сохтани лоиҳаи нав. Биёед онро мувофиқи анъанаи ман-супер-лоиҳа бигӯем .
Эҷоди як лоиҳаи оддии веб дар IntelliJ Idea Enterprise.  Қадам ба қадам, бо тасвирҳо - 5
Лоиҳа сохта шудааст!
Файли pom.xml фавран дар пеши назари мо кушода шуд. Ин файл бо танзимоти Maven аст. Агар мо хоҳем, ки ба Maven "гӯям", ки чӣ гуна ва чӣ тавр бояд кард ё аз куҷо чизе ба даст орем, мо ҳамаи инро дар ин файли pom.xml тасвир мекунем. Он дар решаи лоиҳа ҷойгир аст.
Мо мебинем, ки он ҳоло маҳз маълумотеро дар бар мегирад, ки мо ҳангоми сохтани лоиҳаи Maven ворид кардаем: groupId , artifactId ва version (мо ба охирин даст нарасонидем).

Сохтори лоиҳаи мо

Ин лоиҳаи Maven сохтори муайян дорад.
Эҷоди як лоиҳаи оддии веб дар IntelliJ Idea Enterprise.  Қадам ба қадам, бо тасвирҳо - 6
Тавре ки мо мебинем, дар асл:
  • директорияи .idea , ки дорои танзимоти ғоя барои лоиҳаи ҷорӣ;
  • директорияи src , ки дар он мо сарчашмаҳои худро эҷод мекунем;
  • my-super-project.iml файл , файли лоиҳа, ки аз ҷониби IDEA сохта шудааст;
  • файли pom.xml , ҳамон файли лоиҳаи Maven, ки ман дар боло дар бораи он сӯҳбат кардам, ки ҳоло мо кушодаем. Агар ман дар ҷое pom.xml ё "pom" -ро зикр кунам, ман ин файли мушаххасро дар назар дорам.
Папкаи src дар навбати худ ду зерпапкаро дар бар мегирад:
  • асосӣ - барои рамзи мо;
  • санҷиш - барои санҷишҳо барои рамзи мо.
Ҳам асосӣ ва ҳам санҷиш папкаи java доранд . Ба назар гиред, ки инҳо як ҷузвдонанд, танҳо як ҷузвдони асосӣ барои codeи сарчашма ва папкаи санҷишӣ мутаносибан барои codeи санҷиш аст. Мо ҳоло ба ҷузвдони захираҳо умуман ниёз надорем, мо онро истифода намебарем. Аммо бигзор вай хобад.

Табдил додан ба лоиҳаи веб

Вақти он расидааст, ки мо лоиҳаи Maven-и худро ба лоиҳаи веб табдил диҳем. Барои ин, номи лоиҳаро дар ин дарахт клик кунед ва "Иловаи дастгирии чаҳорчӯба..." -ро интихоб кунед.
Эҷоди як лоиҳаи оддии веб дар IntelliJ Idea Enterprise.  Қадам ба қадам, бо тасвирҳо - 7
Равзана кушода мешавад, ки дар он мо метавонем дастгирии ҳама гуна чаҳорчӯбаҳои гуногунро барои лоиҳаи худ илова кунем. Аммо ба мо танҳо як лозим аст: Web Application . Мо ӯро интихоб мекунем.
Эҷоди як лоиҳаи оддии веб дар IntelliJ Idea Enterprise.  Қадам ба қадам, бо тасвирҳо - 8
Мо тафтиш мекунем, ки дар паҳлӯи Барномаи Web аломати қайд мавҷуд аст ва дар қисми асосии равзана қайд карда мешавад, ки мо мехоҳем, ки файли web.xml барои мо фавран эҷод карда шавад (ман тавсия медиҳам, ки қуттиро тафтиш кунед, агар он дар он ҷо набошад) . Пас аз ин, мо мебинем, ки сохтори лоиҳаи мо бо папкаи веб пурра карда шудааст .
Эҷоди як лоиҳаи оддии веб дар IntelliJ Idea Enterprise.  Қадам ба қадам, бо тасвирҳо - 9
Ин решаи лоиҳаи веби мо дар / аст . Яъне, агар мо суроғаи localhost-ро дар браузер ворид кунем (ҳангоме ки мо онро оғоз мекунем), он гоҳ ба он маҳз дар ҳамин ҷо, ба решаи лоиҳаи веб дастрасӣ пайдо мешавад. Агар мо localhost/addUser ворид кунем, пас ҷузвдони веб манбаеро бо номи addUser ҷустуҷӯ мекунад .
Муҳим он аст, ки фаҳмед, ки папкаи веб ҳангоми боргузорӣ ба Tomcat решаи лоиҳаи мост. Ҳоло мо сохтори муайяни ҷузвдон дорем, аммо дар лоиҳаи анҷомёфтае, ки мо бор мекунем, он каме фарқ мекунад ва папкаи веб реша дар он ҷо хоҳад буд.
Дар веб папкаи зарурӣ бо номи WEB-INF мавҷуд аст , ки дар он файли web.xml ҷойгир аст , ки мо онро дар қадами қаблӣ эҷод кардан мехостем. Биёед онро кушоем.
Эҷоди як лоиҳаи оддии веб дар IntelliJ Idea Enterprise.  Қадам ба қадам, бо тасвирҳо - 10
Чи тавре ки мебинед, дар он хануз ягон чизи ачоиб нест, факат «шалох». Воқеан, агар мо талаб намекардем, ки онро эҷод кунем, ба мо лозим меомад, ки онро дастӣ созем, яъне тамоми ин “сарлавҳа”-ро дастӣ чоп кунем ё дар ҳолатҳои шадид versionи тайёрро дар Интернет ҷустуҷӯ кунем. . web.xml барои чӣ аст ? Барои харитасозӣ. Дар ин ҷо мо ба Tomcat мегӯем, ки кадом URL барои фиристодан ба кадом сервлетҳо дархост мекунад. Аммо ин ҳама дертар аст, ҳоло мо онро холӣ мемонем. Дар папкаи веб файле бо номи index.jsp низ мавҷуд аст . Биёед онро кушоем.
Эҷоди як лоиҳаи оддии веб дар IntelliJ Idea Enterprise.  Қадам ба қадам, бо тасвирҳо - 11
Ин файлест, ки бо нобаёнӣ иҷро карда мешавад, ба ибораи дигар. Яъне, вақте ки мо лоиҳаро оғоз мекунем, маҳз ҳамон чизест, ки мо мебинем. Аслан, jsp як файли муқаррарии html аст, бо фарқияти он, ки шумо метавонед рамзи java-ро дар он иҷро кунед.

Каме дар бораи мундариҷаи статикӣ ва динамикӣ

Мундариҷаи статикӣ мундариҷаест, ки бо мурури замон тағир намеёбад. Ҳама чизе, ки мо дар файли html навиштем, бидуни тағирот намоиш дода мешавад. Агар мо салом ҷаҳон нависем, пас ин навиштаҷот баробари кушодани саҳифа ва баъд аз 5 дақиқа ва пагоҳ ва баъд аз як ҳафта ва баъд аз як сол пайдо мешавад. Вай тағир намеёбад. Аммо чӣ мешавад, агар мо хоҳем, ки санаи ҷорӣро дар саҳифа нишон диҳем? Агар мо танҳо "27 октябри соли 2017" нависем, фардо ҳамон санаро мебинем ва баъд аз як ҳафта ва баъд аз як сол. Аммо ман мехостам, ки ин сана ҳанӯз ҳам муҳим бошад. Дар ин ҷо қобorяти иҷро кардани баъзе codeҳо бевосита дар дохor саҳифа ба кӯмаки мо меояд. Мо метавонем an objectи санаро гирем, онро ба шакли лозима табдил диҳем ва онро дар саҳифа нишон диҳем. Пас ҳар рӯз, вақте ки мо саҳифаро мекушоем, сана ҳамеша мувофиқ хоҳад буд. Агар ба мо танҳо мундариҷаи статикӣ лозим бошад, пас serverи муқаррарии веб ва файлҳои html барои мо кифоя аст. Мо ба ягон Java, Maven ё Tomcat ниёз надорем. Аммо агар мо хоҳем, ки мундариҷаи динамикиро истифода барем, дар ин ҷо ҳамаи ин муфид хоҳад буд. Аммо ҳоло биёед ба index.jsp баргардем . Биёед ба ҷои сарлавҳаи стандартӣ чизи худамонро нишон диҳем, масалан, "Веб-барномаи супери ман!" ва дар бадан мо менависем, масалан, "Ман зиндаам!" Мо қариб омодаем лоиҳаи худро оғоз кунем! Аммо, мутаассифона, секунҷаи муқаррарии сабз барои оғози барнома фаъол нест.
Эҷоди як лоиҳаи оддии веб дар IntelliJ Idea Enterprise.  Қадам ба қадам, бо тасвирҳо - 12
Биёед тугмаи чапи онро пахш кунем (дар экран бо тирчаи сурх нишон дода шудааст) ва Таҳрири конфигуратсияҳоро интихоб кунед... Равзана кушода мешавад, ки дар он аз мо хоҳиш карда мешавад, ки аломати сабзи плюсро барои илова кардани ягон намуди конфигуратсия пахш кунем. Онро клик кунед, он дар кунҷи чапи болоии равзана ҷойгир аст.
Эҷоди як лоиҳаи оддии веб дар IntelliJ Idea Enterprise.  Қадам ба қадам, бо тасвирҳо - 13
Объекти serverи Tomcat ва зербанди маҳаллиро интихоб кунед . Равзанаи дорои параметрҳои гуногун кушода мешавад, аммо мо аз ҳама чиз ва аз пешфарз қаноатмандем.
Эҷоди як лоиҳаи оддии веб дар IntelliJ Idea Enterprise.  Қадам ба қадам, бо тасвирҳо - 14
Мо метавонем ба таври зебо конфигуратсияи худро ба ҷои стандарти Unnamed (дар боло) номбар кунем. Инчунин тафтиш кардан лозим аст, ки идея Tomcat-ро дар системаи мо бомуваффақият пайдо кардааст (шумо онро қаблан бор карда ва насб кардаед , дуруст?). Агар шумо онро пайдо карда натавонед (ки аз эҳтимол дур нест), тирчаи поёнро клик кунед ва дар куҷо насб кардаем, ё versionи дигареро интихоб кунед, агар шумо якчандтои онҳоро дошта бошед. Ман якто дорам ва он аллакай насб шудааст, бинобар ин ҳама чиз дар скриншот ба назар мерасад. Ва дар поёни равзана мо мебинем, ки огоҳӣ мавҷуд аст, ки ягон артефакт барои ҷойгиркунӣ дар server пешбинӣ нашудааст. Ва дар тарафи рости ин навиштаҷот тугмае мавҷуд аст, ки ислоҳи ин нуқсонро пешниҳод мекунад. Мо онро клик мекунем ва мебинем, ки худи идея ҳама чизро пайдо кард, ҳама чизро худаш офаридааст, он чизе ки дар он набуд, ва ҳама танзимотро худаш анҷом додааст.
Эҷоди як лоиҳаи оддии веб дар IntelliJ Idea Enterprise.  Қадам ба қадам, бо тасвирҳо - 15
Мо мебинем, ки мо аз ҷадвали Сервер ба ҷадвали Ҷойгиркунӣ интиқол дода шудаем , дар қисмати Ҷойгиркунӣ дар оғози server мо аллакай артефактро дорем, ки бояд ҷойгир карда шавад ва дар зер нишон дода шудааст, ки ин артефакт пеш аз ҷойгиркунӣ сохта мешавад. Муроҷиат кунед, хуб. Ва мо мебинем, ки аввалан, дар поёни равзана бахше бо serverи маҳаллии Tomcat пайдо шуд, ки дар он артефакти мо ҷойгир карда мешавад. Шумо метавонед ин бахшро бо пахш кардани тугмаи мувофиқ дар тарафи рости равзана пӯшонед.
Эҷоди як лоиҳаи оддии веб дар IntelliJ Idea Enterprise.  Қадам ба қадам, бо тасвирҳо - 16
Мо инчунин мебинем, ки секунҷаи сабз барои оғоз аллакай фаъол аст. Барои онҳое, ки мехоҳанд ҳама чизро тафтиш кунанд, шумо метавонед тугмаи танзимоти лоиҳаро пахш кунед (дар тарафи рости тугмаҳои оғозёбӣ, ки бо тирчаи сурх нишон дода шудааст), ба бахши Артефактҳо гузаред ва боварӣ ҳосил кунед, ки артефакт воқеан офарида шудааст. То он даме ки мо он тугмаи ислоҳро пахш накунем, он ҷо набуд , аммо ҳоло ҳама чиз хуб аст. Ва ин конфигуратсия ба мо хеле мувофиқ аст. Хулоса, фарқияти байни лоиҳаи ман-супер-лоиҳа:ҷанг ва ман-супер-лоиҳа:ҷанг таркида дар он аст, ки my-super-project:war танҳо як файли ҷангиро (ки танҳо бойгонӣ аст) эҷод мекунад ва имконоти бо таркида танҳо як ҷанги "нақлнашуда" аст . Ва ин хосият шахсан барои ман қулайтар аст, зеро он ба ман имкон медиҳад, ки тағироти хурдро дар server зуд ҷобаҷо кунам. Дар асл, артефакт лоиҳаи мост, ки танҳо аллакай тартиб дода шудааст ва дар он сохтори ҷузвдон тағир дода шудааст, то он бевосита ба Tomcat бор карда шавад. Он чизе монанди ин хоҳад буд:
Эҷоди як лоиҳаи оддии веб дар IntelliJ Idea Enterprise.  Қадам ба қадам, бо тасвирҳо - 17
Хуб, ҳоло ҳама чиз барои оғози лоиҳаи мо омода аст. Мо тугмаи сабзи дилхоҳро пахш мекунем ва аз натиҷа лаззат мебарем! :)
Эҷоди як лоиҳаи оддии веб дар IntelliJ Idea Enterprise.  Қадам ба қадам, бо тасвирҳо - 18
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION