JSTL (Perpustakaan Tag Standar JSP)

Dalam tutorial JSTL ini, kita akan melihat bagaimana penggunaan tag JSTL yang berbeda akan membuat pengkodean JSP lebih mudah.

Apa itu JSTL di Java?

JSTL singkatan Java perpustakaan tag standar halaman server, dan merupakan kumpulan perpustakaan tag JSP khusus yang menyediakan fungsionalitas pengembangan web umum. JSTL adalah perpustakaan tag standar JSP.

Kelebihan JSTL

Berikut kelebihan JSTL :

  1. Label Standar: Ini menyediakan lapisan yang kaya akan fungsionalitas portabel halaman JSP. Sangat mudah bagi pengembang untuk memahami kodenya.
  2. Kode Rapi dan Bersih: Karena skrip membingungkan pengembang, penggunaan JSTL membuat kode menjadi rapi dan bersih.
  3. secara otomatis Javakacang Dukungan Interospeksi: Ini memiliki keunggulan JSTL dibandingkan skrip JSP. Bahasa Ekspresi JSTL menangani JavaKode kacang dengan sangat mudah. Kita tidak perlu merendahkan objek yang telah diambil sebagai atribut tercakup. Menggunakan kode skrip JSP akan menjadi rumit, dan JSTL telah menyederhanakan tujuan tersebut.
  4. Lebih mudah dibaca manusia:JSTL didasarkan pada XML, yang sangat mirip dengan HTML. Oleh karena itu, mudah bagi pengembang untuk memahaminya.
  5. Lebih mudah dipahami oleh komputer: Alat seperti Dreamweaver dan halaman depan menghasilkan lebih banyak kode HTML. Alat HTML melakukan pekerjaan yang baik dalam memformat kode HTML. Kode HTML dicampur dengan kode script. Karena JSTL dinyatakan sebagai tag yang sesuai dengan XML, pembuatan HTML mudah untuk mengurai kode JSTL di dalam dokumen.

Tag JSTL

Tag inti adalah tag yang paling sering digunakan di JSP. Mereka memberikan dukungan untuk

  • Pengulangan
  • Logika bersyarat
  • Tangkap pengecualian
  • url maju
  • Pengalihan, dll.

Untuk menggunakan tag inti kita perlu mendefinisikan perpustakaan tag terlebih dahulu dan di bawah ini adalah sintaks untuk menyertakan perpustakaan tag.

Sintaks:

<%@ taglib prefix="c" uri=http://java.sun.com/jsp/jstl/core%>

Di sini,

  • awalan dapat digunakan untuk mendefinisikan semua tag inti dan
  • uri adalah perpustakaan taglib tempat ia diimpor

Mari kita lihat beberapa tag inti secara detail,

1. Keluar

  • Hasil ekspresi ditampilkan di tag out
  • Itu bisa langsung keluar dari tag XML. Oleh karena itu, tag tersebut tidak dievaluasi sebagai tag sebenarnya

sintaks:

<c:out value="" default="" escapeXML="">
  • Di sini nilai mewakili informasi untuk keluaran, dan ini wajib
  • Standarnya adalah kegagalan untuk mengeluarkan informasi, dan ini tidak wajib
  • escapeXML – Bernilai benar jika lolos dari karakter XML.

Contoh:

Coretag_jsp1.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Core Tag JSP1</title>
</head>
<body>

</body>
</html>

Penjelasan kodenya:

Baris Kode 3: Awalan taglib ini diperlukan untuk semua tag dan awalan yang ditambahkan adalah 'c'. Oleh karena itu, ini dapat digunakan sebagai awalan untuk semua tag inti.

Baris Kode 12: Di sini kita menggunakan coretag out dengan awalan “c” dan out ini akan mencetak nilai dalam tag ekspresi. Oleh karena itu, keluarannya adalah nama

Ketika Anda menjalankan kode di atas, Anda akan mendapatkan output berikut:

Tag Inti JSTL - Keluar

Keluaran:

  • Kami mendapatkan nilai sebagai nama dari tag inti "keluar" yang akan dicetak di aliran keluaran.

2. Tangkap

  • Ia menangkap setiap pengecualian yang dapat dilempar yang terjadi di tubuh dan ditampilkan sebagai keluaran.
  • Ini digunakan untuk menangani kesalahan dan menangkapnya.

sintaks:

<c:catchvar="">

Di sini var mewakili nama variabel, yang akan menyimpan pengecualian yang dapat dilempar.

Contoh:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Core Tag JSP2</title>
</head>
<body>
<c:catch var="guruException">
   <% int num = 10/0; %>
</c:catch>
The Exception is : ${guruException} 
</body>
</html>

Penjelasan kodenya:

Baris Kode 3: Awalan taglib ini diperlukan untuk semua tag dan awalan yang ditambahkan adalah 'c' sehingga dapat digunakan sebagai awalan untuk semua coretag

Baris Kode 11-13: Coretag catch digunakan untuk menangkap pengecualian dan mencetak pengecualian. Di sini pengecualian dimunculkan ketika 10/0 dan pengecualian itu memiliki nama "guruException".

Baris Kode 14: Kami sedang mencetak "guruException".

Ketika Anda menjalankan kode tersebut, Anda akan mendapatkan keluaran berikut:

Tag Inti JSTL - Tangkap

Keluaran:

  • Kami mendapatkan Pengecualian Aritmatika sebagai /dengan nol, dan itu dicetak dalam output menggunakan variabel "guruException"

3. Impor

  • Kita dapat mengimpor konten file lain ke halaman JSP seperti yang kita lakukan JSP menyertakan tindakan.
  • Di sini kita juga dapat memasukkan URL dan konten yang akan ditampilkan pada halaman itu.

sintaks:

<c:importvar="" uri="">

Di sini var adalah nama variabel yang merupakan pengenal, yang akan menampung nama file/uri. uri adalah nama file relatif atau nama urin.

coretag_jsp31.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Core Tag JSP 31</title>
</head>
<body>
<c:import var="displayfile" url="coretag_jsp32.jsp">
</c:import>
<c:out value="${displayfile}"/>
</body>
</html>

Coretag_jsp32.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<a>The file is diplayed after importing</a>
</body>
</html>

Penjelasan kodenya:

Coretag_jsp31.jsp

Baris Kode 3: Awalan taglib ini diperlukan untuk semua tag dan awalan yang ditambahkan adalah 'c' sehingga dapat digunakan sebagai awalan untuk semua coretag

Baris Kode 11-12: Di sini kita mengimpor file coretag_jsp32.jsp ke dalam file ini menggunakan tag import

Kode Baris13: Disini kita mencetak file coretag_jsp32.jsp menggunakan tag out.

Ketika Anda menjalankan kode di atas, Anda akan mendapatkan keluaran berikut.

Tag Inti JSTL - Impor

Keluaran:

  • Coretag_jsp32 dicetak di output saat file ini diimpor di coretag_jsp31.jsp.

4. untukSetiap

  • Ini digunakan untuk mengulangi jumlah elemen dalam serangkaian pernyataan.
  • Hal ini sama dengan a Java loop depan.

sintaks:

<c:forEach var="" begin=""  end="">
  • Di sini var mewakili nama variabel yang akan menampung nama counter
  • Mulai mewakili nilai awal penghitung
  • Akhir akan mewakili nilai akhirnya

Contoh:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Core Tag JSP4</title>
</head>
<body>
<c:forEach var="gurucount" begin="5" end="10">
 <c:out value="${gurucount}"/>
</c:forEach>
</body>
</html>

Penjelasan kodenya:

Baris Kode 3: Awalan taglib ini diperlukan untuk semua tag dan awalan yang ditambahkan adalah 'c' sehingga dapat digunakan sebagai awalan untuk semua coretag

Baris Kode 11-13: Di sini kita menggunakan loop “forEach” dengan nama variabel “gurucount”, yang memiliki hitungan awal 5 dan hitungan akhir 10. Kita mencetak variabel gurucount yang memiliki angka mulai dari 5 hingga 10.

Ketika Anda menjalankan kode tersebut, Anda mendapatkan output berikut

Tag Inti JSTL - forEach

Keluaran:

  • Output yang kita dapatkan mulai dari 5 hingga 10.

5. Jika

  • Ini digunakan untuk pengujian kondisi.
  • Jika tag digunakan untuk menguji suatu kondisi apakah benar atau tidak berdasarkan ini, blok kode akan dieksekusi.

sintaks:

<c:if test="${condition}></c:if>

Di sini jika kondisinya benar maka serangkaian pernyataan akan dieksekusi.

Contoh:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Core Tag JSP5</title>
</head>
<body>
<c:set var="count" value="100"/>
<c:if test="${count == 100}">
   <c:out value="The count is 100"/>
</c:if>
</body>
</html>

Penjelasan kodenya:

Baris Kode 3: Awalan taglib ini diperlukan untuk semua tag dan awalan yang ditambahkan adalah 'c' sehingga dapat digunakan sebagai awalan untuk semua coretag

Baris Kode 11: Di sini kita mengatur variabel bernama count menjadi 100

Baris Kode 12-14: Di sini kita menggunakan "kondisi if" di mana kita memeriksa apakah hitungannya sama dengan 100. Hasilnya sama dengan 100, maka kita akan mendapatkan output "Hitungannya adalah 100."

Ketika Anda menjalankan kode di atas, Anda mendapatkan output berikut

Tag Inti JSTL - Jika

Keluaran:

  • Karena kondisi “jika” benar, kita mendapatkan keluaran sebagai “Hitungannya 100”.

6. mengalihkan

  • Ini digunakan untuk mengalihkan halaman saat ini ke URL lain dengan memberikan URL relatif dari tag ini.
  • Ini mendukung URL relatif konteks

sintaks:

<c:redirect url="" context=""/>

Di sini url adalah url relatif yang harus dialihkan dan nama konteks aplikasi web lokal.

Contoh:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Core Tag JSP6</title>
</head>
<body>
<c:redirect url="/"/>
</body>
</html>

Penjelasan kodenya:

Baris Kode 3: Awalan taglib ini diperlukan untuk semua tag dan awalan yang ditambahkan adalah 'c' sehingga dapat digunakan sebagai awalan untuk semua coretag

Baris Kode 11: Di sini kita menggunakan "tag pengalihan", di mana kita menentukan nama url, dan ketika kita mengklik halaman itu, halaman itu dialihkan ke situs yang telah diberikan untuk pengalihan.

Ketika Anda menjalankan kode di atas, Anda mendapatkan keluaran berikut;

Tag Inti JSTL - Pengalihan

Keluaran:

  • Kami mendapatkan url keluaran guru99.com yang dialihkan oleh coretag_jsp6.jsp

Tag Kustom JSTL

  • Ini adalah yang ditentukan pengguna JSP elemen bahasa.
  • Ketika JSP diterjemahkan ke dalam servlet, tag khusus diubah menjadi kelas yang mengambil tindakan pada suatu objek dan disebut sebagai penangan tag.
  • Tindakan tersebut ketika servlet dijalankan dipanggil oleh container web.
  • Untuk membuat tag khusus yang ditentukan pengguna, kita perlu membuat penangan tag yang akan memperluas SimpleTagSupport dan harus mengganti metode doTag().
  • Kita perlu membuat TLD di mana kita perlu memetakan file kelas di TLD.

Keuntungan dari tag khusus di JSP

Berikut kelebihan custom tag di JSP:

  • Portabel: Tindakan yang dijelaskan dalam pustaka tag harus dapat digunakan dalam wadah JSP apa pun.
  • Sederhana: Pengguna yang kurang berpengalaman harus dapat memahami dan menggunakan mekanisme ini. Vendor fungsionalitas JSP harus merasa mudah untuk menyediakannya kepada pengguna sebagai tindakan.
  • Ekspresif: Mekanisme tersebut harus mendukung berbagai tindakan, termasuk tindakan bersarang, elemen skrip di dalam badan tindakan, pembuatan, penggunaan, dan pembaruan variabel skrip.
  • Dapat digunakan dari berbagai bahasa skrip: Meskipun spesifikasi JSP saat ini hanya mendefinisikan semantik untuk skrip di Java bahasa pemrograman, kami ingin membiarkan kemungkinan bahasa scripting lainnya terbuka.
  • Dibangun berdasarkan konsep dan mesin yang ada: Kami tidak ingin menciptakan kembali apa yang sudah ada di tempat lain. Selain itu, kami ingin menghindari konflik di masa mendatang jika kami dapat memprediksinya.

sintaks:

Anggaplah kita sedang membuat tag testGuru dan kita dapat menggunakan kelas taghandlertestTag, yang akan menggantikan metode doTag().

<ex:testGuru/>
Class testTag extends SimpleTagSupport{ public void doTag()}

Selain itu, kita harus memetakan kelas testTag ini di TLD (Tag Library Descriptatau) sebagai container JSP secara otomatis akan membuat pemetaan antara file kelas dan uri yang telah disebutkan dalam file TLD.

Antarmuka Tag JSP

  • Kelas ini harus memperluas kelas SimpleTagSupport.
  • Kelas ini harus mengganti metode doTag() yang merupakan bagian dari kelas SimpleTagSupport (penggantian adalah metode yang diwarisi dari kelas induk).
  • Antarmuka ini adalah sub antarmuka dari antarmuka JSPTag.
  • Ini menyediakan metode untuk dilakukan di awal dan akhir tag.
  • Selain itu, kita perlu memetakan kelas ini di TLD yaitu deskriptor Perpustakaan Tag

Kami sedang mempertimbangkan contoh di bawah ini

Metode Antarmuka Tag

  • doTag() adalah metode yang perlu kita ganti yang berisi konten tag.
  • Dibutuhkan Konteks JSP saat ini menggunakan getJSPContext()

Contoh:

Tag khusus_jsp1.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="ex" uri="WEB-INF/custom.tld"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Custom Tag</title>
</head>
<body>
<ex:guruTag/>
</body>
</html>

Kustom.tld

<taglib>
  <tlib-version>1.0</tlib-version>
  <jsp-version>2.0</jsp-version>
  <short-name>Test TLD</short-name>
  <tag>
    <name>guruTag</name>
    <tag-class>demotest.guruTag</tag-class>
    <body-content>empty</body-content>
  </tag>
</taglib>

guruTag.java(TagHandler)

package demotest;
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
import java.io.*;

public class guruTag extends SimpleTagSupport{
	public void doTag() throws JspException,IOException
	{
		JspWriter out = getJspContext().getOut();
		out.println("Guru Tag");
	}

}

Penjelasan kodenya:

guruTag.java(TagHandler)

Baris Kode 6:Kelas guruTag memperluas kelas SimpleTagSupport yang ada di javax.servlet.JSP jar

Baris Kode 7: Di sini kita mengganti metode doTag() yang menampilkan JspException dan IOException.

Baris Kode 9-10: Dalam metode ini, kode akan disematkan ke tag khusus yang akan dipanggil. Kami mengambil objek JspWriter, dan itu akan mencetak “Guru Tag.”

Kustom.tld

Baris Kode 6: Di sini nama tag khusus adalah “guruTag.”

Baris Kode 7:Kelas tag adalah kelas taghandler, yaitu guruTag.java. Dibutuhkan path lengkap dari file handler yang mencakup path direktori lokasi file.

Tag khusus_jsp1.jsp

Baris Kode 3: Awalan taglib ini diperlukan untuk semua tag dan awalan yang ditambahkan adalah 'ex' sehingga dapat digunakan sebagai awalan untuk semua coretag dan uri adalah custom.tld yang memetakan penangan tag.

Baris Kode 11: Di sini kita mendefinisikan tag khusus “guruTag”, yang akan memanggil metode kelas handler doTag() dan kode di dalamnya akan dieksekusi.

Ketika Anda menjalankan kode di atas, Anda mendapatkan output berikut

Antarmuka Tag JSP

Keluaran:

  • Kami mendapatkan keluaran sebagai “GuruTag” dari guruTag.java yaitu TagHandler, yang menggantikan metode doTag() dan yang mencetak “Guru Tag” sebagai keluaran.

Kesimpulan

  • Di bagian ini, kita mempelajari tentang pustaka tag standar JSP tempat kita membuat tag inti dan tag khusus.
  • Tag inti meliputi tag for, if, redirect, import, catch yang merupakan tag yang digunakan untuk tujuan dasar dalam JSP.
  • Selain itu, kami membuat tag khusus dimana kami dapat menentukan tag dan menggunakannya di JSP