Tutorial JSTL (JSP Standard Tag Library): Teras & Contoh Tag Tersuai

Isi kandungan:

Anonim

JSTL adalah pustaka tag standard JSP. Di sini kita akan melihat bagaimana menggunakan teg JSTL yang berbeza akan menjadikan pengekodan JSP lebih mudah.

Dalam tutorial ini, anda akan belajar-

  • Apa itu JSTL
  • Teras JSTL
  • Teg Custom JSP

Apa itu JSTL?

JSTL adalah singkatan dari pustaka tag standard halaman pelayan Java, dan ini adalah koleksi perpustakaan tag JSP khusus yang menyediakan fungsi pengembangan web yang umum.

Kelebihan JSTL

  1. Standard Tag : Ini menyediakan lapisan kaya fungsi mudah alih halaman JSP. Mudah bagi pembangun untuk memahami kodnya.
  2. Code Neat and Clean : Sebagai scriplet membingungkan pengembang, penggunaan JSTL menjadikan kodnya kemas dan bersih.
  3. Sokongan JavabeansInterospeksi Automatik : Ia mempunyai kelebihan JSTL berbanding skrip JSP. Bahasa Ekspresi JSTL mengendalikan kod JavaBean dengan sangat mudah. Kami tidak perlu menurunkan objek, yang telah diambil sebagai atribut scoped. Menggunakan kod skrip JSP akan menjadi rumit, dan JSTL telah mempermudah tujuan itu.
  4. Lebih mudah dibaca oleh manusia : JSTL berdasarkan XML, yang sangat mirip dengan HTML. Oleh itu, mudah difahami oleh pemaju.
  5. Lebih mudah difahami oleh komputer : Alat seperti Dreamweaver dan halaman depan menghasilkan lebih banyak kod HTML. Alat HTML berfungsi dengan baik dalam memformat kod HTML. Kod HTML dicampur dengan kod scriplet. Oleh kerana JSTL dinyatakan sebagai tag yang mematuhi XML, mudah bagi generasi HTML untuk menguraikan kod JSTL dalam dokumen.

Teras JSTL

Tag inti adalah tag yang paling kerap digunakan di JSP. Mereka memberikan sokongan untuk

  • Pengulangan
  • Logik bersyarat
  • Pengecualian tangkapan
  • url ke hadapan
  • Ubah hala, dll.

Untuk menggunakan tag inti, kita perlu menentukan perpustakaan tag terlebih dahulu dan di bawahnya adalah sintaks untuk memasukkan pustaka tag.

Sintaks:

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

Di sini,

  • awalan boleh digunakan untuk menentukan semua tag inti dan
  • uri adalah perpustakaan taglib dari mana ia diimport

Mari lihat beberapa teg inti secara terperinci,

1. Keluar:

  • Hasil ungkapan ditunjukkan dalam tag keluar
  • Ia secara langsung dapat melepaskan tag XML. Oleh itu, ia tidak dinilai sebagai tag sebenar

Sintaks:

  • Di sini nilai mewakili maklumat untuk output, dan itu wajib
  • Lalai adalah kegagalan untuk mengeluarkan maklumat, dan tidak wajib
  • escapeXML - Memang benar jika melarikan diri dari watak XML.

Contoh:

Coretag_jsp1.jsp

<% @ bahasa halaman = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Tag Teras JSP1 

Penjelasan kod:

Baris Kod 3: Awalan taglib ini diperlukan untuk semua tag dan awalan yang ditambahkan adalah 'c'. Oleh itu, ia boleh digunakan sebagai awalan untuk semua coretag.

Baris Kod 12: Di sini kita menggunakan coretag keluar dengan awalan "c" dan ini akan mencetak nilai dalam tag ekspresi. Oleh itu, output akan diberi nama

Apabila anda melaksanakan kod di atas, anda mendapat output berikut:

Pengeluaran:

  • Kami mendapat nilai sebagai nama dari tag inti "keluar" yang akan dicetak dalam aliran output.

2. Menangkap

  • Ia menangkap pengecualian yang boleh dilemparkan yang berlaku di badan dan ditunjukkan sebagai output.
  • Ia digunakan untuk menangani kesalahan dan mengatasinya.

Sintaks:

Di sini var mewakili nama pemboleh ubah, yang akan mempunyai pengecualian yang boleh dilemparkan.

Contoh:

<% @ bahasa halaman = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib awalan = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Tag Teras JSP2 <% int num = 10/0; %>Pengecualian adalah: $ {guruException}

Penjelasan kod:

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

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

Baris Kod 14: Kami mencetak "guruException".

Apabila anda melaksanakan kod, anda akan mendapat output berikut:

Pengeluaran:

  • Kami mendapat Pengecualian Aritmetik sebagai / dengan sifar, dan ia dicetak dalam output menggunakan pemboleh ubah "guruException"

3. Import

  • Kita boleh mengimport kandungan fail lain ke halaman JSP seperti yang kita lakukan di JSP termasuk tindakan.
  • Di sini kita juga dapat memasukkan URL dan kandungannya akan dipaparkan di halaman tersebut.

Sintaks:

Di sini var adalah nama pemboleh ubah yang merupakan pengecam, yang akan menyimpan nama fail / uri.

uri adalah nama fail relatif atau nama urin.

coretag_jsp31.jsp

<% @ bahasa halaman = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib awalan = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Tag Teras JSP 31 

Coretag_jsp32.jsp

<% @ bahasa halaman = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Masukkan tajuk di sini  Fail dipaparkan setelah diimport 

Penjelasan kod:

Coretag_jsp31.jsp

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

Baris Kod 11-12: Di sini kita mengimport file coretag_jsp32.jsp ke dalam fail ini menggunakan tag import

Code Line13: Di sini kita mencetak file coretag_jsp32.jsp menggunakan tag keluar.

Apabila anda melaksanakan kod di atas, anda akan mendapat output berikut.

Pengeluaran:

  • Coretag_jsp32 dicetak dalam output kerana fail ini diimport dalam coretag_jsp31.jsp.

4. untukSetiap

  • Ia digunakan untuk mengulangi bilangan elemen dalam rangkaian pernyataan.
  • Ia sama dengan forloop Java.

Sintaks:

  • Di sini var mewakili nama pemboleh ubah yang akan memegang nama pembilang
  • Permulaan mewakili nilai permulaan pembilang
  • Akhir akan mewakili nilai akhirnya

Contoh:

<% @ bahasa halaman = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib awalan = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Tag Teras JSP4 

Penjelasan kod:

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

Baris Kod 11-13: Di sini kita menggunakan gelung "forEach" di mana nama pemboleh ubah adalah "gurucount", yang telah mula dikira sebagai 5 dan kiraan akhir sebagai 10. Kami mencetak pemboleh ubah yang mempunyai nombor bermula dari 5 hingga 10.

Apabila anda melaksanakan kod, anda akan mendapat output berikut

Pengeluaran:

  • Output yang kami peroleh bermula 5 hingga 10.

5. Sekiranya

  • Ia digunakan untuk keadaan Ujian.
  • Sekiranya tag digunakan untuk menguji keadaan sama ada benar atau tidak berdasarkan ini, blok kod akan dijalankan.

Sintaks:

<% @ bahasa halaman = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib awalan = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Tag Teras JSP5 

Penjelasan kod:

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

Baris Kod 11: Di sini kita menetapkan pemboleh ubah yang dinamakan sebagai kiraan hingga 100

Baris Kod 12-14: Di sini kita menggunakan "jika syarat" di mana kita memeriksa sama ada kiraannya sama dengan 100. Ia sama dengan 100 maka kita mendapat output sebagai "Kiraannya adalah 100."

Apabila anda melaksanakan kod di atas, anda akan mendapat output berikut

Pengeluaran:

  • Oleh kerana keadaan "if" adalah benar, kita mendapat output sebagai "Kiraannya 100".

6. ubah hala:

  • Ini digunakan untuk mengalihkan halaman semasa ke URL lain dengan memberikan URL relatif dari tag ini.
  • Ia menyokong URL relatif konteks

Sintaks:

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

Contoh:

<% @ bahasa halaman = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib awalan = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Tag Teras JSP6 

Penjelasan kod:

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

Baris Kod 11: Di sini kita menggunakan "redirect tag", di mana kita menentukan nama url, dan ketika kita mengklik halaman itu, ia mengarahkan ke laman web yang telah diberikan untuk pengalihan.

Apabila anda melaksanakan kod di atas, anda mendapat output berikut;

Pengeluaran:

  • Kami mendapat url output9999 yang diarahkan oleh coretag_jsp6.jsp

Teg Custom JSP

  • Ia adalah elemen bahasa JSP yang ditentukan pengguna.
  • Apabila JSP diterjemahkan ke servlet, tag khusus diubah menjadi kelas yang melakukan tindakan pada objek dan disebut sebagai pengendali tag.
  • Tindakan tersebut semasa servlet dijalankan dipanggil oleh wadah web.
  • Untuk membuat tag khas yang ditentukan pengguna, kita perlu membuat pengendali tag yang akan memperluas SimpleTagSupport dan harus mengganti kaedah doTag ().
  • Kita perlu membuat TLD di mana kita perlu memetakan fail kelas di TLD.

Kelebihan tag tersuai di JSP:

  • Mudah Alih - Tindakan yang dijelaskan dalam pustaka teg mesti boleh digunakan di mana-mana bekas JSP.
  • Mudah - Pengguna yang tidak canggih mesti dapat memahami dan menggunakan mekanisme ini. Penjual fungsi JSP mesti mudah menjadikannya tersedia untuk pengguna sebagai tindakan.
  • Ekspresif - Mekanisme mesti menyokong berbagai tindakan, termasuk tindakan bersarang, elemen skrip di dalam badan tindakan, penciptaan, penggunaan dan pengemaskinian pemboleh ubah skrip.
  • Dapat digunakan dari bahasa skrip yang berlainan - Walaupun spesifikasi JSP saat ini hanya mendefinisikan semantik untuk skrip dalam bahasa pengaturcaraan Java, kami ingin membiarkan kemungkinan bahasa skrip lain terbuka.
  • Dibangunkan berdasarkan konsep dan mesin yang ada - Kami tidak mahu mencipta semula whatexist di tempat lain. Juga, kami ingin mengelakkan konflik di masa depan setiap kali kami dapat meramalkannya

Sintaks:

Anggaplah kita membuat tag testGuru dan kita boleh menggunakan kelas tagtagandlertestTag, yang akan menggantikan kaedah doTag ().

Class testTag extends SimpleTagSupport{ public void doTag()}

Juga, kita harus memetakan kelas testTag ini dalam TLD (Tag Library Descriptor) kerana bekas JSP secara automatik akan membuat pemetaan antara fail kelas dan uri yang telah disebutkan dalam fail TLD.

Antaramuka Tag JSP

  • Kelas ini perlu melanjutkan kelas SimpleTagSupport.
  • Kelas ini harus mengganti kaedah doTag () yang merupakan sebahagian daripada kelas SimpleTagSupport (overriding adalah kaedah yang diwarisi dari kelas induk).
  • Antaramuka ini adalah sub muka antara muka JSPTag.
  • Ini menyediakan kaedah untuk dilakukan pada awal dan akhir tag.
  • Juga, kita perlu memetakan kelas ini dalam TLD iaitu deskriptor Perpustakaan Tag

Kami mempertimbangkan dalam contoh di bawah

Kaedah Antaramuka Tag

  • doTag () adalah kaedah yang perlu kita ganti dengan kandungan tag tersebut.
  • Ia memerlukan Konteks JSP semasa menggunakan getJSPContext ()

Contoh:

Customtag_jsp1.jsp

<% @ bahasa halaman = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib awalan = "ex" uri = "WEB-INF / custom.tld"%> Tag Tersuai 

Custom.tld

 1.0  2.0  Uji TLD  guruTag  demotest.guruTag  kosong 

guruTag.java (TagHandler)

demotest pakej;import javax.servlet.jsp.tagext. *;import javax.servlet.jsp. *;import java.io. *;guru kelas awam memperluas SimpleTagSupport {doTag kekosongan awam () membuang JspException, IOException{JspWriter out = getJspContext (). GetOut ();out.println ("Tag Guru");}}

Penjelasan kod:

guruTag.java (TagHandler)

Baris Kod 6: kelas guruTag meluaskan kelas SimpleTagSupport yang terdapat di balang javax.servlet.JSP

Baris Kod 7: Di sini kita mengatasi kaedah doTag () yang melemparkan JspException dan IOException.

Baris Kod 9-10: Dalam kaedah ini, kod akan disisipkan ke tag khusus yang akan dipanggil. Kami mengambil objek JspWriter, dan itu akan mencetak "Tag Guru."

Custom.tld

Baris Kod 6: Di sini nama tag khas adalah "guruTag."

Baris Kod 7: Kelas tag adalah taghandlerclass, iaitu, guruTag.java. Ia mengambil jalan penuh dari fail pengendali yang merangkumi jalan direktori lokasi fail.

Customtag_jsp1.jsp

Baris Kod 3 : Awalan taglib ini diperlukan untuk semua tag dan awalan yang ditambahkan adalah 'ex' oleh itu ia boleh digunakan sebagai awalan untuk semua coretag dan uri adalah custom.tld yang memetakan pengendali tag.

Baris Kod 11: Di sini kita mendefinisikan tag khusus "guruTag", yang akan memanggil kaedah pengendali kelas doTag () dan kod di dalamnya akan dijalankan.

Apabila anda melaksanakan kod di atas, anda akan mendapat output berikut

Pengeluaran:

  • Kami mendapat output sebagai "GuruTag" dari guruTag.java iaitu TagHandler, yang menggantikan kaedah doTag () dan yang mencetak "Guru Tag" sebagai output.

Ringkasan:

  • Di bahagian ini, kami mengetahui tentang pustaka tag standard JSP di mana kami melakukan tag teras dan tag tersuai.
  • Tag teras merangkumi untuk, jika, pengalihan, import, tag tangkapan yang merupakan tag yang digunakan untuk tujuan asas di JSP.
  • Juga, kami melakukan tag tersuai di mana kami dapat menentukan tag dan menggunakannya di JSP