JavaRush /Java блогы /Random-KK /JSP дегеніміз не? Мүмкіндіктерді тәжірибеде қарастырайық
Анзор Кармов
Деңгей
Санкт-Петербург

JSP дегеніміз не? Мүмкіндіктерді тәжірибеде қарастырайық

Топта жарияланған
JSP немесе Java Server Pages — Java қолданбалары үшін динамикалық веб-беттерді жасауға мүмкіндік беретін Java технологиясы. Бұл мақалада біз JSP деген не екендігі туралы толығырақ сөйлесетін боламыз, осы технологияның кейбір мүмкіндіктерін талқылаймыз, JSP беттерінің құрылымын қарастырамыз, сонымен қатар осы Java server беттерінің не екенін практикалық тұрғыдан қарастыруға тырысамыз. JSP дегеніміз не?  Мүмкіндіктерді тәжірибеде түсіну – 1Бірақ алдымен JSP артықшылықтары мен маңыздылығы туралы сөйлесейік. JSP әзірлеушіге мүмкіндік береді:
  • веб-беттен Java codeына деректерді алу;
  • Java codeынан деректерді веб-бетке жіберу;
  • Java codeын тікелей html ішіне жазыңыз (бірақ оны теріс пайдаланбау керек).
JSP білімінің қажеттілігі бірнеше себептерге байланысты өте жоғары бағалануы мүмкін:
  • JSP – Java веб-технологияларының негізгілерінің бірі;
  • JSP көптеген компаниялар мен жобаларда кеңінен қолданылады;
  • JSP сервлет контейнеріндегі Java сервлеттерімен үздіксіз біріктіріледі.

JSP анықтамасы

Міне Wikipedia анықтамасы: JSP (JavaServer Pages) — веб-әзірлеушілерге статикалық және динамикалық құрамдастары бар мазмұнды жасауға мүмкіндік беретін технология. JSP бетінде мәтіннің екі түрі бар: HTML, SVG, WML немесе XML мәтін пішімдерінің бірінде болуы мүмкін статикалық бастапқы деректер және динамикалық мазмұнды құрайтын JSP элементтері. Бұған қоса, JSP тегтер кітапханаларын, сондай-ақ Java codeын JSP беттерінің статикалық мазмұнына ендіру үшін Expression Language (EL) пайдалануға болады. JSP бет codeы Jasper JSP бет компиляторы арқылы сервлет Java codeына аударылады, содан кейін Java виртуалды машинасының (JVM) byte codeына құрастырылады. JSP беттерін орындауға қабілетті сервлет контейнерлері платформаға тәуелсіз Java тілінде жазылған. JSP технологиясы веб-қосымшаларды әзірлеуге арналған платформадан тәуелсіз, портативті және оңай кеңейтілетін технология.

JSP бет құрылымы

Жалпы JSP динамикалық веб-беттерге жатады, олардың динамикалық бөлігі Java көмегімен, ал статикалық бөлігі белгілеу тілдері, көбінесе HTML арқылы жасалады. Мұндай бет JSP элементтерімен (немесе JSP тегтерімен) қиылысатын белгілеу тілдерінің бірінде (HTML, SVG, WML және XML сияқты) жазылған .jsp кеңейтімі бар мәтіндік құжат болып табылады. Бұл тегтер server codeына (деректерге) шақыруларды қамтиды және сонымен қатар кейбір есептеулерді орындайды. Бұл файлдар serverде өңделеді, нәтижесінде барлық JSP тегтері html тегтеріне түрленеді, ал шығуы кәдімгі html беті болып табылады. Төмендегі диаграмма JSP беті құрылымының және оның serverмен әрекеттесуінің диаграммасын көрсетеді. JSP дегеніміз не?  Мүмкіндіктерді тәжірибеде түсіну – 2Қарапайым JSP бетінің мысалы:
<html>
  <body>
    <p> ${2 + 2} равно 4 </p>
  </body>
</html>
Бұл мысалда арнайы тілде жазылған JSP өрнегі Expression Language (EL) html codeының ішіне «енгізілген» . Ол презентация деңгейі (веб-беттер) мен қолданбалы бизнес логикалық деңгейі (Java codeы) арасындағы өзара әрекеттесу үшін маңызды механизмді қамтамасыз етеді. Мысалдан көріп отырғаныңыздай, JSP өрнегі бұрма жақшаға алынған, алдыңғы доллар белгісі - ${...}. Бұйра жақшалар ішіндегі барлық нәрсе serverде бағаланады және бұл өрнектің нәтижесі JSP өрнегі бастапқыда анықталған жерде html түрінде беріледі. Барлық тегтерді өңдегеннен кейін бет келесідей болады:
<html>
  <body>
    <p> 4 равно 4 </p>
  </body>
</html>

Сервлет контейнерін орнату және іске қосу

JSP codeы Java сервлет codeына аударылғандықтан, JSP қалай жұмыс істейтіні туралы сөйлесу үшін бір жерден сервлет контейнерінің қандай да бір түрін алуымыз керек. Әйтпесе, контейнерсіз JSP жұмыс істемейді. Бірақ алдымен сервлет контейнерінің анықтамасын қарастырайық. Сервлет контейнері – бұл сервлеттерге жүйелік қолдау көрсететін және техникалық сипаттамаларда анықталған ережелерге сәйкес олардың өмірлік циклін қамтамасыз ететін server болып табылатын бағдарлама. Ол толыққанды тәуелсіз веб-server ретінде жұмыс істей алады, басқа веб-server үшін бет провайдері бола алады немесе Java EE қолданбалы serverіне біріктіре алады. Ең танымал сервлет контейнерлерінің бірі - Apache Tomcat. JSP дегеніміз не?  Мүмкіндіктерді тәжірибеде түсіну – 3Айта кету керек, Tomcat толыққанды Java EE қолданбалы serverі емес. Дегенмен, сервлеттер мен JSP беттерінің маңызды қажеттіліктері үшін Tomcat serverі жеткілікті. Орнатуды бастайық. Сіз Tomcat-ті ресми беттен жүктей аласыз . Windows ОЖ үшін Tomcat бағдарламасын келесідей орнатуға болады:
  1. 32-бит/64-биттік Windows Service Installer бағдарламасын жүктеп алыңыз.

  2. Файлды іске қосайық.

  3. Содан кейін әдеттегі орнату proceduresасын орындаңыз:

    1. Сәйкес орнатушы терезесіндегі Мысалдар құсбелгісін қоюды ұмытпаңыз:

      JSP дегеніміз не?  Мүмкіндіктерді тәжірибеде түсіну – 4
    2. және алдын ала орнатылған JRE жолын көрсетіңіз:

      JSP дегеніміз не?  Мүмкіндіктерді тәжірибеде түсіну – 5
  4. Орнатқаннан кейін Tomcat іске қосыңыз және шолғышты ашыңыз. http://localhost:8080/ өтіңіз .

Егер сіз Tomcat бастапқы бетін көрсеңіз, бұл орнату сәтті болды және server жұмыс істеп тұр дегенді білдіреді. Tomcat қолданбасын қолмен іске қосу және тоқтату үшін bin каталогындағы екі орындалатын файлдың бірін іске қосуға болады. Ол Tomcat орнатылған каталогтың ішінде орналасқан: JSP дегеніміз не?  Мүмкіндіктерді тәжірибеде түсіну – 6

Демо қолданбалар. Жасырын нысандар

Кейбір JSP мүмкіндіктерін әрекетте қарастырайық. Олардың бірі жасырын нысандар деп аталатын қол жеткізу болып табылады ( Implicit Objects ). Бұлар Expression Language (EL) арқылы қол жеткізуге болатын нысандар. Мұндай нысандардың мысалдары HTTP тақырыптары немесе URL параметрлері болып табылады. URL параметрлері қандай екенін ашайық (немесе жадымызды жаңартайық). Төмендегі мысал параметрлері бар URL мекенжайын көрсетеді. Параметрлер қою шрифтпен жазылған: http://example.net/foo/bar ?param1=value1¶m2=value2&a=1&name=Tom Параметрлер әрқашан сұрақ белгісімен (?) басталады. Одан кейін параметрдің аты, одан кейін теңдік белгісі қойылады – параметрдің мәні анықталады. Бірнеше немесе бір параметр болуы мүмкін. Біреуден көп болса, әрбір атау-мән жұбы амперсанд таңбасы (&) арқылы бөлінеді. Жоғарыдағы мысалда бірнеше параметрлер мен олардың мәндері анықталды:
Параметр аты Параметр мәні
парам1 мән1
параметр2 мән2
а 1
аты Том
JSP ішіндегі жасырын нысандарға, соның ішінде URL параметрлеріне қалай қол жеткізуге болатынын қарастырайық. Ол үшін Tomcat іске қосыңыз және http://localhost:8080/ бетіндегі шолғышты ашыңыз, содан кейін Мысалдар бетіне өтіңіз: JSP дегеніміз не?  Мүмкіндіктерді тәжірибеде түсіну – 7Содан кейін JSP сілтемесін орындаңыз Мысалдар: JSP дегеніміз не?  Мүмкіндіктерді тәжірибеде түсіну – 8Мысалдар бетінде Implicit Objects -> Execute сілтемесін орындаңыз: JSP дегеніміз не?  Мүмкіндіктерді тәжірибеде түсіну – 9Бұл жерде бетте сіз жасырын нысандарды пайдалану мысалын көре аласыз. Төменде егжей-тегжейлі түсініктемелері бар беттің скриншоты берілген: JSP дегеніміз не?  Мүмкіндіктерді тәжірибеде түсіну – 10Параметрдің мәнін fooбеттегі сәйкес өрісті пайдаланып өзгертіп көріңіз, содан кейін мекенжай жолағында осы параметрдің мәні де өзгергенін байқаңыз. Ұсынылған беттің көп функционалдығы жоқ, бірақ ол болашақта белгілі бір жасырын нысанға кіру қажет болғанда сілтеме жасай алатын жақсы анықтама болып табылады. Бұл бетте қол жеткізуге болатын жасырын нысандардың тізімі бар. Ал төменде кестеде белгілі бір нысанға қалай қол жеткізуге болатыны көрсетілген.

JSP функциялары

Енді алдыңғы бетке оралайық және «жасырын нысандар» бетінің бастапқы codeын қарастырайық: JSP дегеніміз не?  Мүмкіндіктерді тәжірибеде түсіну – 11Міне:
<%@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-мен таныс болсаңыз, беттің бастапқы codeы сізге анық болуы керек. Мына жолдарға назар аударыңыз:
<tr>
  <td>${param.foo}</td>
  <td>${fn:escapeXml(param["foo"])} </td>
</tr>
<tr>Мұнда біз html тегтерін және көреміз <td>. <td>Tagтерден кейін бұйра жақшаға оралған JSP тегтері келеді ${ }. Дегенмен, URL параметрінің мәні қалай шығарылатынына назар аударыңыз foo:
${fn:escapeXml(param["foo"])}
Мән JSP функциясын пайдалану арқылы шығарылады fn:escapeXml(). JSP функциялары қайта пайдалануға болатын кейбір функцияларды инкапсуляциялайды. Бұл жағдайда XML қашып кетеді. JSP технологиясы таңдауға болатын функциялардың кең ауқымын, сондай-ақ өз функцияларыңызды жасау мүмкіндігін береді. JSP ішінде функцияны пайдалану үшін JSP файлына функция анықталған сәйкес кітапхананы импорттауыңыз керек.

Кітапханаларды тегтер

Жоғарыдағы бастапқы codeтың басқа жолын (екінші жол) қарастырайық:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
Tagтер кітапханалары осылай импортталады. Синтаксис интуитивті. Біз бірнеше нәрсені анықтаймыз:
  • taglib(тегтер кітапханасы - тегтер кітапханасы);
  • url, бұл кітапхана қайда орналасқан;
  • префикс (бұл жағдайда fn), ол арқылы осы кітапханада анықталған функцияларды шақыруға болады.
Жоғарыдағы мысалда біз импорттау функцияларын қарастырдық. Атап айтқанда, біздің мысалда біз JSTL (JSP Standard Tag Library) кітапханасын импорттадық. JSTL — Tomcat қоса алғанда әрбір сервлетпен және JSP іске асыруымен бірге келетін әртүрлі кітапханалар жинағын қамтитын стандартты тегтер кітапханасы. Тағы бір танымал тегтер кітапханасы ядро ​​болып табылады, оны келесідей импорттауға болады:
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
сияқты fn, белгілеу cміндетті емес және жалпы қабылданған. Бұл белгілеуді осы кітапханалар пайдаланылатын барлық жерде дерлік табуға болады. Мұнда негізгі кітапханадағы функцияның мысалы келтірілген:
<c:out value = "${'<div>'}"/>
Бұл функция тек тегті шығарады <div>. Бұл функция қазірдің өзінде XML қашуын жасайды. Бұл функция қауіпсіздік тұрғысынан маңызды, себебі айнымалы мәндерді тікелей арқылы шығару арқылы ${variable}біз сценарийді енгізу есігін ашамыз.

JSP өңдеу

Енді жаңа біліммен қаруланып, Tomcat ішіндегі демо-қосымшаға өзгертулер енгізуге тырысайық. Ол үшін осы сервлет контейнері орнатылған қалтаның ішінен осы беттің бастапқы codeын табамыз. Бұл файлды мына мекенжайда табуға болады: ...\Apache Software Foundation\Tomcat 9.0\webapps\examples\jsp\jsp2\el Содан кейін кез келген мәтіндік редакторда implicit-objects.jsp файлын ашыңыз. Негізгі кітапхананың импортын қосыңыз. , содан кейін оны пайдаланыңыз Біраз мәтінді шығарайық: JSP дегеніміз не?  Мүмкіндіктерді тәжірибеде түсіну – 12Енді жасырын нысандар бетін жаңартып, енгізілген өзгерістерді қарастырайық: JSP дегеніміз не?  Мүмкіндіктерді тәжірибеде түсіну – 13

Нәтижелер

Сонымен, біз JSP сияқты технологияны үстірт қарастырдық. Біз талқыладық:
  • JSP дегеніміз не;
  • JSP бет құрылымы;
  • Tomcat сервлет контейнерін орнату және іске қосу тәртібі;
  • Tomcat serverінің тарату пакетіне кіретін жасырын an objectілерге қол жеткізуге арналған демо-қосымша;
  • JSP функциялары және тегтер кітапханалары.

Ары қарай не?

Материалды бекіту үшін сіз:
  1. Осы мақалада сипатталған барлық нәрсені қайталаңыз.
  2. Tomcat serverіне қосылған басқа демонстрациялық қолданбаларды қарастырыңыз.
  3. Өз қолданбаңызды жазыңыз және оны сервлет контейнеріне орналастырыңыз. Нұсқау ретінде IntelliJ Idea Enterprise бағдарламасында қарапайым веб-жобаны жасау мақаласын пайдалануға болады. Біртіндеп, суреттермен.
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION