JavaRush /Блоги Java /Random-TG /Эҷоди як барномаи оддии веб бо истифода аз сервлетҳо ва j...
Стас Пасинков
Сатҳи
Киев

Эҷоди як барномаи оддии веб бо истифода аз сервлетҳо ва jsp (қисми 1)

Дар гурӯҳ нашр шудааст
Сатҳи донише, ки барои фаҳмидани мақола зарур аст: шумо аллакай кам ё камтар Java Core-ро фаҳмидаед ва мехоҳед ба технологияҳои JavaEE ва барномасозии веб назар кунед. Агар шумо ҳоло ҷустуҷӯи Java Collections-ро, ки мавзӯъҳои наздики мақоларо дар бар мегирад, меомӯзед, ин хеле маъно дорад. Эҷоди як барномаи оддии веб бо истифода аз сервлетҳо ва jsp (қисми 1) - 1Ин мавод идомаи мантиқии мақолаи ман дар бораи Эҷоди лоиҳаи веби оддӣ дар IntelliJ Idea Enterprise мебошад . Дар он ман нишон додам, ки чӣ тавр сохтани қолаби лоиҳаи веби корӣ. Ин дафъа ман ба шумо нишон медиҳам, ки чӣ гуна сохтани веб-барномаи оддӣ, вале зебо бо истифода аз технологияҳои Java Servlet API ва JavaServer Pages API. Аризаи мо дорои саҳифаи асосӣ бо ду истинод мешавад:
  • ба саҳифаи иловагии корбар;
  • ба саҳифаи намоиши рӯйхати корбарон.
Ман ҳоло ҳам IntelliJ Idea Enterprise Edition, Apache Maven (танҳо якчанд вобастагӣ дохил кунед) ва Apache Tomcat -ро истифода хоҳам кард. Дар охир, мо замимаи худро бо истифода аз чаҳорчӯбаи W3.CSS "ор" мекунем . Мо тахмин мезанем, ки дар айни замон шумо аллакай як лоиҳаи холӣ доред, ки мо онро дар ин ҷо таҳия хоҳем кард. Агар не, мақолаи аввалро аз назар гузаронед ва онро созед. Ин танҳо чанд дақиқа мегирад :)

Каме дар бораи сохтори барномаи оянда

Саҳифаи асосии мо ( / ) саҳифаи оддии статикии html бо сарлавҳа ва ду истинод/тугмаҳо хоҳад буд:
  • як корбари нав илова кунед (ба /add фиристода мешавад );
  • дидани рӯйхати корбарон (фиристад ба / list ).
Tomcat дархостҳоро ба ин суроғаҳо қабул мекунад ва онҳоро ба яке аз ду сервлетҳои мо мефиристад (мо харитасозӣ дар файли web.xml тасвир карда мешавад ). Ва сервлетҳо, дар навбати худ, дархостҳоро коркард мекунанд, маълумот омода мекунанд (ё агар корбар илова карда шаванд, онро захира мекунанд) ва назоратро ба файлҳои мувофиқи jsp интиқол медиҳанд, ки аллакай натиҷаро "намоиш медиҳанд". Мо маълумотро дар рӯйхати маъмултарин нигоҳ медорем (Рӯйхат).

Биёед як саҳифаи хонагии статикӣ эҷод кунем

Агар шумо дар папкаи веби худ index.jsp дошта бошед , онро нест кунед. Ба ҷои ин, дар ин ҷузвдон мо файли оддии html бо номи index.html эҷод мекунем :
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>My super project!</title>
</head>
<body>
    <!-- header -->
    <div>
        <h1>Super app!<//h1>
    </div>

    <div>       <!-- content -->
        <div>    <!-- buttons holder -->
            <button onclick="location.href='/list'">List users<//button>
            <button onclick="location.href='/add'">Add user<//button>
        </div>
    </div>
</body>
</html>
Дар ин ҷо ҳеҷ чизи мураккаб нест. Дар сарлавҳа мо унвони саҳифаи худро нишон медиҳем. Дар матни саҳифа мо ду div-и асосӣ дорем: сарлавҳа (сарлавҳа) ва мундариҷа (мӯҳтаво). Дар мундариҷа мо дорандаи тугмаҳои худ дорем ва дар асл ду тугма, ки ҳангоми пахш кардан ба суроғаҳои мувофиқ фиристода мешаванд. Шумо метавонед лоиҳаро иҷро кунед ва бубинед, ки он ҳоло чӣ гуна аст. Агар шумо тугмаҳоро пахш кунед, саҳифаҳо бо хатогии 404 кушода мешаванд, зеро мо ҳоло онҳоро надорем. Аммо ин нишон медиҳад, ки тугмаҳо кор мекунанд. Бояд қайд намоям, ки ин варианти универсалӣ нест, зеро агар шумо ногаҳон JavaScript-ро ғайрифаъол кунед, ин тугмаҳо дар браузер ҳеҷ коре надоранд. Аммо мо тахмин мекунем, ки ҳеҷ кас JavaScript-ро хомӯш накардааст :). Маълум аст, ки истинодҳои оддиро метавон истифода бурд, аммо ман тугмаҳоро афзалтар медонам. Шумо он чизеро, ки ба шумо беҳтар аст, мекунед. Ва ба он нигоҳ накунед, ки дар мисолҳои ман divs бисёр хоҳанд буд . Он гоҳ мо онҳоро бо услубҳо пур мекунем ва ҳама чиз зеботар хоҳад шуд :).

Барои нишон додани натиҷа файлҳои jsp эҷод кунед

Дар ҳамон феҳристи веб , мо папкаеро эҷод мекунем, ки дар он файлҳои jsp-и худро ҷойгир мекунем . Ман онро намоишҳо номидам ва боз шумо метавонед импровизатсия кунед. Дар ин папка мо ду файли jsp эҷод мекунем:
  • add.jsp — саҳифа барои илова кардани корбарон;
  • list.jsp - саҳифа барои намоиши рӯйхати корбарон.
Биёед ба онҳо сарлавҳаҳои мувофиқи саҳифа диҳем. Чизе ба монанди "Илова кардани корбари нав" ва "Рӯйхати корбарон" ва мо ҳоло онро ҳамин тавр мегузорем.

Биёед ду сервлет эҷод кунем

Сервлетҳо дархостҳоеро, ки Tomcat ба онҳо интиқол медиҳад, қабул ва коркард мекунанд. Дар папкаи src/main/java мо як бастаи барномаро эҷод мекунем , ки дар он манбаъҳои мо мавҷуданд. Дар он ҷо мо бастаҳои гуногун хоҳем дошт. Аз ин рӯ, барои он ки ин бастаҳо дар дохor якдигар сохта нашаванд, биёед дар бастаи барнома як синф эҷод кунем (баъдан онро нест кунем). Акнун биёед дар бастаи барнома се бастаи гуногун эҷод кунем:
  • an objectҳо - ин ҷоест, ки an objectҳои мо ҷойгиранд (худи синф, ки an objectҳои корбарро тавсиф мекунад);
  • модел - модели мо дар ин ҷо хоҳад буд (дар ин бора каме баъдтар);
  • сервлетҳо - хуб, ин ҷо сервлетҳои мо хоҳанд буд.
Пас аз ин, шумо метавонед он синфро аз бастаи барнома бехатар хориҷ кунед (агар шумо онро сохта бошед, албатта). Дар бастаи сервлетҳо мо ду синф эҷод мекунем:
  • AddServlet - дархостҳои дар /add гирифташударо коркард мекунад ;
  • ListServlet - дархостҳои дар /list гирифташударо коркард мекунад .

Пайваст кардани вобастагӣ дар Maven

Нусхаи Tomcat 9.* мушаххасоти versionи Servlet 4.0 ва JavaServer Pages versionи 2.3-ро амалӣ мекунад. Ин дар ҳуҷҷатҳои расмии Tomcat 9 дар сархати якум дар сатри дуюм навишта шудааст. Ин маънои онро дорад, ки агар шумо мисли ман ин versionи Tomcat-ро истифода баред, пас codeе, ки мо менависем ва барои иҷро мефиристем, маҳз versionҳои муайяншударо истифода мебарад. Аммо мо мехоҳем ин мушаххасотро дар лоиҳаи худ дошта бошем, то codeи мо, ки онҳоро истифода мебарад, ҳадди аққал бомуваффақият тартиб дода шавад. Ва барои ин мо бояд онҳоро ба лоиҳаи худ бор кунем. Дар ин ҷо Мавен ба наҷот меояд.

Қоидаи умумӣ ин аст: агар ба шумо лозим аст, ки чизеро бо истифодаи Maven ба лоиҳаи худ пайваст кунед:

  • ба вебсайти анбори Maven равед;
  • дар он ҷо китобхонаи ба шумо лозим ва versionи лозимаро ҷустуҷӯ кунед;
  • шумо рамзи вобастагӣ мегиред, ки бояд ба pom.xml-и шумо ворид карда шавад;
  • ворид кунед! :)
Пас биёед оғоз кунем. Аввалан, биёед файли pom омода кунем . Дар ҷое пас аз /version , вале пеш аз /project , зеринро ворид кунед:
<dependencies>

</dependencies>
Ҳамин тариқ, мо қайд кардем, ки дар дохor ин тегҳо мо вобастагиҳоеро, ки ба мо лозиманд, номбар мекунем. Акнун ба mvnrepository.com равед , дар боло майдони ҷустуҷӯ пайдо мешавад. Аввалан, сервлетро ба ҷустуҷӯ ворид кунед. Натиҷаи аввал, ки дар он ҷо зиёда аз ҳафт ҳазор истифода вуҷуд дорад, ба мо мувофиқ аст. Мо дар хотир дорем, ки ба мо versionи 4.0 лозим аст (барои Tomcat 9; барои versionҳои дигар, татбиқҳои кӯҳна метавонанд мувофиқ бошанд). Ин як versionи хеле нав аст, бинобар ин истифодаи зиёде вуҷуд надорад, аммо он чизест, ки ба мо лозим аст. Саҳифае кушода мешавад, ки дар он шумо метавонед рамзи ин вобастагӣро барои менеҷерони бастаҳои гуногун дастрас кунед ва шумо ҳатто метавонед онро зеркашӣ кунед. Аммо азбаски мо мехоҳем онро бо истифода аз Maven пайваст кунем, мо codeро дар ҷадвали Maven интихоб мекунем. Мо ба файли pom-и худ дар дохor бахши вобастагӣ нусхабардорӣ мекунем. Агар дар кунҷи рости поёни IDEA огоҳинома пайдо шавад, ки оё мо мехоҳем воридоти худкорро фаъол созем, мо розӣ ҳастем. Агар шумо тасодуфан рад карда бошед, ба "Танзимот" гузаред ва воридоти худкорро ба таври дастӣ фаъол созед: Танзимот (Ctrl + Alt + S) -> Сохта, иҷро, густариш -> Maven -> Воридот Ин файли pom ва файлҳои конфигуратсияи IDEA-ро барои ин нигоҳ медорад. лоиҳа дар ҳамоҳангӣ. Ҳоло, бо истифода аз ҳамон принсип, мо versionи JavaServer Pages 2.3-ро пайдо мекунем ва пайваст мекунем (дар ҷустуҷӯ jsp-ро ворид кунед). Ва азбаски мо аллакай Maven-ро гирифтаем, биёед фавран бигӯем, ки манбаъҳои мо ба синтаксиси Java 8 мувофиқат мекунанд ва онҳо бояд ба bytecodeи ҳамон version тартиб дода шаванд. Пас аз ҳамаи ин амалҳо, 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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>ru.javarush.info.fatfaggy</groupId>
    <artifactId>my-super-project</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>1.8</maven.compile.source>
        <maven.compiler.target>1.8</maven.compile.target>
    </properties>

    <dependencies>
        <!-- Servlet API 4.0 for tomcat 9 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.0</version>
            <scope>provided</scope>
        </dependency>

        <!-- JavaServer Pages API 2.3 for tomcat 9 -->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>2.3.1</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

</project>

Сервлетҳои моро ба сервлетҳои воқеӣ табдил диҳед

Дар ин лаҳза, ҷуфти сервлетҳое, ки мо сохтаем, воқеан танҳо синфҳои муқаррарӣ мебошанд. Онҳо ягон функсия надоранд. Аммо ҳоло мо Servlet API-ро ба лоиҳаи худ пайваст кардем ва агар ин тавр бошад, мо метавонем дарсҳоро аз он ҷо истифода барем. Барои он ки сервлетҳои мо сервлетҳои "воқеӣ" шаванд, мо танҳо бояд онҳоро аз синфи HttpServlet мерос гирем .

Харитасозӣ ё тақсимкунӣ

Акнун хуб мебуд, ки ба Tomcat бигӯем, то дархостҳо аз /add тавассути сервлети мо AddServlet коркард карда шаванд ва аз ин рӯ дархостҳо аз /list аз ҷониби сервлети ListServlet коркард карда шаванд . Ин раванд харитасозӣ номида мешавад . Ин дар файли web.xml мувофиқи ин принсип анҷом дода мешавад :
  • аввал мо сервлетро тавсиф мекунем (мо номе медиҳем ва роҳро ба худи синф нишон медиҳем);
  • пас мо ин сервлетро ба суроғаи мушаххас мепайвандем (мо номи сервлетро, ​​ки наваHow ба он дода будем, нишон медиҳем ва суроғаеро, ки дархостҳо бояд ба ин сервлет фиристода шаванд, нишон медиҳем).
Биёед сервлетро тавсиф кунем:
<servlet>
    <servlet-name>add</servlet-name>
    <servlet-class>app.servlets.AddServlet</servlet-class>
</servlet>
Акнун мо онро ба суроға пайваст мекунем:
<servlet-mapping>
    <servlet-name>add</servlet-name>
    <url-pattern>/add</url-pattern>
</servlet-mapping>
Тавре ки шумо мебинед, номи сервлет дар ҳарду ҳолат як аст. Ба шарофати ин, Tomcat медонад, ки агар дархост ба суроғаи /add ворид шавад , он бояд ба сервлети app.servlets.AddServlet интиқол дода шавад . Мо бо сервлети дуюм низ ҳамин тавр мекунем. Дар натиҷа, web.xml- и мо тақрибан мундариҷаи зеринро дорад:
<?xml version="1.0" encoding="UTF-8"?>
<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">

    <!-- add servlet -->
    <servlet>
        <servlet-name>add</servlet-name>
        <servlet-class>app.servlets.AddServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>add</servlet-name>
        <url-pattern>/add</url-pattern>
    </servlet-mapping>

    <!-- list servlet -->
    <servlet>
        <servlet-name>list</servlet-name>
        <servlet-class>app.servlets.ListServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>list</servlet-name>
        <url-pattern>/list</url-pattern>
    </servlet-mapping>
</web-app>
Дар омади гап, мо дар ин ҷо (дар / ) барои саҳифаи асосӣ аломатгузорӣ накардаем . Далели он аст, ки дар ин ҳолат ба мо лозим нест. Саҳифаи асосии мо як файли оддии html аст , ки танҳо ду тугмаро намоиш медиҳад. Мундариҷаи динамикӣ вуҷуд надорад, бинобар ин барои мо як сервлети алоҳидае барои он эҷод кардан маъно надорад, ки ба он дархостҳо аз суроғаи / фиристода мешаванд ва ба ҷуз интиқоли иҷро ба баъзе jsp ҳеҷ коре намекунад (ки низ бояд бошад. офарида шудааст), ки кашида мебарорад Агар мо ду тугма медоштем. Мо ба ин ниёз надорем; мо аз захираи статикӣ қаноатмандем. Вақте ки Tomcat дархост қабул мекунад, он месанҷад, ки ягон сервлет вуҷуд надорад, ки дархостро дар чунин суроға коркард кунад ва он гоҳ мебинад, ки дар ин суроға воқеан файли html -и омода мавҷуд аст , ки онро бомуваффақият мефиристад. . Мо метавонем замимаи худро дубора иҷро кунем (serverро аз нав оғоз кунед ё аз нав ҷойгир кунед, мувофиқи хоҳиши шумо) ва боварӣ ҳосил кунед, ки саҳифаи асосӣ нишон дода шудааст, ҳеҷ чиз вайрон нашудааст, вақте ки мо тугмаҳоро пахш мекунем, гузаришҳо ба амал меоянд, аммо ҳоло хатогӣ низ вуҷуд дорад. навишта шудааст. Дар омади гап, агар пештар мо хатои 404 дошта бошем, ҳоло мо 405 дорем. Ин маънои онро дорад, ки харитасозӣ кор кард, сервлетҳо пайдо шуданд, аммо онҳо танҳо барои коркарди дархост ягон усули мувофиқ надоштанд. Агар дар ин марҳила шумо то ҳол хатогии 404 ба даст оред, гарчанде ки ҳама чиз дуруст анҷом дода шудааст, шояд шумо бояд конфигуратсияи густаришро дар идея ислоҳ кунед. Барои ин, шумо бояд ба Таҳрири конфигуратсияҳо гузаред (дар боло дар назди тугмаи оғоз), ба ҷадвали Ҷойгиркунӣ дар тарафи рости равзана гузаред ва боварӣ ҳосил кунед, ки дар контексти Барнома он танҳо нишон дода шудааст /

Ихтисороти кӯтоҳи лирикӣ: "зери кулоҳ" чӣ рӯй медиҳад?

Эҳтимол шумо аллакай фикр кардаед, ки барномаи мо дар Tomcat чӣ гуна кор мекунад? Он ҷо чӣ гап? Ва усули асосӣ () куҷост ? Ҳамин ки шумо дар браузери худ localhost:8080 нависед ва ба ин суроға равед, браузер тавассути протоколи http ба ин суроға дархост мефиристад . Ман умедворам, ки шумо аллакай медонед, ки дархостҳо метавонанд "намудҳои гуногун" дошта бошанд, маъмултаринашон GET ва POST мебошанд . Ҳар як дархост бояд ҷавоб дошта бошад. Дархости GET интизор аст, ки дар посух ба он рамзи html-и тайёр дода мешавад , ки он ба браузер баргардонида мешавад ва браузер ин codeро бо ҳама навъҳои ҳарфҳо, тугмаҳо ва шаклҳои зебо иваз мекунад. Дархости POST каме ҷолибтар аст, зеро он инчунин баъзе маълумотро бо худ дорад. Масалан, дар варақаи бақайдгирии корбар ё иҷозат, шумо маълумоти худро ворид кардаед ва "фиристед" -ро пахш кардед. Дар айни замон, дархости POST ба server бо маълумоти шахсии шумо фиристода шуд. Сервер ин маълумотро қабул кард, коркард кард ва як навъ посух баргардонид (масалан, саҳифаи html бо профor шумо). Фарқи асосии байни онҳо дар он аст, ки дархостҳои GET танҳо барои гирифтани маълумот аз server пешбинӣ шудаанд, дар ҳоле ки дархостҳои POST баъзе маълумотро бо худ мебаранд ва маълумот дар server метавонад тағир ёбад (масалан, вақте ки шумо акси худро ба server бор мекунед, он дар дархости POST парвоз мекунад ва server онро ба базаи маълумот илова мекунад, яъне баъзе тағирот ба амал меояд. Акнун биёед ба Tomcat баргардем. Вақте ки он аз муштарӣ дархост мегирад, ба суроға назар мекунад. Маълумоти худро ба бубинед, ки оё сервлети мувофиқ мавҷуд аст, ки дархостҳоро ба чунин суроға коркард мекунад (ё манбаи тайёре, ки онро фавран баргардонидан мумкин аст). Агар он сервлети мувофиқеро, ки дар ин суроға "нишинад" пайдо кунад, вай ба кадом намуди дархости гирифтааш (GET, POST ё ягон чизи дигар) назар мекунад ва сипас аз сервлет мепурсад, ки оё он усуле дорад Агар сервлет гӯяд, ки ин навъи онро коркард карда наметавонад, Tomcat ба муштарӣ бо рамзи 405 ҷавоб медиҳад. Аммо агар сервлети мувофиқ пайдо шавад ва он усули мувофиқ дошта бошад, Tomcat an objectи ин сервлетро эҷод мекунад ва онро дар риштаи нав иҷро мекунад ( ришта ), ки ба сервлет имкон медиҳад дар риштаи алоҳида кор кунад ва Tomcat минбаъд корашро идома медиҳад. дар худи худ, кабул ва фиристодани дархостхо. Илова бар ин, Tomcat боз ду an objectи дигар эҷод мекунад: яке аз навъи HttpServletRequest (ман онро дар оянда ба таври мухтасар дархост меномам) ва дуюмаш навъи HttpServletResponse(Ман онро ҷавоб хоҳам гуфт). Дар an objectи аввал он ҳама маълумотеро, ки дар дархости муштарӣ гирифта буд, ҷойгир мекунад, то ҳамаи ин маълумотро аз ин an object хориҷ кардан мумкин аст. Хуб, пас аз ҳамаи ин, он ин ду an objectро ба усули мувофиқи сервлет, ки дар риштаи алоҳида кор мекунад, мегузарад. Ҳамин ки сервлет кори худро ба итмом мерасонад ва посухе барои фиристодан ба муштарӣ дорад, он ба Tomcat парчам мебардорад ва мегӯяд: "Ман анҷом додам, ҳама чиз омода аст." Tomcat ҷавобро қабул мекунад ва ба муштарӣ мефиристад. Ин ба Tomcat имкон медиҳад, ки дархостҳоро қабул кунад ва посухҳоро бидуни таваққуф фиристад, дар ҳоле ки тамоми корҳо аз ҷониби сервлетҳо иҷро мешаванд, ки дар риштаҳои алоҳида кор мекунанд. Мувофиқи он, вақте ки мо codeи сервлетро менависем, мо кореро, ки иҷро мешавад, муайян мекунем. Ва ҳа, шумо метавонед усули main() -ро дар худи Tomcat фикр кунед (бале, он дар Java навишта шудааст) ва вақте ки мо Tomcat-ро "оғоз мекунем" main().

Мо усулҳои GET-ро бо сервлетҳо мегирем ва ҷавобҳои оддӣ мефиристем

Дар айни замон, сервлетҳои мо усулҳои мувофиқ (GET) надоранд, бинобар ин Tomcat ба мо хатои 405 медиҳад. Биёед онҳоро созем! Синфи HttpServlet , ки мо аз он сервлетҳои худро мерос мегирем, усулҳои гуногунро муайян мекунад. Барои муқаррар кардани баъзе codeҳо барои усулҳо, мо танҳо онҳоро бекор мекунем. Дар ин ҳолат, мо бояд усули doGet()- ро дар ҳарду сервлет бекор кунем.
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

}
Тавре ки шумо мебинед, ин усул ду an objectро қабул мекунад: req (дархост) ва resp (ҷавоб). Инҳо ҳамон an objectҳое мебошанд, ки Tomcat ҳангоми даъват кардани усули мувофиқ дар ин сервлет барои мо эҷод ва пур мекунад. Аввалан, биёед ҷавобҳои соддатаринро иҷро кунем. Барои ин, an objectи resp-ро гиред ва аз он an objectи PrintWriter гиред , ки онро барои эҷоди ҷавобҳо истифода бурдан мумкин аст. Хуб, бо истифода аз он мо сатри оддиро чоп мекунем.
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    PrintWriter writer = resp.getWriter();
    writer.println("Method GET from AddServlet");
}
Мо дар сервлети ListServlet як чизи шабеҳро иҷро мекунем , ки пас аз он мо serverи худро дубора оғоз мекунем. Тавре ки шумо мебинед, ҳама чиз кор мекунад! Вақте ки шумо тугмаҳоро пахш мекунед, саҳифаҳо бо матне, ки мо бо PrintWriter "сабт" кардаем, кушода мешаванд . Ин танҳо он аст, ки jsp-и мо , ки мо барои тавлиди саҳифаҳо бо ҷавоб омода карда будем, ба ҳеҷ ваҷҳ истифода намешаванд. Сабаб дар он аст, ки иҷрои онҳо танҳо ба онҳо намерасад. Худи serverлет ҳоло посух тавлид мекунад ва кори худро ба анҷом мерасонад ва ба Tomcat ишора мекунад, ки он барои муштарӣ посух омода аст. Tomcat танҳо ин посухро мегирад ва онро ба муштарӣ бармегардонад. Мо назоратро аз сервлетҳо ба jsp интиқол медиҳем. Биёед codeи усулҳои худро ин тавр тағир диҳем:
  • мо аз an objectи дархост an objectи мудири дархост мегирем, ки дар он суроғаи jsp саҳифаеро, ки мо мехоҳем назоратро ба он интиқол диҳем;
  • бо истифода аз an objectи гирифташуда, мо назоратро ба саҳифаи муайяншудаи jsp интиқол медиҳем ва фаромӯш накунед, ки дар он ҷо an objectҳои дархост ва посухро, ки аз Tomcat гирифтаем, замима кунед.
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    RequestDispatcher requestDispatcher = req.getRequestDispatcher("views/add.jsp");
    requestDispatcher.forward(req, resp);
}
Дар бадани саҳифаҳои jsp (дар дохor теги бадан) мо метавонем чизе нависем, то равшан бубинем, ки кадом саҳифа намоиш дода мешавад. Пас аз он, мо serverро бозоғоз мекунем ва тафтиш мекунем. Тугмаҳои саҳифаи асосӣ пахш карда мешаванд, саҳифаҳо кушода мешаванд, яъне дархостҳо ба сервлетҳо фиристода мешаванд ва пас аз он назорат ба саҳифаҳои jsp, ки аллакай намоиш дода шудаанд, интиқол дода мешавад. Ҳамааш ҳамин. Дар қисми навбатии мақола мо бо функсияи замимаи худ сару кор хоҳем кард.

Боз чӣ бояд хонд:

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


Чати ман
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION