JavaRush /Blog Java /Random-MS /Apa itu JSP? Mari kita terokai kemungkinan dalam amalan
Анзор Кармов
Tahap
Санкт-Петербург

Apa itu JSP? Mari kita terokai kemungkinan dalam amalan

Diterbitkan dalam kumpulan
JSP atau Java Server Pages ialah teknologi Java yang membolehkan anda membuat halaman web dinamik untuk aplikasi Java. Dalam artikel ini, kita akan bercakap dengan lebih terperinci tentang apa itu JSP, membincangkan beberapa keupayaan teknologi ini, melihat struktur halaman JSP, dan juga cuba melihat secara praktikal apakah Halaman Pelayan Java ini. Apa itu JSP?  Memahami kemungkinan dalam amalan - 1Tetapi pertama, mari kita bercakap tentang faedah dan kepentingan JSP. JSP membenarkan pembangun untuk:
  • menerima data dari halaman web ke dalam kod Java;
  • menghantar data dari kod Java ke halaman web;
  • tulis kod Java terus di dalam html (namun, anda tidak sepatutnya menyalahgunakan ini).
Keperluan untuk pengetahuan JSP boleh dinilai dengan agak tinggi atas beberapa sebab:
  • JSP ialah salah satu teknologi web Java utama;
  • JSP digunakan secara meluas dalam kebanyakan syarikat dan projek;
  • JSP menyepadukan dengan lancar dengan servlet Java di dalam bekas servlet.

Definisi JSP

Berikut ialah definisi daripada Wikipedia: JSP (JavaServer Pages) ialah teknologi yang membolehkan pembangun web mencipta kandungan yang mempunyai komponen statik dan dinamik. Halaman JSP mengandungi dua jenis teks: data sumber statik, yang boleh dalam salah satu format teks elemen HTML, SVG, WML atau XML dan JSP, yang membina kandungan dinamik. Selain itu, perpustakaan tag JSP boleh digunakan, serta Bahasa Ungkapan (EL) untuk membenamkan kod Java ke dalam kandungan statik halaman JSP. Kod halaman JSP diterjemahkan ke dalam kod Java servlet menggunakan pengkompil halaman Jasper JSP, dan kemudian disusun ke dalam kod bait Java Virtual Machine (JVM). Bekas Servlet yang mampu melaksanakan halaman JSP ditulis dalam bahasa Java bebas platform. Teknologi JSP ialah teknologi bebas platform, mudah alih dan mudah diperluaskan untuk membangunkan aplikasi web.

Struktur halaman JSP

Secara umum, JSP merujuk kepada halaman web dinamik di mana bahagian dinamik dijana menggunakan Java, dan bahagian statik dijana menggunakan bahasa penanda, selalunya HTML. Halaman sedemikian ialah dokumen teks dengan sambungan .jsp, ditulis dalam salah satu bahasa penanda (seperti HTML, SVG, WML dan XML), diselingi dengan elemen JSP (atau tag JSP). Tag ini mengandungi panggilan ke kod pelayan (data) dan juga melakukan beberapa pengiraan. Fail-fail ini diproses pada pelayan, akibatnya semua teg JSP ditukar kepada teg html, dan outputnya ialah halaman html biasa. Rajah di bawah menunjukkan rajah struktur halaman JSP dan interaksinya dengan pelayan. Apa itu JSP?  Memahami kemungkinan dalam amalan - 2Contoh halaman JSP mudah:
<html>
  <body>
    <p> ${2 + 2} равно 4 </p>
  </body>
</html>
Dalam contoh ini, ungkapan JSP yang ditulis dalam bahasa khas, Bahasa Ungkapan (EL), "terbenam" di dalam kod html . Ia menyediakan mekanisme penting untuk interaksi antara lapisan pembentangan (halaman web) dan lapisan logik perniagaan aplikasi (kod Java). Seperti yang anda boleh lihat daripada contoh, ungkapan JSP disertakan dalam pendakap kerinting, dengan tanda dolar terkemuka - ${...}. Semua yang ada di dalam pendakap kerinting dinilai pada pelayan, dan hasil ungkapan ini diberikan dalam html, di tempat ungkapan JSP pada asalnya ditakrifkan. Selepas memproses semua teg, halaman akan kelihatan seperti ini:
<html>
  <body>
    <p> 4 равно 4 </p>
  </body>
</html>

Memasang dan menjalankan bekas servlet

Memandangkan kod JSP diterjemahkan ke dalam kod servlet Java, kita perlu mendapatkan beberapa jenis bekas servlet di suatu tempat supaya kita boleh bercakap tentang cara JSP berfungsi. Jika tidak, tanpa bekas, JSP tidak akan berfungsi. Tetapi pertama, mari kita lihat definisi bekas servlet. Bekas servlet ialah program yang merupakan pelayan yang menyediakan sokongan sistem untuk servlet dan memastikan kitaran hayatnya mengikut peraturan yang ditakrifkan dalam spesifikasi. Ia boleh berfungsi sebagai pelayan web bebas sepenuhnya, menjadi pembekal halaman untuk pelayan web lain, atau disepadukan ke dalam pelayan aplikasi Java EE. Salah satu bekas servlet yang paling popular ialah Apache Tomcat. Apa itu JSP?  Memahami kemungkinan dalam amalan - 3Perlu dinyatakan bahawa Tomcat bukanlah pelayan aplikasi Java EE yang lengkap. Walau bagaimanapun, untuk keperluan penting servlet dan halaman JSP, pelayan Tomcat adalah lebih daripada mencukupi. Mari mulakan pemasangan. Anda boleh memuat turun Tomcat dari halaman rasmi . Untuk OS Windows anda boleh memasang Tomcat seperti berikut:
  1. Muat turun Pemasang Perkhidmatan Windows 32-bit/64-bit.

  2. Mari jalankan fail.

  3. Seterusnya, ikuti prosedur pemasangan biasa:

    1. Jangan lupa untuk menyemak kotak semak Contoh pada tetingkap pemasang yang sepadan:

      Apa itu JSP?  Memahami kemungkinan dalam amalan - 4
    2. dan tentukan laluan ke JRE yang diprapasang:

      Apa itu JSP?  Memahami kemungkinan dalam amalan - 5
  4. Selepas pemasangan, lancarkan Tomcat dan buka penyemak imbas. Pergi ke http://localhost:8080/ .

Jika anda melihat halaman permulaan Tomcat, ini bermakna pemasangan berjaya dan pelayan sedang berjalan. Untuk memulakan dan menghentikan Tomcat secara manual, anda boleh menjalankan salah satu daripada dua fail boleh laku dalam direktori bin. Ia terletak di dalam direktori tempat Tomcat dipasang: Apa itu JSP?  Memahami kemungkinan dalam amalan - 6

Aplikasi demo. Objek tersembunyi

Mari lihat beberapa ciri JSP dalam tindakan. Salah satunya ialah akses kepada apa yang dipanggil objek tersembunyi ( Objek Tersirat ). Ini adalah objek yang boleh diakses menggunakan Bahasa Ungkapan (EL). Contoh objek tersebut ialah pengepala HTTP atau parameter URL. Mari kita dedahkan (atau segarkan semula ingatan kita) apakah parameter URL. Contoh di bawah menunjukkan URL dengan parameter. Parameter dalam huruf tebal: http://example.net/foo/bar ?param1=value1¶m2=value2&a=1&name=Tom Parameter sentiasa bermula dengan tanda soal (?). Ini diikuti dengan nama parameter, diikuti dengan tanda sama - nilai parameter ditentukan. Terdapat beberapa atau satu parameter. Jika terdapat lebih daripada satu, setiap pasangan nilai nama dipisahkan oleh aksara ampersand (&). Dalam contoh di atas, beberapa parameter dan nilainya ditakrifkan:
Nama parameter Nilai parameter
param1 nilai1
param2 nilai2
a 1
nama Tom
Mari kita lihat bagaimana anda boleh mengakses objek tersembunyi dalam JSP, termasuk parameter URL. Untuk melakukan ini, lancarkan Tomcat dan buka penyemak imbas pada halaman http://localhost:8080/ Kemudian pergi ke halaman Contoh: Apa itu JSP?  Memahami kemungkinan dalam amalan - 7Kemudian ikuti pautan Contoh JSP: Apa itu JSP?  Memahami kemungkinan dalam amalan - 8Pada halaman contoh ikut pautan Objek Tersirat -> Laksanakan: Apa itu JSP?  Memahami kemungkinan dalam amalan - 9Pada ini halaman anda boleh melihat contoh penggunaan objek tersembunyi. Di bawah ialah tangkapan skrin halaman dengan penjelasan terperinci: Apa itu JSP?  Memahami kemungkinan dalam amalan - 10Cuba tukar nilai parameter foomenggunakan medan yang sepadan pada halaman, kemudian perhatikan bahawa nilai parameter ini juga telah berubah dalam bar alamat. Halaman yang dibentangkan tidak mempunyai banyak fungsi, tetapi ia adalah rujukan yang baik yang boleh anda rujuk pada masa hadapan apabila anda perlu mengakses objek tersembunyi tertentu. Halaman ini mengandungi senarai objek tersembunyi yang boleh diakses. Dan di bawah, dalam jadual, ia ditunjukkan bagaimana anda boleh mengakses objek tertentu.

fungsi JSP

Sekarang mari kita kembali ke halaman sebelumnya dan lihat kod sumber halaman "objek tersembunyi": Apa itu JSP?  Memahami kemungkinan dalam amalan - 11Ini dia:
<%@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>
Jika anda biasa dengan HTML, kod sumber halaman haruslah jelas kepada anda. Perhatikan baris ini:
<tr>
  <td>${param.foo}</td>
  <td>${fn:escapeXml(param["foo"])} </td>
</tr>
Di sini kita melihat tag html <tr>dan <td>. Teg diikuti dengan <td>tag JSP, dibalut dengan pendakap kerinting ${ }. Walau bagaimanapun, perhatikan bagaimana nilai parameter URL dikeluarkan foo:
${fn:escapeXml(param["foo"])}
Nilai dikeluarkan melalui penggunaan fungsi JSP fn:escapeXml(). Fungsi JSP merangkumi beberapa fungsi yang boleh digunakan semula. Dalam kes ini, ia adalah XML melarikan diri. Teknologi JSP menyediakan pelbagai fungsi untuk dipilih, serta keupayaan untuk mencipta fungsi anda sendiri. Untuk menggunakan fungsi dalam JSP, anda mesti mengimport perpustakaan yang sesuai di mana fungsi itu ditakrifkan ke dalam fail JSP.

Tag perpustakaan

Mari kita lihat satu lagi baris kod sumber (baris kedua) di atas:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
Beginilah cara perpustakaan teg diimport. Sintaks adalah intuitif. Kami mentakrifkan beberapa perkara:
  • taglib(pustaka tag - perpustakaan tag);
  • url, di mana perpustakaan ini terletak;
  • awalan (dalam kes ini fn) yang membolehkan anda memanggil fungsi yang ditakrifkan dalam perpustakaan ini.
Dalam contoh di atas, kami melihat fungsi mengimport. Khususnya, dalam contoh kami, kami mengimport pustaka JSTL (JSP Standard Tag Library). JSTL ialah perpustakaan teg standard yang mengandungi satu set perpustakaan berbeza yang disertakan dengan setiap servlet dan pelaksanaan JSP, termasuk Tomcat. Satu lagi perpustakaan teg popular ialah teras, yang boleh diimport seperti ini:
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
Seperti fn, tatatanda cadalah pilihan dan diterima umum. Penamaan ini boleh didapati hampir di mana-mana tempat perpustakaan ini digunakan. Berikut ialah contoh fungsi daripada pustaka teras:
<c:out value = "${'<div>'}"/>
Fungsi ini hanya akan mengeluarkan tag <div>. Fungsi ini sudah melakukan pelarian XML. Fungsi ini penting dari sudut keselamatan, kerana dengan mengeluarkan nilai pembolehubah secara langsung, melalui ${variable}, kami membuka pintu kepada suntikan skrip.

Penyuntingan JSP

Kini, berbekalkan pengetahuan baharu, mari cuba buat perubahan pada aplikasi demo di dalam Tomcat. Untuk melakukan ini, kami akan mencari kod sumber halaman ini di dalam folder di mana bekas servlet ini dipasang. Fail ini boleh ditemui di alamat berikut: ...\Apache Software Foundation\Tomcat 9.0\webapps\examples\jsp\jsp2\el Kemudian buka fail implicit-objects.jsp dalam mana-mana editor teks Tambah import perpustakaan teras , dan kemudian gunakannya Mari keluarkan beberapa teks: Apa itu JSP?  Memahami kemungkinan dalam amalan - 12Sekarang mari muat semula halaman objek tersembunyi dan lihat perubahan yang dibuat: Apa itu JSP?  Memahami kemungkinan dalam amalan - 13

Keputusan

Oleh itu, kami telah mengkaji secara cetek teknologi seperti JSP. Kami telah berbincang:
  • apakah itu JSP;
  • Struktur halaman JSP;
  • prosedur untuk memasang dan menjalankan bekas servlet Tomcat;
  • aplikasi demo untuk mengakses objek tersembunyi, yang disertakan dalam pakej pengedaran pelayan Tomcat;
  • Fungsi JSP dan perpustakaan tag.

Apa yang akan datang?

Untuk mengamankan bahan, anda boleh:
  1. Ulangi semua yang diterangkan dalam artikel ini.
  2. Pertimbangkan aplikasi demo lain yang disertakan dengan pelayan Tomcat.
  3. Tulis aplikasi anda sendiri dan gunakannya ke bekas servlet. Sebagai panduan, anda boleh menggunakan artikel Mencipta projek web mudah dalam IntelliJ Idea Enterprise. Langkah demi langkah, dengan gambar.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION