JavaRush /Java blogi /Random-UZ /JSP nima? Keling, imkoniyatlarni amalda ko'rib chiqaylik
Анзор Кармов
Daraja
Санкт-Петербург

JSP nima? Keling, imkoniyatlarni amalda ko'rib chiqaylik

Guruhda nashr etilgan
JSP yoki Java Server Pages Java-dasturlari uchun dinamik veb-sahifalarni yaratish imkonini beruvchi Java texnologiyasidir. Ushbu maqolada biz JSP nima ekanligi haqida batafsilroq gaplashamiz, ushbu texnologiyaning ba'zi imkoniyatlarini muhokama qilamiz, JSP sahifalarining tuzilishini ko'rib chiqamiz, shuningdek, ushbu Java Server sahifalari nima ekanligini amaliy ko'rib chiqishga harakat qilamiz. JSP nima?  Imkoniyatlarni amalda tushunish - 1Lekin birinchi navbatda JSP ning afzalliklari va ahamiyati haqida gapiraylik. JSP dasturchiga quyidagilarga imkon beradi:
  • veb-sahifadan Java kodiga ma'lumotlarni qabul qilish;
  • Java kodidan veb-sahifaga ma'lumotlarni yuborish;
  • Java kodini to'g'ridan-to'g'ri html ichiga yozing (ammo buni suiiste'mol qilmaslik kerak).
JSP bilimlariga bo'lgan ehtiyoj bir necha sabablarga ko'ra juda yuqori baholanishi mumkin:
  • JSP asosiy Java veb-texnologiyalaridan biridir;
  • JSP ko'pchilik kompaniyalar va loyihalarda keng qo'llaniladi;
  • JSP servlet konteyneri ichidagi Java servletlari bilan muammosiz birlashadi.

JSP ta'rifi

Mana Vikipediyadan ta'rif: JSP (JavaServer Pages) bu veb-ishlab chiquvchilarga ham statik, ham dinamik komponentlarga ega kontent yaratish imkonini beruvchi texnologiya. JSP sahifasi ikki turdagi matnni o'z ichiga oladi: HTML, SVG, WML yoki XML matn formatlaridan birida bo'lishi mumkin bo'lgan statik manba ma'lumotlari va dinamik tarkibni yaratuvchi JSP elementlari. Bundan tashqari, JSP teglar kutubxonalari, shuningdek, Java kodini JSP sahifalarining statik tarkibiga joylashtirish uchun Expression Language (EL) dan foydalanish mumkin. JSP sahifa kodi Jasper JSP sahifa kompilyatori yordamida servlet Java kodiga tarjima qilinadi va keyin Java Virtual Machine (JVM) bayt-kodiga kompilyatsiya qilinadi. JSP sahifalarini bajarishga qodir bo'lgan servlet konteynerlari platformadan mustaqil Java tilida yozilgan. JSP texnologiyasi veb-ilovalarni ishlab chiqish uchun platformadan mustaqil, portativ va oson kengaytiriladigan texnologiyadir.

JSP sahifa tuzilishi

Umuman olganda, JSP dinamik veb-sahifalarni nazarda tutadi, ularning dinamik qismi Java yordamida, statik qismi esa belgilash tillari, ko'pincha HTML yordamida yaratiladi. Bunday sahifa JSP elementlari (yoki JSP teglari) bilan kesishgan belgilash tillaridan birida (HTML, SVG, WML va XML kabi) yozilgan .jsp kengaytmali matn hujjatidir. Ushbu teglar server kodiga (ma'lumotlarga) qo'ng'iroqlarni o'z ichiga oladi va shuningdek, ba'zi hisob-kitoblarni amalga oshiradi. Bu fayllar serverda qayta ishlanadi, buning natijasida barcha JSP teglari html teglariga aylantiriladi va chiqishi oddiy html sahifa hisoblanadi. Quyidagi diagrammada JSP sahifasining tuzilishi va uning server bilan o'zaro aloqasi diagrammasi ko'rsatilgan. JSP nima?  Imkoniyatlarni amalda tushunish - 2Oddiy JSP sahifasiga misol:
<html>
  <body>
    <p> ${2 + 2} равно 4 </p>
  </body>
</html>
Ushbu misolda, maxsus tilda, Expression Language (EL) da yozilgan JSP ifodasi html kodiga "ko'milgan" . U taqdimot qatlami (veb-sahifalar) va amaliy biznes mantiqiy qatlami (Java kodi) o'rtasidagi o'zaro ta'sirning muhim mexanizmini ta'minlaydi. Misoldan ko'rinib turibdiki, JSP ifodasi jingalak qavslar ichida, yetakchi dollar belgisi bilan - ${...}. Jingalak qavslar ichidagi hamma narsa serverda baholanadi va bu ifodaning natijasi JSP ifodasi dastlab belgilangan joyda html da berilgan. Barcha teglarni qayta ishlagandan so'ng, sahifa quyidagicha ko'rinadi:
<html>
  <body>
    <p> 4 равно 4 </p>
  </body>
</html>

Servlet konteynerini o'rnatish va ishga tushirish

JSP kodi Java servlet kodiga tarjima qilinganligi sababli, JSP qanday ishlashi haqida gaplashishimiz uchun biror joyda servlet konteynerini olishimiz kerak. Aks holda, konteynersiz JSP ishlamaydi. Lekin birinchi navbatda, servlet konteynerining ta'rifini ko'rib chiqaylik. Servlet konteyneri - bu servletlar uchun tizimni qo'llab-quvvatlashni ta'minlaydigan va texnik xususiyatlarda belgilangan qoidalarga muvofiq ularning hayot aylanishini ta'minlaydigan server bo'lgan dastur. U to'liq huquqli mustaqil veb-server sifatida ishlashi, boshqa veb-server uchun sahifa provayderi bo'lishi yoki Java EE dastur serveriga integratsiyalashishi mumkin. Eng mashhur servlet konteynerlaridan biri bu Apache Tomcat. JSP nima?  Imkoniyatlarni amalda tushunish - 3Shuni ta'kidlash kerakki, Tomcat to'liq huquqli Java EE dastur serveri emas. Biroq, servletlar va JSP sahifalarining hayotiy ehtiyojlari uchun Tomcat serveri etarli. O'rnatishni boshlaylik. Tomcat-ni rasmiy sahifadan yuklab olishingiz mumkin . Windows OS uchun Tomcat-ni quyidagi tarzda o'rnatishingiz mumkin:
  1. 32-bit/64-bit Windows Service Installer dasturini yuklab oling.

  2. Keling, faylni ishga tushiramiz.

  3. Keyinchalik, odatdagi o'rnatish tartibini bajaring:

    1. Tegishli o'rnatuvchi oynasida "Misollar" katagiga belgi qo'yishni unutmang:

      JSP nima?  Imkoniyatlarni amalda tushunish - 4
    2. va oldindan o'rnatilgan JREga yo'lni belgilang:

      JSP nima?  Imkoniyatlarni amalda tushunish - 5
  4. O'rnatishdan so'ng Tomcat-ni ishga tushiring va brauzerni oching. http://localhost:8080/ ga o'ting .

Agar Tomcat boshlang'ich sahifasini ko'rsangiz, bu o'rnatish muvaffaqiyatli bo'lganligini va server ishlayotganligini anglatadi. Tomcat-ni qo'lda ishga tushirish va to'xtatish uchun siz bin katalogidagi ikkita bajariladigan fayldan birini ishga tushirishingiz mumkin. U Tomcat o'rnatilgan katalog ichida joylashgan: JSP nima?  Imkoniyatlarni amalda tushunish - 6

Demo ilovalar. Yashirin ob'ektlar

Keling, ba'zi JSP xususiyatlarini amalda ko'rib chiqaylik. Ulardan biri yashirin ob'ektlar deb ataladigan kirishdir ( Implicit Objects ). Bular Expression Language (EL) yordamida kirish mumkin bo'lgan ob'ektlardir. Bunday ob'ektlarga misollar HTTP sarlavhalari yoki URL parametrlari. Keling, URL parametrlari nima ekanligini oshkor qilaylik (yoki xotiramizni yangilaymiz). Quyidagi misolda parametrlarga ega URL ko'rsatilgan. Parametrlar qalin qilib yozilgan: http://example.net/foo/bar ?param1=value1¶m2=value2&a=1&name=Tom Parametrlar har doim savol belgisi (?) bilan boshlanadi. Undan keyin parametr nomi, keyin esa tenglik belgisi qo'yiladi - parametrning qiymati aniqlanadi. Bir nechta yoki bitta parametr bo'lishi mumkin. Agar bir nechta bo'lsa, har bir nom-qiymat juftligi ampersand belgisi (&) bilan ajratiladi. Yuqoridagi misolda bir nechta parametrlar va ularning qiymatlari aniqlangan:
Parametr nomi Parametr qiymati
param1 qiymat 1
param2 qiymat 2
a 1
nomi Tom
Keling, JSP-da yashirin ob'ektlarga, jumladan URL parametrlariga qanday kirishingiz mumkinligini ko'rib chiqaylik. Buni amalga oshirish uchun Tomcat-ni ishga tushiring va http://localhost:8080/ sahifasida brauzerni oching. Keyin Misollar sahifasiga o'ting: JSP nima?  Imkoniyatlarni amalda tushunish - 7Keyin JSP havolasiga o'ting Misollar: JSP nima?  Imkoniyatlarni amalda tushunish - 8Misollar sahifasida Implicit Objects -> Execute havolasiga o'ting JSP nima?  Imkoniyatlarni amalda tushunish - 9. sahifada siz yashirin ob'ektlardan foydalanish misolini ko'rishingiz mumkin. Quyida batafsil tushuntirishlar bilan sahifaning skrinshoti keltirilgan: sahifadagi tegishli maydon yordamida JSP nima?  Imkoniyatlarni amaliyotda tushunish - 10parametr qiymatini o'zgartirishga harakat qiling , so'ngra ushbu parametrning qiymati manzil satrida ham o'zgarganiga e'tibor bering. fooTaqdim etilgan sahifa juda ko'p funksiyalarga ega emas, lekin kelajakda ma'lum bir yashirin ob'ektga kirish kerak bo'lganda murojaat qilishingiz mumkin bo'lgan yaxshi ma'lumotnoma. Ushbu sahifada kirish mumkin bo'lgan yashirin ob'ektlar ro'yxati mavjud. Va quyida, jadvalda ma'lum bir ob'ektga qanday kirishingiz mumkinligi ko'rsatilgan.

JSP funktsiyalari

Endi oldingi sahifaga qaytaylik va "yashirin ob'ektlar" sahifasining manba kodini ko'rib chiqaylik: JSP nima?  Imkoniyatlarni amalda tushunish - 11Mana:
<%@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>
Agar siz HTML bilan tanish bo'lsangiz, sahifaning manba kodi siz uchun juda aniq bo'lishi kerak. Ushbu qatorlarga e'tibor bering:
<tr>
  <td>${param.foo}</td>
  <td>${fn:escapeXml(param["foo"])} </td>
</tr>
Bu yerda biz html teglarini <tr>va <td>. Teglardan keyin <td>jingalak qavslarga o'ralgan JSP teglari keladi ${ }. Biroq, URL parametrining qiymati qanday chiqarilishiga e'tibor bering foo:
${fn:escapeXml(param["foo"])}
Qiymat JSP funksiyasidan foydalanish orqali chiqariladi fn:escapeXml(). JSP funktsiyalari qayta ishlatilishi mumkin bo'lgan ba'zi funktsiyalarni o'z ichiga oladi. Bunday holda, u XML-dan qochib ketadi. JSP texnologiyasi tanlash uchun keng funksiyalarni, shuningdek, o‘z funksiyalaringizni yaratish imkoniyatini beradi. JSP da funksiyadan foydalanish uchun JSP fayliga funksiya belgilangan tegishli kutubxonani import qilishingiz kerak.

Teg kutubxonalari

Keling, yuqoridagi manba kodining boshqa qatorini (ikkinchi qator) ko'rib chiqaylik:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
Teglar kutubxonalari shunday import qilinadi. Sintaksis intuitivdir. Biz bir nechta narsalarni aniqlaymiz:
  • taglib(teglar kutubxonasi - teglar kutubxonasi);
  • url, bu kutubxona qaerda joylashgan;
  • prefiks (bu holda fn) bu kutubxonada belgilangan funktsiyalarni chaqirish mumkin bo'ladi.
Yuqoridagi misolda biz funktsiyalarni import qilishni ko'rib chiqdik. Xususan, bizning misolimizda biz JSTL (JSP Standard Tag Library) kutubxonasini import qildik. JSTL standart teglar kutubxonasi boʻlib, u har bir servlet va JSP ilovasi, jumladan Tomcat bilan birga keladigan turli xil kutubxonalar toʻplamini oʻz ichiga oladi. Yana bir mashhur teglar kutubxonasi yadro bo'lib, uni quyidagicha import qilish mumkin:
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
dagi kabi fn, belgi cixtiyoriy va umumiy qabul qilinadi. Ushbu belgini ushbu kutubxonalar ishlatiladigan deyarli hamma joyda topish mumkin. Mana asosiy kutubxonadan funksiyaga misol:
<c:out value = "${'<div>'}"/>
Bu funksiya shunchaki tegni chiqaradi <div>. Bu funksiya allaqachon XML dan qochishni amalga oshiradi. Bu funksiya xavfsizlik nuqtai nazaridan muhim, chunki o'zgaruvchilar qiymatini to'g'ridan-to'g'ri orqali chiqarish orqali ${variable}biz skript kiritish uchun eshikni ochamiz.

JSP tahrirlash

Keling, yangi bilimlar bilan qurollangan holda, Tomcat ichidagi demo ilovasiga o'zgartirishlar kiritishga harakat qilaylik. Buning uchun biz ushbu sahifaning manba kodini ushbu servlet konteyneri o'rnatilgan papka ichida topamiz. Ushbu faylni quyidagi manzilda topish mumkin: ...\Apache Software Foundation\Tomcat 9.0\webapps\examples\jsp\jsp2\el Keyin istalgan matn muharririda implicit-objects.jsp faylini oching. Asosiy kutubxona importini qo'shing. , va undan keyin foydalaning Keling, bir oz matn chiqaramiz: JSP nima?  Imkoniyatlarni amalda tushunish - 12Endi yashirin ob'ektlar sahifasini yangilaymiz va kiritilgan o'zgarishlarni ko'rib chiqamiz: JSP nima?  Imkoniyatlarni amalda tushunish - 13

Natijalar

Shunday qilib, biz JSP kabi texnologiyani yuzaki ko'rib chiqdik. Biz muhokama qildik:
  • JSP nima;
  • JSP sahifa tuzilishi;
  • Tomcat servlet konteynerini o'rnatish va ishga tushirish tartibi;
  • Tomcat server tarqatish paketiga kiritilgan yashirin ob'ektlarga kirish uchun demo ilovasi;
  • JSP funktsiyalari va teglar kutubxonalari.

Keyin nima?

Materialni himoya qilish uchun siz:
  1. Ushbu maqolada tasvirlangan hamma narsani takrorlang.
  2. Tomcat serveriga kiritilgan boshqa demo ilovalarni ko'rib chiqing.
  3. O'zingizning ilovangizni yozing va uni servlet konteyneriga joylashtiring. Qo'llanma sifatida siz IntelliJ Idea Enterprise-da oddiy veb-loyiha yaratish maqolasidan foydalanishingiz mumkin. Bosqichma-bosqich, rasmlar bilan.
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION