JavaRush /Java Blog /Random-TK /JSP näme? Mümkinçilikleri iş ýüzünde öwreneliň
Анзор Кармов
Dereje
Санкт-Петербург

JSP näme? Mümkinçilikleri iş ýüzünde öwreneliň

Toparda çap edildi
JSP ýa-da Java Serwer Sahypalary, Java programmalary üçin dinamiki web sahypalaryny döretmäge mümkinçilik berýän Java tehnologiýasydyr. Bu makalada JSP-iň nämedigi barada has jikme-jik gürleşeris, bu tehnologiýanyň käbir mümkinçiliklerini ara alyp maslahatlaşarys, JSP sahypalarynyň gurluşyna serederis we bu Java Serwer sahypalarynyň nämedigine amaly göz aýlamaga synanyşarys. JSP näme?  Amalda mümkinçiliklere düşünmek - 1Firstöne ilki bilen JSP-iň peýdalary we ähmiýeti barada gürleşeliň. JSP döredijä:
  • web sahypasyndan Java koduna maglumat almak;
  • Java kodundan web sahypasyna maglumat ibermek;
  • Java koduny göni html-iň içinde ýazyň (ýöne muny hyýanatçylykly ulanmaly dälsiňiz).
JSP bilimine zerurlygy birnäçe sebäplere görä gaty ýokary baha berip bolar:
  • JSP esasy Java web tehnologiýalarynyň biridir;
  • JSP kompaniýalaryň we taslamalaryň köpüsinde giňden ulanylýar;
  • JSP, servlet konteýneriniň içindäki Java servletleri bilen üznüksiz birleşýär.

JSP kesgitlemesi

Wikipediýadan kesgitleme: JSP (JavaServer Sahypalary) web döredijilere statiki we dinamiki komponentleri bolan mazmun döretmäge mümkinçilik berýän tehnologiýa. JSP sahypasynda tekstiň iki görnüşi bar: dinamiki mazmun döredýän HTML, SVG, WML ýa-da XML we JSP elementleriniň tekst formatlarynyň birinde bolup bilýän statiki çeşme maglumatlary. Mundan başga-da, JSP sahypalarynyň statiki mazmunyna Java koduny ornaşdyrmak üçin JSP bellik kitaphanalary, şeýle hem Expression Language (EL) ulanylyp bilner. JSP sahypa kody, Jasper JSP sahypa düzüjisini ulanyp, hyzmat Java koduna terjime edilýär we soňra Java Wirtual Machine (JVM) bytekodyna düzülýär. JSP sahypalaryny ýerine ýetirip bilýän servlet gaplary platforma garaşsyz Java dilinde ýazylýar. JSP tehnologiýasy, web programmalaryny ösdürmek üçin platforma garaşsyz, göçme we aňsat giňeldilýän tehnologiýa.

JSP sahypasynyň gurluşy

Umuman aýdanyňda, JSP dinamiki bölegi Java ulanyp, statiki bölegi bolsa köplenç HTML HTML bellik dilleri arkaly döredilýän dinamiki web sahypalaryna degişlidir. Şeýle sahypa, JSP elementleri (ýa-da JSP bellikleri) bilen kesişýän dilleriň birinde (HTML, SVG, WML we XML ýaly) ýazylan .jsp giňeltmesi bilen tekst resminamasydyr. Bu belliklerde serwer kody (maglumatlar) çagyryşlary bar we käbir hasaplamalary ýerine ýetirýär. Bu faýllar serwerde işlenýär, netijede ähli JSP bellikleri html belliklerine öwrülýär we çykyş adaty html sahypasydyr. Aşakdaky diagrammada JSP sahypasynyň gurluşynyň we serwer bilen gatnaşygy görkezilýär. JSP näme?  Amalda mümkinçiliklere düşünmek - 2Simpleönekeý JSP sahypasynyň mysaly:
<html>
  <body>
    <p> ${2 + 2} равно 4 </p>
  </body>
</html>
Bu mysalda, ýörite dilde ýazylan JSP aňlatmasy, aňlatma dili (EL), html kodunyň içinde “ýerleşdirildi” . Tanyşdyryş gatlagy (web sahypalary) we amaly iş logika gatlagy (Java kody) arasynda özara täsir etmek üçin möhüm mehanizmi üpjün edýär. Mysaldan görnüşi ýaly, JSP aňlatmasy öňdebaryjy dollar belgisi bilen egrilen ýaýlar bilen gurşalan - ${...}. Egri ýaýlaryň içindäki ähli zat serwerde bahalandyrylýar we bu aňlatmanyň netijesi JSP aňlatmasynyň başda kesgitlenen ýerinde html-de berilýär. Thehli bellikleri gaýtadan işlenenden soň sahypa şeýle bolar:
<html>
  <body>
    <p> 4 равно 4 </p>
  </body>
</html>

Serwet konteýnerini gurmak we işletmek

JSP kody Java servlet koduna terjime edilendigi sebäpli, JSP-iň işleýşi barada gürleşip biler ýaly bir ýerde bir hili servlet konteýner almaly. Otherwiseogsam, konteýner bolmasa JSP işlemez. Firstöne ilki bilen serwet konteýneriniň kesgitlemesine seredeliň. Servlet konteýner, hyzmatçylara ulgam goldawyny berýän we spesifikasiýalarda kesgitlenen düzgünlere laýyklykda ömrüni üpjün edýän serwerdir. Doly hukukly garaşsyz web serweri hökmünde işläp biler, başga bir web serweri üçin sahypa üpjünçisi bolup biler ýa-da Java EE amaly serwerine goşulyp biler. Iň meşhur servlet gaplaryndan biri Apache Tomcat. JSP näme?  Amalda mümkinçiliklere düşünmek - 3Tomcat-yň doly hukukly Java EE amaly serweri däldigini bellemelidiris. Şeýle-de bolsa, hyzmatçylaryň we JSP sahypalarynyň möhüm zerurlyklary üçin Tomcat serweri ýeterlik däl. Gurnamaga başlalyň. Tomkaty resmi sahypadan göçürip alyp bilersiňiz . Windows OS üçin Tomcat-y aşakdaky ýaly gurup bilersiňiz:
  1. 32-bit / 64-bit Windows Hyzmat Gurnaýjysyny göçürip alyň.

  2. Faýly işledeliň.

  3. Ondan soň adaty gurnama prosedurasyna eýeriň:

    1. Degişli gurnawçy penjiresinde Mysallar gutusyny barlamagy ýatdan çykarmaň:

      JSP näme?  Amalda mümkinçiliklere düşünmek - 4
    2. we öňünden gurlan JRE-e barýan ýoly kesgitläň:

      JSP näme?  Amalda mümkinçiliklere düşünmek - 5
  4. Gurlandan soň Tomcat-y işe giriziň we brauzeri açyň. Http: // localhost: 8080 / -e giriň .

Tomcat başlangyç sahypasyny görseňiz, gurnamagyň üstünlikli bolandygyny we serweriň işleýändigini aňladýar. Tomkaty el bilen başlamak we duruzmak üçin, bin katalogynda ýerine ýetirip boljak iki faýlyň birini işledip bilersiňiz. Tomcat gurlan katalogyň içinde ýerleşýär: JSP näme?  Amalda mümkinçiliklere düşünmek - 6

Demo goýmalary. Gizlin zatlar

Hereketdäki käbir JSP aýratynlyklaryna seredeliň. Olardan biri gizlin obýektlere ( Gümürtik obýektler ) girmekdir . Bular “Expression Language” (EL) ulanyp bolýan zatlar. Şeýle obýektlere mysal hökmünde HTTP sözbaşylary ýa-da URL parametrleri bar. URL parametrleriniň nämedigini açalyň (ýa-da ýadymyzy täzeläliň). Aşakdaky mysalda parametrleri bolan URL görkezilýär. Parametrler goýy görnüşde: http://example.net/foo/bar ? Param1 = value1¶m2 = value2 & a = 1 & name = Tom Parametrler elmydama sorag belgisi (?) Bilen başlaýar. Ondan soň parametriň ady, soň bolsa deň belgi bar - parametriň bahasy kesgitlenýär. Birnäçe ýa-da bir parametr bolup biler. Birden köp bolsa, her bir at-baha jübüti ampersand nyşan (&) bilen bölünýär. Aboveokardaky mysalda birnäçe parametrler we olaryň bahalary kesgitlenildi:
Parametriň ady Parametriň bahasy
param1 baha1
param2 baha2
a 1
ady Tom
JSP-de gizlin obýektlere, şol sanda URL parametrlerine nädip girip boljakdygyna göz aýlalyň. Munuň üçin “Tomcat” -y işe giriziň we http: // localhost: 8080 / sahypasyndaky brauzeri açyň / Soňra “Mysallar” sahypasyna giriň: JSP näme?  Amalda mümkinçiliklere düşünmek - 7Soňra “JSP” baglanyşygyna eýeriň Mysallar: JSP näme?  Amalda mümkinçiliklere düşünmek - 8Mysallar sahypasynda “Göçürilmedik obýektler” -> ýerine ýetirmek: JSP näme?  Amalda mümkinçiliklere düşünmek - 9Bu ýerde sahypada gizlin zatlary ulanmagyň mysalyny görüp bilersiňiz. Aşakda jikme-jik düşündirişler bilen sahypanyň skrinshoty bar: Sahypadaky degişli meýdany ulanyp, JSP näme?  Amalda mümkinçiliklere düşünmek - 10parametriň bahasyny üýtgedip görüň , soňra bu parametriň bahasynyň salgy setirinde hem üýtgändigine üns beriň. fooGörkezilen sahypanyň kän bir işlemegi ýok, ýöne belli bir gizlin obýekte girmek zerurlygy ýüze çykanda geljekde ýüz tutup boljak gowy salgylanma. Bu sahypa girip boljak gizlin obýektleriň sanawy bar. Aşakda bolsa, tablisada belli bir obýekte nädip girip boljakdygy görkezilýär.

JSP funksiýalary

Indi öňki sahypa gaýdyp geleliň we “gizlin zatlar” sahypasynyň deslapky koduna göz aýlalyň: JSP näme?  Amalda mümkinçiliklere düşünmek - 11Ine:
<%@page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<html>
  <head>
    <title>JSP 2.0 Expression Language - Implicit Objects</title>
  </head>
  <body>
    <h1>JSP 2.0 Expression Language - Implicit Objects</h1>
    <hr>
    This example illustrates some of the implicit objects available
    in the Expression Language.  The following implicit objects are
    available (not all illustrated here):
    <ul>
      <li>pageContext - the PageContext object</li>
      <li>pageScope - a Map that maps page-scoped attribute names to
          their values</li>
      <li>requestScope - a Map that maps request-scoped attribute names
          to their values</li>
      <li>sessionScope - a Map that maps session-scoped attribute names
          to their values</li>
      <li>applicationScope - a Map that maps application-scoped attribute
          names to their values</li>
      <li>param - a Map that maps parameter names to a single String
          parameter value</li>
      <li>paramValues - a Map that maps parameter names to a String[] of
          all values for that parameter</li>
      <li>header - a Map that maps header names to a single String
          header value</li>
      <li>headerValues - a Map that maps header names to a String[] of
          all values for that header</li>
      <li>initParam - a Map that maps context initialization parameter
          names to their String parameter value</li>
      <li>cookie - a Map that maps cookie names to a single Cookie object.</li>
    </ul>

    <blockquote>
      <u><b>Change Parameter</b></u>
      <form action="implicit-objects.jsp" method="GET">
          foo = <input type="text" name="foo" value="${fn:escapeXml(param["foo"])}">
          <input type="submit">
      </form>
      <br>
      <code>
        <table border="1">
          <thead>
            <td><b>EL Expression</b></td>
            <td><b>Result</b></td>
          </thead>
          <tr>
            <td>\${param.foo}</td>
            <td>${fn:escapeXml(param["foo"])} </td>
          </tr>
          <tr>
            <td>\${param["foo"]}</td>
            <td>${fn:escapeXml(param["foo"])} </td>
          </tr>
          <tr>
            <td>\${header["host"]}</td>
            <td>${fn:escapeXml(header["host"])} </td>
          </tr>
          <tr>
            <td>\${header["accept"]}</td>
            <td>${fn:escapeXml(header["accept"])} </td>
          </tr>
          <tr>
            <td>\${header["user-agent"]}</td>
            <td>${fn:escapeXml(header["user-agent"])} </td>
          </tr>
        </table>
      </code>
    </blockquote>
  </body>
</html>
HTML bilen tanyş bolsaňyz, sahypanyň deslapky kody size düşnükli bolmaly. Şu setirlere üns beriň:
<tr>
  <td>${param.foo}</td>
  <td>${fn:escapeXml(param["foo"])} </td>
</tr>
Bu ýerde html belliklerini <tr>we <td>. <td>Bellikler , egri ýaýlar bilen örtülen JSP bellikleri bilen yzarlanýar ${ }. Şeýle-de bolsa, URL parametriniň bahasynyň nähili çykýandygyna üns beriň foo:
${fn:escapeXml(param["foo"])}
Bahasy JSP funksiýasyny ulanmak arkaly çykýar fn:escapeXml(). JSP funksiýalary gaýtadan ulanyp boljak käbir funksiýalary öz içine alýar. Bu ýagdaýda XML gaçýar. JSP tehnologiýasy saýlamak üçin dürli funksiýalary, şeýle hem öz funksiýalaryňyzy döretmek ukybyny üpjün edýär. JSP-de bir funksiýa ulanmak üçin, JSP faýlyna kesgitlenen degişli kitaphanany import etmeli.

Kitaphanalary belläň

Aboveokardaky çeşme kodunyň (ikinji setir) başga bir setirine göz aýlalyň:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
Ine, bellik kitaphanalary import edilýär. Sintaksis içgin. Birnäçe zady kesgitleýäris:
  • taglib(bellik kitaphanasy - bellik kitaphanasy);
  • url, bu kitaphananyň ýerleşýän ýeri;
  • prefiksi (bu ýagdaýda fn) bu kitaphanada kesgitlenen funksiýalara jaň edip bolar.
Aboveokardaky mysalda, import funksiýalaryna göz aýladyk. Hususan-da, mysalymyzda JSTL (JSP Standard Tag Library) kitaphanasyny import etdik. JSTL, Tomcat ýaly her servlet we JSP ýerine ýetirişi bilen gelýän dürli kitaphanalaryň toplumyny öz içine alýan adaty bellik kitaphanasydyr. Anotherene bir meşhur bellik kitaphanasy şular ýaly import edilip bilinýän ýadro:
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
Şonuň ýaly-da fn, bellik cislege bagly we umumy kabul edilýär. Bu bellik, bu kitaphanalaryň ulanylýan ýerlerinde diýen ýaly tapylyp bilner. Esasy kitaphanadan bir funksiýanyň mysaly:
<c:out value = "${'<div>'}"/>
Bu funksiýa diňe belligi çykarar <div>. Bu funksiýa eýýäm XML-den gaçýar. Bu funksiýa howpsuzlyk nukdaýnazaryndan möhümdir, sebäbi üýtgeýänleriň bahasyny gönüden-göni çykaryp, ${variable}skript sanjymynyň gapysyny açýarys.

JSP redaktirlemesi

Indi täze bilimler bilen ýaraglanan, Tomkatyň içindäki demo programmasyna üýtgeşmeler girizmäge synanyşalyň. Munuň üçin bu hyzmat ediş konteýneriniň gurlan bukjasynyň içinde bu sahypanyň deslapky koduny taparys. Bu faýly aşakdaky salgydan tapyp bilersiňiz: ... \ Apache Programma üpjünçiligi gaznasy \ Tomcat 9.0 \ webapps \ mysallar \ jsp \ jsp2 \ el Soňra islendik tekst redaktorynda implik-objects.jsp faýly açyň Esasy kitaphananyň importyny goşuň , soň bolsa ulanyň Geliň, käbir tekst çykalyň: JSP näme?  Amalda mümkinçiliklere düşünmek - 12Indi gizlin obýektler sahypasyny täzeläliň we edilen üýtgeşmelere göz aýlalyň: JSP näme?  Amalda mümkinçiliklere düşünmek - 13

Netijeler

Şeýlelikde, JSP ýaly tehnologiýany ýüzleý gözden geçirdik. Ara alyp maslahatlaşdyk:
  • JSP näme?
  • JSP sahypasynyň gurluşy;
  • Tomcat servlet konteýnerini gurmagyň we işlemegiň tertibi;
  • Tomcat serwer paýlaýyş bukjasyna girýän gizlin zatlara girmek üçin demo programmasy;
  • JSP funksiýalary we bellik kitaphanalary.

Indiki näme?

Materiallary goramak üçin:
  1. Bu makalada beýan edilen zatlaryň hemmesini gaýtalaň.
  2. Tomcat serwerine goşulan beýleki demo programmalaryna serediň.
  3. Öz programmaňyzy ýazyň we hyzmat ediş konteýnerine ýerleşdiriň. Gollanma hökmünde IntelliJ Idea Enterprise-de ýönekeý web taslamasy döretmek makalasyny ulanyp bilersiňiz. Suratlar bilen ädimme-ädim.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION