JavaRush /Java Blog /Random-ID /Apa itu JSP? Mari kita jelajahi kemungkinannya dalam prak...
Анзор Кармов
Level 31
Санкт-Петербург

Apa itu JSP? Mari kita jelajahi kemungkinannya dalam praktik

Dipublikasikan di grup Random-ID
JSP atau Java Server Pages adalah teknologi Java yang memungkinkan Anda membuat halaman web dinamis untuk aplikasi Java. Pada artikel kali ini kita akan membahas lebih detail tentang apa itu JSP, membahas beberapa kemampuan teknologi ini, melihat struktur halaman JSP, dan juga mencoba melihat secara praktis apa itu Halaman Server Java. Apa itu JSP?  Memahami kemungkinan dalam praktik - 1Tapi pertama-tama, mari kita bicara tentang manfaat dan pentingnya JSP. JSP memungkinkan pengembang untuk:
  • menerima data dari halaman web ke dalam kode Java;
  • mengirim data dari kode Java ke halaman web;
  • tulis kode Java langsung di dalam html (namun, Anda tidak boleh menyalahgunakannya).
Kebutuhan akan pengetahuan JSP dinilai cukup tinggi karena beberapa alasan:
  • JSP adalah salah satu teknologi web utama Java;
  • JSP banyak digunakan di sebagian besar perusahaan dan proyek;
  • JSP terintegrasi secara mulus dengan servlet Java di dalam wadah servlet.

Definisi JSP

Berikut definisi dari Wikipedia: JSP (JavaServer Pages) adalah teknologi yang memungkinkan pengembang web membuat konten yang memiliki komponen statis dan dinamis. Halaman JSP berisi dua jenis teks: data sumber statis, yang dapat berupa salah satu format teks HTML, SVG, WML, atau XML, dan elemen JSP, yang membuat konten dinamis. Selain itu, pustaka tag JSP dapat digunakan, serta Bahasa Ekspresi (EL) untuk menyematkan kode Java ke dalam konten statis halaman JSP. Kode halaman JSP diterjemahkan ke dalam kode Java servlet menggunakan kompiler halaman Jasper JSP, dan kemudian dikompilasi ke dalam bytecode Java Virtual Machine (JVM). Kontainer servlet yang mampu mengeksekusi halaman JSP ditulis dalam bahasa Java yang tidak bergantung pada platform. Teknologi JSP adalah teknologi yang tidak bergantung pada platform, portabel, dan mudah diperluas untuk mengembangkan aplikasi web.

Struktur halaman JSP

Secara umum, JSP mengacu pada halaman web dinamis di mana bagian dinamis dihasilkan menggunakan Java, dan bagian statis dihasilkan menggunakan bahasa markup, paling sering HTML. Halaman tersebut adalah dokumen teks dengan ekstensi .jsp, ditulis dalam salah satu bahasa markup (seperti HTML, SVG, WML dan XML), diselingi dengan elemen JSP (atau tag JSP). Tag ini berisi panggilan ke kode server (data) dan juga melakukan beberapa perhitungan. File-file ini diproses di server, sebagai hasilnya semua tag JSP diubah menjadi tag html, dan hasilnya adalah halaman html biasa. Diagram di bawah menunjukkan diagram struktur halaman JSP dan interaksinya dengan server. Apa itu JSP?  Memahami kemungkinan dalam praktik - 2Contoh halaman JSP sederhana:
<html>
  <body>
    <p> ${2 + 2} равно 4 </p>
  </body>
</html>
Dalam contoh ini, ekspresi JSP yang ditulis dalam bahasa khusus, Expression Language (EL), “disematkan” di dalam kode html . Ini menyediakan mekanisme penting untuk interaksi antara lapisan presentasi (halaman web) dan lapisan logika bisnis aplikasi (kode Java). Seperti yang dapat Anda lihat dari contoh, ekspresi JSP diapit kurung kurawal, dengan tanda dolar di depannya - ${...}. Segala sesuatu yang ada di dalam kurung kurawal dievaluasi di server, dan hasil ekspresi ini diberikan dalam html, di tempat ekspresi JSP awalnya didefinisikan. Setelah memproses semua tag, halaman akan terlihat seperti ini:
<html>
  <body>
    <p> 4 равно 4 </p>
  </body>
</html>

Menginstal dan menjalankan wadah servlet

Karena kode JSP diterjemahkan ke dalam kode servlet Java, kita perlu mendapatkan semacam wadah servlet di suatu tempat sehingga kita dapat membicarakan cara kerja JSP. Jika tidak, tanpa container, JSP tidak akan berfungsi. Tapi pertama-tama, mari kita lihat definisi container servlet. Kontainer servlet adalah program server yang menyediakan dukungan sistem untuk servlet dan memastikan siklus hidupnya sesuai dengan aturan yang ditentukan dalam spesifikasi. Ini dapat berfungsi sebagai server web independen penuh, menjadi penyedia halaman untuk server web lain, atau berintegrasi ke dalam server aplikasi Java EE. Salah satu container servlet yang paling populer adalah Apache Tomcat. Apa itu JSP?  Memahami kemungkinan dalam praktik - 3Perlu disebutkan bahwa Tomcat bukanlah server aplikasi Java EE yang lengkap. Namun, untuk kebutuhan vital halaman servlet dan JSP, server Tomcat sudah lebih dari cukup. Mari kita mulai instalasinya. Anda dapat mengunduh Tomcat dari halaman resminya . Untuk OS Windows Anda dapat menginstal Tomcat sebagai berikut:
  1. Unduh Penginstal Layanan Windows 32-bit/64-bit.

  2. Mari kita jalankan filenya.

  3. Selanjutnya, ikuti prosedur instalasi seperti biasa:

    1. Jangan lupa untuk mencentang kotak Contoh di jendela penginstal yang sesuai:

      Apa itu JSP?  Memahami kemungkinan dalam praktik - 4
    2. dan tentukan jalur ke JRE yang sudah diinstal sebelumnya:

      Apa itu JSP?  Memahami kemungkinan dalam praktik - 5
  4. Setelah instalasi, luncurkan Tomcat dan buka browser. Kunjungi http://localhost:8080/ .

Jika Anda melihat halaman awal Tomcat, berarti instalasi berhasil dan server berjalan. Untuk memulai dan menghentikan Tomcat secara manual, Anda dapat menjalankan salah satu dari dua file yang dapat dieksekusi di direktori bin. Itu terletak di dalam direktori tempat Tomcat diinstal: Apa itu JSP?  Memahami kemungkinan dalam praktik - 6

Aplikasi demo. Objek tersembunyi

Mari kita lihat beberapa fitur JSP beraksi. Salah satunya adalah akses ke apa yang disebut objek tersembunyi ( Objek Implisit ). Ini adalah objek yang dapat diakses menggunakan Expression Language (EL). Contoh objek tersebut adalah header HTTP atau parameter URL. Mari kita ungkapkan (atau segarkan ingatan kita) apa itu parameter URL. Contoh di bawah ini menunjukkan URL dengan parameter. Parameter dicetak tebal: http://example.net/foo/bar ?param1=value1¶m2=value2&a=1&name=Tom Parameter selalu diawali dengan tanda tanya (?). Ini diikuti dengan nama parameter, diikuti dengan tanda sama dengan - nilai parameter ditentukan. Mungkin ada beberapa atau satu parameter. Jika ada lebih dari satu, setiap pasangan nama-nilai dipisahkan dengan karakter ampersand (&). Pada contoh di atas, beberapa parameter dan nilainya ditentukan:
Nama parameter Nilai parameter
param1 nilai1
param2 nilai2
A 1
nama Tom
Mari kita lihat bagaimana Anda dapat mengakses objek tersembunyi di JSP, termasuk parameter URL. Untuk melakukan ini, luncurkan Tomcat dan buka browser di halaman http://localhost:8080/ Lalu pergi ke halaman Contoh: Apa itu JSP?  Memahami kemungkinan dalam praktik - 7Kemudian ikuti tautan Contoh JSP: Apa itu JSP?  Memahami kemungkinan dalam praktik - 8Pada halaman contoh ikuti tautan Objek Implisit -> Jalankan: Apa itu JSP?  Memahami kemungkinan dalam praktik - 9Di sini halaman Anda dapat melihat contoh penggunaan benda tersembunyi. Di bawah ini adalah tangkapan layar halaman tersebut dengan penjelasan detailnya: Apa itu JSP?  Memahami kemungkinan dalam praktik - 10Coba ubah nilai parameter foomenggunakan kolom terkait di halaman tersebut, lalu perhatikan bahwa nilai parameter ini juga telah berubah di bilah alamat. Halaman yang disajikan tidak memiliki banyak fungsi, tetapi ini adalah referensi bagus yang dapat Anda rujuk di masa mendatang ketika Anda perlu mengakses objek tersembunyi tertentu. Halaman ini berisi daftar objek tersembunyi yang dapat diakses. Dan di bawah, dalam tabel, ditunjukkan bagaimana Anda dapat mengakses objek tertentu.

fungsi JSP

Sekarang mari kita kembali ke halaman sebelumnya dan melihat kode sumber dari halaman “objek tersembunyi”: Apa itu JSP?  Memahami kemungkinan dalam praktik - 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 familiar dengan HTML, kode sumber halamannya seharusnya cukup jelas bagi Anda. Perhatikan baris-baris ini:
<tr>
  <td>${param.foo}</td>
  <td>${fn:escapeXml(param["foo"])} </td>
</tr>
Di sini kita melihat tag html <tr>dan <td>. Tag tersebut diikuti oleh <td>tag JSP, dibungkus dengan kurung kurawal ${ }. Namun, perhatikan bagaimana nilai parameter URL dihasilkan foo:
${fn:escapeXml(param["foo"])}
Nilainya dikeluarkan melalui penggunaan fungsi JSP fn:escapeXml(). Fungsi JSP merangkum beberapa fungsi yang dapat digunakan kembali. Dalam hal ini, itu adalah pelolosan XML. Teknologi JSP menyediakan beragam fungsi untuk dipilih, serta kemampuan untuk membuat fungsi Anda sendiri. Untuk menggunakan suatu fungsi di JSP, Anda harus mengimpor perpustakaan yang sesuai di mana fungsi tersebut didefinisikan ke dalam file JSP.

Perpustakaan tanda

Mari kita lihat baris kode sumber lainnya (baris kedua) di atas:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
Beginilah cara perpustakaan tag diimpor. Sintaksnya intuitif. Kami mendefinisikan beberapa hal:
  • taglib(perpustakaan tag - perpustakaan tag);
  • url, dimana perpustakaan ini berada;
  • awalan (dalam hal ini fn) yang memungkinkan untuk memanggil fungsi yang ditentukan di perpustakaan ini.
Pada contoh di atas, kita melihat fungsi impor. Secara khusus, dalam contoh kami, kami mengimpor perpustakaan JSTL (JSP Standard Tag Library). JSTL adalah perpustakaan tag standar yang berisi sekumpulan perpustakaan berbeda yang disertakan dengan setiap implementasi servlet dan JSP, termasuk Tomcat. Pustaka tag populer lainnya adalah inti, yang dapat diimpor seperti ini:
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
Seperti halnya fn, notasinya cbersifat opsional dan diterima secara umum. Sebutan ini dapat ditemukan hampir di semua tempat di mana perpustakaan ini digunakan. Berikut adalah contoh fungsi dari perpustakaan inti:
<c:out value = "${'<div>'}"/>
Fungsi ini hanya akan menampilkan tag <div>. Fungsi ini sudah melakukan pelolosan XML. Fungsi ini penting dari sudut pandang keamanan, karena dengan mengeluarkan nilai variabel secara langsung, melalui ${variable}, kita membuka pintu untuk injeksi skrip.

Pengeditan JSP

Sekarang, berbekal pengetahuan baru, mari kita coba melakukan perubahan pada aplikasi demo di dalam Tomcat. Untuk melakukan ini, kita akan menemukan kode sumber halaman ini di dalam folder tempat kontainer servlet ini diinstal. File ini dapat ditemukan di alamat berikut: ...\Apache Software Foundation\Tomcat 9.0\webapps\examples\jsp\jsp2\el Kemudian buka file implicit-objects.jsp di editor teks apa pun Tambahkan impor perpustakaan inti , lalu gunakan Mari kita menampilkan beberapa teks: Apa itu JSP?  Memahami kemungkinan dalam praktik - 12Sekarang mari segarkan halaman objek tersembunyi dan lihat perubahan yang dilakukan: Apa itu JSP?  Memahami kemungkinan dalam praktik - 13

Hasil

Jadi, kami telah memeriksa secara dangkal teknologi seperti JSP. Kami membahas:
  • apa itu JSP;
  • struktur halaman JSP;
  • prosedur untuk menginstal dan menjalankan wadah servlet Tomcat;
  • aplikasi demo untuk mengakses objek tersembunyi, yang termasuk dalam paket distribusi server Tomcat;
  • Fungsi JSP dan perpustakaan tag.

Apa berikutnya?

Untuk mengamankan materi, Anda dapat:
  1. Ulangi semua yang dijelaskan dalam artikel ini.
  2. Pertimbangkan aplikasi demo lain yang disertakan dengan server Tomcat.
  3. Tulis aplikasi Anda sendiri dan terapkan ke wadah servlet. Sebagai panduan, Anda dapat menggunakan artikel Membuat proyek web sederhana di IntelliJ Idea Enterprise. Langkah demi langkah, dengan gambar.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION