Útmutató a JavaServer oldalakhoz (JSP)

Tartalomjegyzék

  • 1. Áttekintés
  • 2. JavaServer oldalak
  • 2.1. JSP szintaxis
  • 2.2. Statikus és dinamikus tartalom
  • 2.3. Implicit objektumok
  • 2.4. Egyéb implicit objektumok
  • 2.5. Irányelvek
  • 2.6. Oldal irányelvek
  • 3.0. Három példa
  • 3.1. A HTML megjelenik a Servletben
  • 3.2. Java JSP statikus tartalomban
  • 3.3. JSP továbbítással
  • 3.4. Próbáld ki!
  • 4. Következtetés

1. Áttekintés

A JavaServer Pages (JSP) lehetővé teszi dinamikus tartalom injekció statikus Java és Java Servlet használatával. Kéréseket tehetünk a Java Servlet, hajtsa végre a megfelelő logikát, és tegyen egy adott nézetet kiszolgálóoldalt az ügyféloldali fogyasztásra. Ez a cikk alapos áttekintést nyújt a JavaServer oldalakról a Java 8 és a Jave 7 EE használatával.

Kezdjük néhány, a JSP szempontjából lényeges fogalom feltárásával: nevezetesen a különbség között dinamikus és statikus tartalma, a JSP életciklusa és a JSP szintaxisa, valamint az irányelvek és a fordításkor létrehozott implicit objektumok!

2. JavaServer oldalak

A JavaServer Pages (JSP) lehetővé tette a Java-specifikus adatok továbbítását vagy elhelyezését egy .jsp nézetben, és az ügyféloldali fogyasztást.

A JSP fájlok lényegében .html fájlok némi extra szintaxissal és néhány kisebb kezdeti különbséggel:

  1. a .html az utótag helyébe .jsp (ez .jsp fájltípusnak számít) és
  2. a következő címke kerül a .html jelölő elemek tetejére:

Nézzük át a JSP néhány kulcsfontosságú fogalmát.

2.1. JSP szintaxis

Kétféle módon adható hozzá Java-kód a .jsp fájlhoz. Először is használhatunk alapvető Java Scriptlet szintaxist, amely magában foglalja a Java kód blokkok két Scriptlet címkébe való beillesztését:

<% Java code here %>

A második módszer az XML-re jellemző:

 Java kód itt 

Fontos, hogy a JSP használatával feltételes logikai kliensoldal használható ha, azután, és más záradékokat, majd a megfelelő jelölőtömböket becsomagolja azokkal a zárójelekkel.

 Doodad! 

Helló!

Például, ha doodad igaz, az elsőt megjelenítenénk, div elem különben a másodikat jelenítenénk meg, o elem!

2.2. Statikus és Dinamikus Tartalom

Statikus a webtartalom olyan állóeszköz, amelyet a RESTful, SOAP, HTTP, HTTPS kérelmektől vagy a felhasználó által benyújtott egyéb információktól függetlenül fogyasztanak.

Statikus a tartalom azonban fix, és a felhasználói bemenetek nem módosítják. Dinamikus a webtartalmak azok az eszközök, amelyek a felhasználói műveletekre vagy információkra reagálnak, azokat módosítják vagy megváltoznak!

A JSP technológia lehetővé teszi a felelősségek tiszta szétválasztását dinamikus és statikus tartalmát.

A szerver (servlet) kezeli a dinamikus tartalma és az ügyfél (a tényleges .jsp oldal) a statikus kontextus, amelybe a dinamikus tartalmakat injektálják.

Vessünk egy pillantást a implicit tárgyak amelyeket a JSP hozott létre, és amelyek lehetővé teszik a JSP-vel kapcsolatos adatszerver-oldal elérését!

2.3. Implicit objektumok

Implicit objektumok során a JSP motor automatikusan generálja összeállítás.

Implicit objektumok tartalmazza a HttpRequest és HttpResponse objektumokat, és tegye ki a kiszolgáló oldali különféle funkciókat a kiszolgáló kisalkalmazásához és a .jsp! Itt van a lista implicit tárgyak amelyek létrejönnek:

kérés

kérés osztályba tartozik javax.servlet.http.HttpServletRequest. A kérés Az objektum az összes felhasználói bemeneti adatot feltárja és elérhetővé teszi kiszolgálón.

válasz

válasz osztályba tartozik javax.servlet.http.HttpServletResponse és meghatározza, hogy mi kerül vissza a kliensoldalra a után kérés készül.

Vizsgáljuk meg közelebbről a kérés és válasz implicit tárgyak, mivel ezek a legfontosabbak és a leggyakrabban használt objektumok.

Az alábbi példa egy nagyon egyszerű, hiányos, servlet módszert mutat be a GET kérések kezelésére. A legtöbb részletet kihagytam, hogy a használatára összpontosíthassunk kérés és válasz tárgyak:

védett void doGet (HttpServletRequest kérés, HttpServletResponse válasz) dobja a ServletException, IOException {String message = request.getParameter ("üzenet"); response.setContentType ("szöveg / html"); . . . }

Először azt látjuk, hogy a kérés és válasz az objektumokat paraméterként adják át a módszerbe, így elérhetővé teszik a hatókörén belül.

A kérelem paramétereit a .getParameter () funkció. Fent, elkapjuk a üzenet paramétert és inicializálja a karakterlánc változót, hogy a szerveroldali logikánkban felhasználhassuk. Hozzáférhetünk a válasz objektum, amely meghatározza, hogy mi és hogyan lesz a nézetbe továbbított adat.

Fent beállítottuk rajta a tartalom típusát. Nem kell visszaküldenünk a válasz objektum, hogy a JSP oldalon megjelenjen a hasznos teher a rendereléskor!

ki

ki osztályba tartozik javax.servlet.jsp.JspWriter és tartalom írására szolgál az ügyfél számára.

Legalább kétféleképpen nyomtathat a JSP oldalára, és érdemes itt mindkettőt megvitatni. ki automatikusan létrejön, és lehetővé teszi a memóriába, majd a válasz tárgy:

out.print („hello”); out.println („világ”);

Ez az!

A második megközelítés jobban teljesítő lehet, mivel lehetővé teszi, hogy közvetlenül a válasz tárgy! Itt használjuk PrintWriter:

PrintWriter out = response.getWriter (); out.println ("Hello World");

2.4. Egyéb implicit objektumok

Íme néhány más Implicit objektumok ezeket is jó tudni!

ülés

ülés osztályba tartozik javax.servlet.http.HttpSession a munkamenet időtartama alatt megőrzi a felhasználói adatokat.

Alkalmazás

Alkalmazás osztályba tartozik javax.servlet.ServletContext tárolja az inicializáláskor beállított alkalmazásszintű paramétereket, vagy amelyeket az alkalmazás egészében el kell érni.

kivétel

kivétel osztályba tartozik javax.servlet.jsp.JspException a hibaüzenetek megjelenítésére szolgál a címkét tartalmazó JSP oldalakon .

oldalt

oldalt osztályba tartozik java.lang.Tárgy lehetővé teszi az aktuális szervlet információk elérését vagy hivatkozását.

pageContext

pageContext osztályba tartozik javax.servlet.jsp.PageContext alapértelmezett oldalt hatókör, de felhasználható a hozzáféréshez kérés, Alkalmazás, és session attribútumok.

konfig

konfig osztályba tartozik javax.servlet.ServletConfig a kiszolgáló kisalkalmazás konfigurációs objektuma, amely lehetővé teszi az egyik számára a kiszolgáló kontextus, a név és a konfigurációs paraméterek lekérését.

Most, hogy áttekintettük a implicit tárgyak a JSP nyújtja, térjünk rá irányelvek amelyek lehetővé teszik .jsp oldalak számára, hogy (közvetve) hozzáférjenek ezekhez az objektumokhoz.

2.5. Irányelvek

A JSP a dobozból olyan irányelveket szállít, amelyek felhasználhatók a JSP fájljaink alapvető funkcióinak meghatározására. A JSP irányelveknek két része van: (1) maga az irányelv és (2) az irányelv attribútuma, amelyhez értéket rendelnek.

A háromféle irányelv, amelyre az irányelv-címkék segítségével hivatkozni lehet: amely meghatározza a JSP függőségeit és attribútumait, beleértve tartalom típus és nyelv, - amely meghatározza a használandó importot vagy fájlt, és - amely meghatározza az oldal által használandó egyedi műveleteket meghatározó címkekönyvtárat.

Tehát például egy oldalirányelv a JSP-címkék használatával kerül megadásra a következő módon:

És ezt megtehetjük az XML segítségével az alábbiak szerint:

2.6. Oldal irányelv attribútumok

Nagyon sok attribútum deklarálható egy oldal irányelvben:

autoFlush

autoFlush vezérli a puffer kimenetet, kitisztítja azt, amikor a puffer mérete eléri. Az alapértelmezett érték: igaz.

puffer

puffer beállítja a JSP oldalunk által használt puffer méretét. Az alapértelmezett érték 8kb.

errorPage

errorPage megadja a JSP oldalt hibaoldalként.

kiterjed

kiterjed meghatározza a megfelelő szervlet kód super osztályát.

info

info a JSP szöveges leírásának beállítására szolgál.

isELIgnored

isELIgnored kijelenti, hogy az oldal figyelmen kívül hagyja-e vagy sem Kifejezés nyelve (EL) a JSP-ben. Az EL lehetővé teszi a bemutató réteg számára, hogy kommunikáljon a Java által kezelt babokkal, és ezt használja ${…} szintaxis, és bár itt nem fogunk belemenni az EL apróságaiba, az alábbiakban számos olyan példa található, amely elegendő a JSP-példánk felépítéséhez! A. Alapértelmezett értéke isELIgnored van hamis.

isErrorPage

isErrorPage megmondja, hogy egy oldal hibás oldal-e vagy sem. Meg kell adnunk egy hibaoldalt, ha az alkalmazáson belül létrehozunk egy hibakezelőt az oldalunkhoz.

isThreadSafe

isThreadSafe alapértelmezett értéke igaz. isThreadSafe meghatározza, hogy a JSP használhatja-e a Servlet többszálas menetrendjét. Általában soha nem akarna

hogy kikapcsolja ezt a funkciót.

nyelv

nyelv meghatározza, hogy a JSP melyik szkriptnyelvet használja. Az alapértelmezett érték: Jáva.

ülés

ülés meghatározza, hogy fenntartja-e a HTTP munkamenetet. Alapértelmezésként igaz és elfogadja a igaz vagy hamis.

trimDirectiveWhitespaces

trimDirectiveWhitespaces a JSP-lapon lévő fehér tereket csíkolja, és a kód kompiláltabb blokkba tömörül fordítási időben. Ennek az értéknek a beállítása igaz segíthet a JSP kód méretének csökkentésében. Az alapértelmezett érték: hamis.

3. Három példa

Most, hogy áttekintettük a JSP központi elemeit, alkalmazzuk ezeket a fogalmakat néhány alapvető példára, amelyek segítenek az első JSP-kiszolgáló kiszolgálónk működésbe léptetésében!

Három fő módja van a Java injekciójának a .jsp-be történő injektálására, és ezeket a módszereket az alábbiakban vizsgáljuk meg a Java 8 és a Jakarta EE natív funkcióinak használatával.

Először a jelölő kiszolgáló oldalt jelenítjük meg kliens oldalon. Másodszor megvizsgáljuk, hogyan lehet Java-kódot közvetlenül hozzáadni a .jsp fájlunkhoz, függetlenül attól javax.servlet.http’S kérés és válasz tárgyakat.

Harmadszor bemutatjuk, hogyan továbbíthatjuk mind a kettőt HttpServletRequest egy meghatározott .jsp fájlhoz, és a szerver oldali feldolgozott Java-t kösse hozzá.

Állítsuk be projektünket az Eclipse-ben a Fájl / Új / Projekt / Web / Dinamikus webes projekt / típus, amelyet Tomcatban fognak vendégül látni! A projekt létrehozása után látnia kell:

| -projekt | - Webtartalom | - META-INF | - MANIFEST.MF | - WEB-INF | - lib | - src

Néhány fájlt hozzá fogunk adni az alkalmazás struktúrájához, hogy a végén:

| -project | - WebContent | - META-INF | - MANIFEST.MF | - WEB-INF | -lib * -web.xml | - ExampleTree.jsp | - ExampleTwo.jsp * - index.jsp | - src | - com | - baeldung * - ExampleOne.java * - ExampleThree.java

Állítsuk be index.jsp amely akkor jelenik meg, amikor elérjük az URL kontextust a Tomcat 8 alkalmazásban:

   JSP példák 

Itt hívhatja meg a Servlet: által nyújtott HTML-t

Java statikus oldalon: itt

Java a Servlet által injektálva: itt

Itt három van a, mindegyik hivatkozva az alábbiakban bemutatott példákra, a 4.1–4.4. szakaszban.

Arra is meg kell győződnünk, hogy megvan-e a miénk web.xml beállít:

 index.html index.htm index.jsp ExampleOne com.baeldung.ExampleOne ExampleOne / ExampleOne 

A legfontosabb megjegyzés: hogyan lehet minden szervletünket helyesen feltérképezni egy adott szervlet-leképezéshez. Ezzel társítja az egyes szervleteket egy meghatározott végponttal, ahol elfogyaszthatja! Most átnézzük az összes többi fájlt!

3.1. A HTML megjelenik a Servletben

Ebben a példában valóban kihagyjuk a .jsp fájl készítését!

Ehelyett létrehozunk egy sztring reprezentációt a jelölésünkről, majd a GET válaszra írjuk PrintWriter miután az ExampleOne Servlet GET kérést kapott:

public class ExampleOne kiterjeszti a HttpServlet {@Orride védett void doGet (HttpServletRequest kérés, HttpServletResponse válasz) dobja a ServletException, IOException {response.setContentType ("text / html"); PrintWriter out = response.getWriter (); out.println ("" + "" + "" + "A Servlet által nyújtott HTML" + "" + "" + "
" + "

Ezt az oldalt a ExampleOne Servlet!

" + "" + "" ); } }

Amit itt csinálunk, az közvetlenül a szervlet kérelmek kezelésével juttatja be a jelölőnket. JSP címke helyett pusztán kiszolgálóoldali, statikus JSP nélkül generáljuk a HTML-t, minden beillesztendő Java-specifikus adattal együtt!

Korábban áttekintettük a ki objektum, amelynek jellemzője JspWriter.

Fent én a PrintWriter objektum, amely közvetlenül a válasz tárgy.

JspWriter valójában pufferolja a memóriába írandó karakterláncot, amelyet aztán a válasz objektumok a memóriában lévő puffer kiürítése után.

PrintWriter már csatlakozik a válasz tárgy. Inkább írtam közvetlenül a válasz kifogást emeljen a fenti és az alábbi példákban.

3.2. Java JSP statikus tartalomban

Itt létrehozunk egy JSP fájlt PéldaTwo.jsp JSP címkével. Mint fent látható, ez lehetővé teszi a Java hozzáadását közvetlenül a jelölőnkbe. Itt véletlenszerűen kinyomtatjuk az a elemét Húr[]:

   Java statikus oldal példában 

Fent látható a változó deklaráció a JSP címkék objektumain belül: típusváltozóNév és egy inicializálás akárcsak a szokásos Java.

Felvettem a fenti példát, hogy bemutassam, hogyan lehet Java-t hozzáadni egy statikus oldalhoz anélkül, hogy egy adott szervlethez kellene fordulni. Itt a Java egyszerűen hozzáadódik egy oldalhoz, és a JSP életciklusa gondoskodik a többiről.

3.3. JSP továbbítással

Most pedig az utolsó és leginkább érintett példánkra! Itt fogjuk használni a @WebServlet annotáció a ExampleThree-n, amely kiküszöböli a szervlet-hozzárendelések szükségességét a server.xml.

@WebServlet (név = "PéldaThree", leírás = "JSP szervlet kommentárokkal", urlPatterns = {"/ ExampleThree"}) nyilvános osztály, a ExampleThree kiterjeszti a HttpServlet {@Override protected void doGet (HttpServletRequest kérés, HttpServletRepletRespontserviceResponse szolgáltatás Karakterlánc üzenet = request.getParameter ("üzenet"); request.setAttribute ("szöveg", üzenet); request.getRequestDispatcher ("/ ExampleThree.jsp"). továbbítás (kérés, válasz); }}

A ExampleThree az átadott URL-paramétert a következő néven veszi fel üzenet, a paraméterhez köti a kérés objektumot, majd ezt átirányítja kérés tiltakozni PéldaHárom.jsp.

Így nemcsak egy igazi eredményt értünk el dinamikus web tapasztalatokat, de ezt megtettük egy olyan alkalmazásban is, amely több .jsp fájlt tartalmaz.

getRequestDispatcher (). előre () egyszerű módja annak, hogy a helyes .jsp oldal megjelenjen.

Az összes adat a kérés Ekkor megjelenik az objektum (a .jsp fájl útja)! Így kezeljük az utolsó részt:

   Java kötési példa 

Azt mondta: $ {text}

Vegye figyelembe a tetejére adott JSP címkét PéldaHárom.jsp. Észre fogja venni, hogy ide cseréltem a JSP címkéket. Az Expression Language-t használom (amit már korábban említettem) a beállított paraméterünk megjelenítéséhez (amely a $ {text})!

3.4. Próbáld ki!

Most exportáljuk az alkalmazásunkat egy .war fájlba, amelyet a Tomcat 8 alkalmazásban kell elindítani és tárolni! Keresse meg server.xml és frissítjük a mi Kontextus nak nek:

Ez lehetővé teszi számunkra, hogy elérjük a szervleteket és a JSP-ket localhost: 8080 / spring-mvc-xml / jsp / index.jsp! Vegye át a munkapéldányt: GitHub. Gratula!

4. Következtetés

Elég sok földet borítottunk be! Megtudtuk, hogy mik a JavaServer Pages, mit kell bevezetniük, életciklusukat, hogyan kell létrehozni, és végül néhány különböző módon megvalósíthatjuk őket!

Ezzel befejeződik a JSP bevezetése! Légy jól és kódolj!