Programmēšana

Kas ir JSP? Ievads JavaServer lapās

JavaServer Pages (JSP) ir Java standarta tehnoloģija, kas ļauj rakstīt dinamiskas, ar datiem pamatotas lapas Java tīmekļa lietojumprogrammām. JSP ir veidots virs Java Servlet specifikācijas. Abas tehnoloģijas parasti darbojas kopā, it īpaši vecākās Java tīmekļa lietojumprogrammās. No kodēšanas viedokļa visredzamākā atšķirība starp tām ir tā, ka ar servletiem jūs rakstāt Java kodu un pēc tam šajā kodā iegremdējat klienta puses marķējumu (piemēram, HTML), turpretī ar JSP sākat ar klienta puses skriptu vai marķējumu, pēc tam iegult JSP tagi, lai savienotu jūsu lapu ar Java aizmuguri.

JSP ir cieši saistīts arī ar JSF (JavaServer Faces), Java specifikāciju MVC (modeļa skata-kontroliera) tīmekļa lietojumprogrammu veidošanai. JSP ir salīdzinoši vienkāršāka un vecāka tehnoloģija nekā JSF, kas ir standarts Java tīmekļa ietvariem, piemēram, Eclipse Mojarra, MyFaces un PrimeFaces. Lai gan nereti JSP tiek izmantots kā priekšpuse vecākām JSF lietojumprogrammām, Facelets ir vēlamā skata tehnoloģija mūsdienu JSF ieviešanai.

Lai gan JSP, iespējams, nav jūsu pirmā izvēle dinamisku tīmekļa lapu veidošanai, tā ir Java tīmekļa pamattehnoloģija. JSP lapas ir samērā ātri un viegli izveidojamas, un tās vienmērīgi mijiedarbojas ar Java servletiem servletu konteinerā, piemēram, Tomcat. JSP saskarsies vecākās Java tīmekļa lietojumprogrammās, un laiku pa laikam tas var būt noderīgs vienkāršu, dinamisku Java tīmekļa lapu izveidošanai. Kā Java izstrādātājam jums vismaz jāpārzina JSP.

Šis raksts būs ātrs ievads JavaServer Pages, tostarp JSP Standard Tag Library (JSTL). Piemēri parāda, kā rakstīt vienkāršu HTML lapu, iegult JSP tagus, lai izveidotu savienojumu ar Java servletu, un palaist lapu servletīklu konteinerā.

Skatiet iepriekšējos šīs sērijas rakstus, lai uzzinātu vairāk par Java servletiem un JavaServer Faces.

JSP Džakartā EE

Pēc Java EE 8 izlaišanas Oracle pārcēla Java Enterprise Edition (Java EE) pārvaldību uz Eclipse Foundation. Turpmāk Java uzņēmuma platforma tiek pārdēvēta par Jakarta EE. Kopā ar Java Servlet un JSF specifikācijām JSP ir viena no Java tīmekļa tehnoloģijām, kas iekļauta pastāvīgam atbalstam un jauninājumiem Džakarta EE.

JSP lapu rakstīšana

Vienkārša JSP lapa (.jsp) sastāv no HTML iezīmēm, kas iegultas ar JSP tagiem. Kad fails tiek apstrādāts serverī, HTML tiek renderēts kā lietojumprogrammas skats, Web lapa. Iegultie JSP tagi tiks izmantoti, lai izsauktu servera puses kodu un datus. 1. attēlā redzamā diagramma parāda mijiedarbību starp HTML, JSP un tīmekļa lietojumprogrammu serveri.

Metjū Taisons

1. saraksts parāda vienkāršu JSP lapu.

Saraksts 1. Vienkārša JSP lapa

$ {2 * 2} jābūt vienādam ar 4

Sarakstā 1 redzat HTML bloku, kas ietver a JSP izteiksme, kas ir instrukcija Java serverim, kas rakstīta, izmantojot izteiksmes valodu (EL). Izteiksmē "${2 * 2}",${}"ir JSP sintakse koda interpolēšanai HTML. Pēc izpildes JSP parādīs izpildes rezultātus neatkarīgi no tā, kas atrodas izteiksmē. Šajā gadījumā izeja būs skaitlis 4.

JSP servleta tvertnē

JSP lapām jābūt izvietotām Java servleta konteinerā. Lai izvietotu Java tīmekļa lietojumprogrammu, kuras pamatā ir JSP un servleti, savus .jsp failus, Java kodu un lietojumprogrammas metadatus iesaiņos .war failā, kas ir vienkāršs .zip fails ar parastu tīmekļa lietojumprogrammu struktūru.

Kad JSP būs ielādēts servleta konteinerā, tas tiks apkopots servletī. JSP un Java servletiem ir līdzīgas īpašības, tostarp iespēja piekļūt pieprasījuma objektiem un atbildēt uz tiem. Apache Tomcat 9x ir Servlet 4.0 un JSP 2.3 specifikāciju atsauces ieviešana. (Ņemiet vērā, ka atjauninājumi starp JSP 2.2 un 2.3 ir salīdzinoši nelieli.)

Serverkleta konteiners pret lietojumprogrammu serveri

Java pasaulē a servletu trauks, kas pazīstams arī kā tīmekļa serveris, ir kā lietojumprogrammu servera vienkāršotā (alus) versija. Serversīklu konteiners apstrādā pieprasījumu un atbilžu mijiedarbību un ļauj šīm mijiedarbībām mijiedarboties ar Java uzņēmuma apakškopu tīmekļa lietojumprogrammām. Java lietojumprogrammu serveris ietver servleta konteineru kā daļu no pilnas Java uzņēmuma kaudzes, ieskaitot EJB, JPA, JMS un daudz ko citu.

JSP lietotnes piemērs

Lai sāktu darbu ar JavaServer Pages, mēs izmantosim piemēru Tomcat. Ja jums vēl nav instalēts Tomcat, pārlūkojiet Tomcat lejupielādes lapu un izvēlieties operētājsistēmas Tomcat instalāciju. Kopš šī raksta Tomcat 9 ir pašreizējais izlaidums, kas ir saderīgs ar Servlet 4.0 un JSP 2.3.

Jūs varat instalēt Tomcat kā Windows pakalpojumu vai palaist to no komandrindas ar /bin/catalina.sh sākums vai /bin/catalina.bat. Katrā ziņā palaidiet Tomcat un pēc tam dodieties uz vietējais saimnieks: 8080 lai redzētu Tomcat sveiciena lapu, kas parādīta 2. attēlā.

Metjū Taisons

Netiešie objekti Tomcat

Tomcat sveiciena lapā noklikšķiniet uz Piemēri noklikšķiniet uz JSP piemēri.

Pēc tam atveriet Netiešo objektu izpilde tīmekļa lietojumprogramma. 3. attēlā parādīta šīs lietojumprogrammas izeja. Veltiet minūti laika, lai izpētītu šo rezultātu.

Metjū Taisons

Pieprasīt parametrus

Netiešie objekti ir iebūvēti objekti, kuriem var piekļūt, izmantojot JSP lapu. Kā tīmekļa lapu izstrādātājs jūs izmantosiet šos objektus, lai izveidotu piekļuvi tādām lietām kā pieprasījuma parametri, kas ir dati, kas nosūtīti no pārlūkprogrammas, izsniedzot HTTP pieprasījumu. Apsveriet netiešo objektu pārlūkprogrammas URL:

 //localhost:8080/examples/jsp/jsp2/el/implicit-objects.jsp?foo=bar 

Param ir ? foo = bārs, un jūs varat redzēt, kā tas atspoguļojas tīmekļa lapas izvadē, kur tabulā parādīts “EL Expression” un vērtība ir “bar”. Lai to pārbaudītu, nomainiet URL uz //localhost:8080/examples/jsp/jsp2/el/implicit-objects.jsp?foo=zork, sist Enter, un jūs redzēsiet izmaiņas atspoguļotas izvadē.

Šis piemērs ir ļoti vienkāršs ievads JSP tagu izmantošanai, lai piekļūtu servera puses pieprasījuma parametriem. Šajā gadījumā JSP lapā tiek izmantots iebūvētais (netiešais) objekts, ko sauc param lai piekļūtu tīmekļa lietojumprogrammas pieprasījuma parametriem. The param objekts ir pieejams JSP izteiksmes sintaksē, kuru redzējāt 1. sarakstā.

Šajā piemērā mēs izmantojām izteiksmi, lai veiktu matemātiku: ${2 * 2}, kura izeja 4.

Šajā piemērā izteiksme tiek izmantota, lai piekļūtu objektam un laukam šajā objektā: $ {param.foo}.

JSP tīmekļa lietojumprogrammā

Netiešo objektu lapā noklikšķiniet uz muguras bultiņas, kam seko Avots saite. Tas novedīs jūs pie netiešo objektu tīmekļa lietotnes JSP koda, kas ir parādīts 2. sarakstā.

Saraksts 2. JSP kods tīmekļa lietojumprogrammai Implicit Objects

     JSP 2.0 izteiksmes valoda - netieši objekti 
Šis piemērs ilustrē dažus netiešos objektus, kas pieejami izteiksmes valodā. Ir pieejami šādi netiešie objekti (ne visi šeit ir parādīti):
  • pageContext - objekts PageContext
  • pageScope - karte, kas kartē ar lapām saistītu atribūtu nosaukumus atbilstoši to vērtībām
  • requestScope - karte, kas kartē pieprasījuma apjoma atribūtu nosaukumus to vērtībām
  • sessionScope - karte, kas kartē sesijas diapazona atribūtu nosaukumus atbilstoši to vērtībām
  • applicationScope - karte, kas kartē lietojumprogrammas aptverto atribūtu nosaukumus atbilstoši to vērtībām
  • param - karte, kas parametru nosaukumus kartē ar vienu virknes parametra vērtību
  • paramValues ​​- karte, kurā parametru nosaukumus kartē virknei [] no visām šī parametra vērtībām
  • header - karte, kas kartē galvenes nosaukumus uz vienu virknes galvenes vērtību
  • headerValues ​​- karte, kas kartē galvenes nosaukumus virknei [] ar visām šīs galvenes vērtībām
  • initParam - karte, kas attēlo konteksta inicializācijas parametru nosaukumus to virknes parametru vērtībai
  • sīkdatne - karte, kas kartē sīkfailu nosaukumus vienam sīkdatņu objektam.
Mainīt parametru foo =

EL izteiksmeRezultāts
\ $ {param.foo}$ {fn: escapeXml (param ["foo"])}}
\ $ {param ["foo"]}$ {fn: escapeXml (param ["foo"])}}
\ $ {header ["host"]}$ {fn: escapeXml (galvene ["resursdators"])}
\ $ {header ["pieņemt"]}$ {fn: escapeXml (galvene ["pieņemt"])}
\ $ {header ["user-agent"]}$ {fn: escapeXml (galvene ["user-agent"])}

JSP funkcijas

Ja esat iepazinies ar HTML, 2. sarakstam vajadzētu izskatīties diezgan pazīstamam. Jums ir paredzamais HTML elementi, kam seko ${ } JSP izteiksmes sintakse, kas ieviesta sarakstā 1. Bet ievērojiet vērtība priekš param.foo: $ {fn: escapeXml (param ["foo"])}} . "fn: escapeXML ()"ir JSP funkcija.

A JSP funkcija ietver atkārtoti izmantojamas funkcionalitātes daļu. Šajā gadījumā funkcionalitāte ir izvairīšanās no XML. JSP piedāvā dažādas funkcijas, un jūs varat arī izveidot funkcijas pats. Lai izmantotu funkciju, importējiet tās bibliotēku savā JSP lapā un pēc tam izsauciet funkciju.

Sarakstā 2 escapeXML funkcija ir iekļauta rindā:

Sintakse ir diezgan skaidra: tā importē nepieciešamās funkcijas un piešķir tām prefiksu (šajā gadījumā "fn"), kuru var izmantot visās turpmākajās izteiksmēs.

JSP standarta tagu bibliotēka (JSTL)

The importēt 2 zvanu sarakstā taglib, kas ir īss tagu bibliotēkavai (šajā gadījumā) JSP standarta tagu bibliotēka (JSTL). Tagu bibliotēkas nosaka atkārtoti izmantojamus JSP funkcionalitātes bitus. JSTL ir standarta tagu bibliotēka, kurā ir taglibu kolekcija, kas tiek piegādāta ar katru serveri un JSP ieviešanu, ieskaitot Tomcat.

"Funkciju" bibliotēka ir tikai viens no taglibiem, kas iekļauti JSTL. Vēl viens izplatīts taglib ir kodols bibliotēka, kuru importējat, zvanot:

Tāpat kā "fn", arī "c" apzīmējums ir parasts, un jūs to redzēsiet lielākajā daļā JSP lapu.

JSP lapu drošība

Taga paraugs no galvenās bibliotēkas ir

kas izdod tags ar XML jau ir izbēdzis. Šī funkcija ir svarīga, jo satura izvade tieši uz tīmekļa lapu, izmantojot $ {mainīgais} paver durvis scenārija injekcijas uzbrukumiem. Šo vienkāršo funkciju izmanto, lai aizsargātu tīmekļa lapas no šādiem uzbrukumiem.

Galvenajā bibliotēkā ir iekļauti arī dažādi iterācijas un plūsmas kontroles tagi (piemēram, IF / ELSE apstrāde).

JSTL tagu klasifikācijas

JSTL ir pieci tagu komplekti, no kuriem katrs ir paredzēts konkrētai tīmekļa lietojumprogrammu funkcionalitātes jomai:

  • JSTL kodols: Nodarbošanās ar loģiku un izpildes plūsmu; parastā atzīme: "c"
  • JSTL formatēšana: Nodarbošanās ar formatēšanu (piemēram, datumiem) un internacionalizācija; parastā atzīme: "fmt".
  • JSTL SQL: darīšana ar vaicājumiem SQL datu bāzēs (skata slānī tas parasti nav ieteicams); parastā atzīme: "kvl".
  • JSTL XML: Darbs ar XML dokumentiem; parastā atzīme: "x".
  • JSTL funkcijas: Nodarbojas galvenokārt ar virkņu manipulācijām; parastā atzīme: "fn".

Zvanīšana taglibs JSP lapās

Tagad, kad jums ir JSP pamatinformācija, veiciet izmaiņas lietojumprogrammas piemērā. Lai sāktu, Tomcat instalācijā atrodiet lietotni Implicit Object. Ceļš ir: apache-tomcat-8.5.33 / webapps / piemēri / jsp / jsp2 / el.

Atveriet šo failu un atrodiet funkcijas ietver:

tieši zem šīs līnijas pievienojiet jaunu rindu:

Noklikšķiniet uz Return un pievienojiet vēl vienu jaunu rindu:

Tagad atkārtoti ielādējiet lapu vietnē //localhost:8080/examples/jsp/jsp2/el/implicit-objects.jsp?foo=bar.

Jums vajadzētu redzēt, ka jūsu atjauninājumi tiek atspoguļoti izvadē.

$config[zx-auto] not found$config[zx-overlay] not found