Saya sudah lama memprogram dengan JSP dan ASP. Di antara dua solusi pemrograman sisi server ini, saya semakin merasa bahwa JSP jauh lebih kuat daripada ASP. Mengapa saya harus memilih JSP sebagai alat pengembangan aplikasi web sisi server pilihan saya? Tentu saja, JSP memiliki banyak fitur dan fungsi menarik, tapi perpustakaan tag JSP adalah salah satu alasan terpenting bagi saya untuk membuat keputusan ini.
Mengapa Anda mengatakan ini? Alasannya ada dua: pemeliharaan dan kecepatan pengembangan. Bahasa skrip sisi server sebenarnya adalah tempat meleburnya perkembangan Internet. Di halaman server, Anda dapat dengan mudah mencampur berbagai metode dan objek skrip. Halaman semacam ini hanyalah landasan konkrit untuk membangun Web. Campuran "barang" inilah yang memberikan skrip sisi server kemampuan pemrosesan informasi yang kuat. Hal ini memungkinkan pemrogram sisi server untuk mengembangkan halaman Web yang dinamis dan fleksibel. Namun di sisi lain, pencampuran skrip secara gratis juga memiliki kekurangan, yaitu sangat merepotkan dalam pemeliharaannya, apalagi karena ukuran proyek yang terus bertambah. Lebih buruk lagi, seiring dengan meningkatnya kompleksitas kode, kecepatan pengembangan akan melambat, yang tidak kondusif bagi pengembangan aplikasi web berukuran sedang dan besar. Banyak aplikasi web sisi server berukuran sedang atau besar diluncurkan sangat terlambat dan biayanya tinggi. Selain itu, setelah dikembangkan, situs masih perlu mencari pemrogram yang berkualifikasi untuk memelihara kode-kode yang agak rumit ini. Akibatnya, pemrogram ini menjadi perancang web umum, dan aplikasi sisi server memainkan peran kunci dalam desain grafis akhir dan implementasi. .Itu melemah.
Untuk mengatasi masalah ini, ASP memperkenalkan teknologi objek COM, sedangkan JSP menyediakan J2EE sebagai tindakan penanggulangannya. Solusi ini dibangun berdasarkan mekanisme basis kode yang terpusat dan dapat digunakan kembali. Namun, mereka terlalu sulit untuk digunakan dan membutuhkan banyak waktu untuk mempelajarinya. Selain itu, solusi ini tidak mengurangi godaan untuk membuat kode yang berantakan, dan akibatnya, kami harus mengatur tim pengembangan yang besar dan terstruktur dengan baik untuk menggunakan teknologi ini. Untuk proyek berukuran sedang, metode seperti itu biasanya lebih jarang digunakan, namun kenyataannya, proyek aplikasi web berukuran sedang adalah yang paling umum. Akibatnya, banyak proyek terpaksa menggunakan lingkungan pengembangan dan pemeliharaan yang tidak memenuhi kebutuhannya.
Untungnya, JSP menyediakan cara yang lebih baik untuk mengatasi masalah ini. Pustaka tag menyediakan cara mudah untuk membuat blok kode yang dapat digunakan kembali. Setelah perpustakaan tag dirancang, perpustakaan tersebut dapat digunakan kembali di banyak proyek. Yang lebih nyaman lagi adalah, tidak seperti COM dan J2EE, selama Anda tahu cara menulis JSP, Anda tidak perlu mempelajari keterampilan lain untuk membuat perpustakaan tag! Terakhir, pustaka tag juga meningkatkan pemeliharaan aplikasi web. Peningkatan dalam pemeliharaan ini tercermin dalam kemudahan implementasi antarmuka berbasis XML yang dapat disesuaikan pada halaman JSP. Akibatnya, desainer web dapat membangun aplikasi web JSP tanpa mengetahui apa itu JSP. Dengan cara ini, pengembangan Web menjadi tugas pengembangan tim yang sangat efisien. Pemrogram JSP dapat membuat tag khusus dan modul kode back-end, sementara desainer Web dapat menggunakan tag khusus dan fokus sepenuhnya pada desain Web itu sendiri. Pustaka tag memecahkan masalah kebingungan kode dan melakukannya dengan rapi dan indah (sebenarnya, XML adalah inti dari pemecahan masalah ini, namun pustaka tag masih memainkan peran kunci).
Apa itu perpustakaan tag?
Pustaka tag JSP (juga disebut pustaka tag khusus) dapat dilihat sebagai metode pembuatan skrip berbasis XML melalui JavaBeans. Secara konseptual, tag adalah struktur kode yang sederhana dan dapat digunakan kembali. Misalnya, dalam rilis terbaru JSPKit kami (dalam JSP Insider), dokumen XML mudah diakses menggunakan tag XML. Silakan lihat Daftar A di bawah ini.
Listing A: Contoh tag yang melakukan transformasi XML/XSL dan halaman HTML di dalamnya
<%@ taglib uri=" http://www.jspinsider.com/jspkit/JAXP " awalan="JAXP"%>
Contoh di atas menggunakan tag sederhana untuk mengakses kode yang lebih kuat di belakang layar. Bagian tag dari pernyataan tersebut pertama-tama memuat file XML dan kemudian menerapkan file XSL untuk mengubah konten file XML menjadi tertentu. format representasi dan dikirim ke klien, semua ini hanya menggunakan tag yang sangat sederhana. Tag khusus memudahkan pembuatan modul sumber terbuka yang dapat digunakan kembali dalam proyek JSP, dan yang Anda perlukan hanyalah pustaka tag dan dokumentasinya.
Fitur Penting dari Perpustakaan Tag
1. Mudah dipasang di beberapa proyek Tag dapat dengan mudah dimigrasikan dari satu proyek JSP ke proyek lainnya. Setelah Anda membuat perpustakaan tag, cukup kemas semuanya ke dalam file JAR yang dapat Anda gunakan kembali dalam proyek JSP apa pun. Pustaka tag menjadi semakin populer karena tag dapat digunakan kembali dan dengan mudah digunakan dalam proyek Anda sendiri. Saat ini, sumber tag terbaik dapat ditemukan di JSPTags.com.
2. Pustaka tag JSP yang diperluas dapat memiliki fitur dan fungsi apa pun dalam spesifikasi JSP (JSP 1.2). Anda dapat memperluas dan meningkatkan fungsi JSP tanpa batas tanpa menunggu versi JSP berikutnya muncul. Misalnya, Anda tidak puas dengan panggilan penyertaan JSP. Anda dapat membuat tag penyertaan Anda sendiri yang menerapkan spesifikasi Anda sendiri.
3. Mudah dipelihara
Pustaka tag membuat aplikasi web JSP sangat mudah dipelihara karena alasan berikut:
(1) Penerapan label sederhana dan mudah digunakan dan dipahami oleh siapa saja.
(2) Semua kode logika program terkonsentrasi di pemroses tag dan JavaBeans. Artinya saat Anda mengupgrade kode, Anda tidak perlu memodifikasi setiap halaman yang menggunakan kode tersebut. Anda hanya perlu memodifikasi file kode terpusat.
(3) Jika Anda perlu menambahkan fungsi baru, Anda tidak perlu mengubah halaman yang ada. Anda dapat menambahkan atribut tambahan ke tag untuk memperkenalkan perilaku baru, sementara atribut lama lainnya tetap tidak berubah, sehingga semua halaman lama masih dapat digunakan. .Berfungsi normal. Misalnya Anda memiliki label yang membuat semua teks menjadi biru:
Namun di proyek nanti, Anda ingin warna birunya menjadi lebih gelap. Anda dapat mempertahankan label asli dan menambahkan atribut baru ke dalamnya: shade, seperti yang ditunjukkan di bawah ini:
Semua tag lama masih bisa menghasilkan teks berwarna biru, namun sekarang Anda bisa menggunakan tag yang sama untuk menghasilkan teks berwarna biru tua.
(4) Label meningkatkan penggunaan kembali kode. Kode yang sudah diuji dan digunakan berkali-kali pasti bugnya lebih sedikit. Oleh karena itu, halaman JSP yang menggunakan tag khusus juga memiliki lebih sedikit cacat dan tentu saja jauh lebih nyaman untuk dipelihara.
4. Pustaka tag waktu pengembangan yang cepat menyediakan cara mudah untuk menggunakan kembali kode. Salah satu cara standar untuk menggunakan kembali kode dalam bahasa sisi server adalah dengan menggunakan templat. Dibandingkan menggunakan pustaka templat, pustaka tag adalah solusi yang lebih baik. Dengan pustaka templat, Anda harus memodifikasi templat atau membuat antarmuka yang ketat untuk setiap proyek, sedangkan pustaka tag tidak memiliki batasan ini dan memiliki semua keunggulan berorientasi objek, dapat fleksibel dan lebih dapat diperluas, dan, dengan menggunakan kembali kode , Anda dapat menghabiskan lebih sedikit waktu untuk melakukan pengembangan dan lebih banyak waktu merancang aplikasi web Anda. Antarmuka perpustakaan tag juga sangat sederhana, sehingga sangat mudah untuk disisipkan, digunakan, dan di-debug.
Struktur tag
Meskipun pustaka tag sangat mudah digunakan, mekanisme implementasi internal untuk membuat pustaka tag masih cukup rumit, setidaknya lebih rumit daripada membuat JavaBean sederhana. Kompleksitasnya berasal dari fakta bahwa perpustakaan tag terdiri dari beberapa bagian. Namun Anda hanya perlu menguasai ilmu Java dan JSP saja.
Tag sederhana terdiri dari elemen-elemen berikut:
1. JavaBean: Untuk mendapatkan manfaat Java dan sifat berorientasi objek yang melekat, kode yang dapat digunakan kembali harus ditempatkan dalam wadah kode terpisah, yaitu JavaBean. JavaBeans ini bukan merupakan bagian penting dari perpustakaan tag, namun merupakan modul kode dasar yang digunakan oleh perpustakaan tag untuk melakukan tugas yang diberikan.
2. Pemroses Tag: Pemroses tag adalah inti sesungguhnya dari pustaka tag. Penangan tag mereferensikan sumber daya eksternal apa pun yang diperlukan (JavaBeans) dan bertanggung jawab untuk mengakses informasi halaman JSP (objek PageContext). Halaman JSP meneruskan atribut tag yang ditetapkan pada halaman dan konten di badan tag ke pemroses tag. Ketika pemroses tag menyelesaikan pemrosesannya, ia akan mengirimkan hasil keluaran yang diproses kembali ke halaman JSP untuk diproses lebih lanjut.
3. Deskriptor pustaka tag (file TLD): Ini adalah file XML sederhana yang mencatat atribut, informasi, dan lokasi pemroses tag. Kontainer JSP menggunakan file ini untuk mengetahui di mana dan bagaimana memanggil perpustakaan tag.
4. File web.xml situs web: Ini adalah file inisialisasi situs web. Dalam file ini, tag khusus yang digunakan di situs web perlu ditentukan, serta file tld yang digunakan untuk menjelaskan setiap tag khusus.
5. File rilis (file WAR atau JAR): Jika Anda ingin menggunakan kembali tag khusus, Anda memerlukan cara untuk memindahkannya dari satu proyek ke proyek lainnya. Mengemas perpustakaan tag ke dalam file JAR adalah cara yang sederhana dan efektif.
6. Deklarasi pustaka tag di halaman JSP: Jika Anda ingin menggunakan tag khusus di halaman JSP, Anda perlu menggunakan pengidentifikasi pustaka tag untuk mendeklarasikannya di halaman.
Tampaknya masih banyak pekerjaan yang harus diselesaikan, dan tentunya akan sedikit rumit saat pertama kali menggunakannya, namun tidak terlalu sulit. Intinya bukan tentang pengkodean, tetapi tentang mengatur bagian-bagiannya dengan benar. Struktur hierarki ini penting karena membuat penggunaan tag menjadi fleksibel dan lebih mudah untuk ditransfer. Lebih penting lagi, level ini memungkinkan seluruh proses pembuatan perpustakaan tag diotomatisasi melalui JSP IDE (lingkungan pengembangan terintegrasi JSP). JSP IDE dapat secara otomatis menyelesaikan sebagian besar pekerjaan pembuatan tag khusus, dan Anda hanya perlu bertanggung jawab untuk menyiapkan sendiri kode dan pemroses tag.
(Catatan: Pemroses tag hanya mendefinisikan satu tag khusus; pustaka tag adalah kumpulan beberapa pemroses tag yang menangani tugas yang sama)
Buat tag pertama Anda
Berikut ini akan mengajari Anda langkah demi langkah cara membuat tag khusus, contoh spesifik sedang memperluas JSP sehingga memiliki fungsi pengkodean HTML sendiri. Fitur ini menggantikan semua karakter < dan > dengan kode HTML. Itu dapat dengan mudah diperluas untuk melakukan pemrosesan pengkodean lainnya. Untuk mempermudah, contoh ini hanya menjelaskan elemen dasar pembuatan tag khusus.
Setiap bagian kode yang dapat digunakan kembali
yang membuat JavaBean
harus ditempatkan di JavaBean.Ini sangat penting. Dengan cara ini Anda dapat menggunakan kembali kode tersebut di proyek lain. Karena kode apa pun yang ditempatkan di dalam pengendali tag tidak dapat digunakan kembali di luar tag, penting untuk mengisolasi bagian kode yang dapat digunakan kembali. Dalam contoh ini, logika yang dikodekan untuk HTML adalah umum dan oleh karena itu ditempatkan di JavaBean, lihat Listing B
Listing B: JavaBeans yang dikodekan HTML
/* HTML_Format.java */
public class HTML_Format extends Obyek mengimplementasikan java.io.Serializable {
/** Buat HTML_Format baru */
public HTML_Format() {}
/** Ganti semua karakter < dan > dalam string dengan pengkodean HTML respons */
String publik HTML_Encode(String as_data)
{
int li_len = as_data.length();
/*Panjang buffer string lebih panjang dari string aslinya*/
StringBuffer lsb_encode = new StringBuffer(li_len + (li_len/10));
/* Ulangi untuk mengganti semua karakter < dan >*/
untuk(int li_count = 0; li_count < li_len; li_count++)
{ String ls_next = String.valueOf(as_data.charAt(li_count));
if (ls_next.equals("<")) ls_next = "<";
if (ls_next.equals(">")) ls_next = ">";
lsb_encode.append( ls_next );
}
kembali( lsb_encode.toString() );
}
}
Kode untuk membuat pemroses tag ditunjukkan pada Listing C:
Daftar C: Pemroses tag pengkodean HTML
impor java.io.IOException;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
kelas publik HTML_FormatTag memperluas BodyTagSupport
{
/* 1) Fungsi ini akan dipanggil di akhir tag*/
public int doEndTag() menampilkan JspTagException
{
mencoba
{ /* 2) Dapatkan teks di label */
BodyContent l_tagbody = getBodyContent();
String ls_output = "";
/* 3) Jika badan tag memiliki teks, proseslah */
jika(l_tagbody != nol)
{ HTML_Format l_format = HTML_Format baru();
/* 3a) Mengubah isi isi tag menjadi string */
String ls_html_text = l_tagbody.getString();
ls_output = l_format.HTML_Encode(ls_html_text);
}
/* 4) Tulis hasilnya kembali ke aliran data */
pageContext.getOut().write(ls_output.trim());
}
menangkap (IOException e)
{ throw new JspTagException("Kesalahan Tag:" + e.toString());
}
/* Biarkan JSP terus memproses konten halaman berikut*/
kembalikan EVAL_PAGE;
}
}
Pemrosesan ini sangat sederhana, meliputi:
1. Baca teks di antara tag pembuka dan penutup
2. Panggil fungsi pengkodean html
3. Kembalikan hasilnya ke halaman JSP.
Membuat deskriptor tag
Kita perlu mendeskripsikan tag khusus sehingga sistem mengetahui apa yang harus dilakukan dengannya. Akhiran file deskripsi ini adalah .tld. File TLD biasanya dinamai menurut nama pemroses tag dan disimpan di direktori "/WEB-INF/". Lihat Daftar D.
Daftar D: Deskriptor tag pengkodean HTML <?xml version="1.0" pengkodean="UTF-8" ?>
<!DOCTYPE taglib
PUBLIK "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
" http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd ">
<TAGLIB>
<TLIBVERSI>1.0</TLIBVERSI>
<JSPVERSION>1.1</JSPVERSION>
<SHORTNAME>HTML_FormatTag</SHORTNAME>
<URI></URI>
<INFO>Tag Pengkodean HTML </INFO>
<TAG>
<NAMA>HTMLEncode</NAMA>
<TAGCLASS>HTML_FormatTag</TAGCLASS>
<INFO>Enkode HTML</INFO>
</TAG>
</TAGLIB>
Perbarui file XML Web
untuk sekarang memberi tahu penampung JSP cara menggunakan perpustakaan tag. Untuk melakukan ini, Anda perlu memodifikasi file web.xml. Secara khusus, Anda perlu menambahkan proyek taglib untuk mendaftarkan perpustakaan tag dan menetapkan URI ke tag. URI adalah satu-satunya indeks di situs Web yang berlaku untuk tag khusus ini. Karena tag mungkin digunakan pada situs Web yang berbeda di masa mendatang, sebaiknya gunakan URL lengkap dan/atau nama paket untuk memastikan keunikannya. Contoh ini disederhanakan; lihat Daftar E untuk contoh kode.
Daftar E: Memodifikasi file web.xml
PUBLIK "-//Sun Microsystems, Inc.//Aplikasi Web DTD 2.2//EN"
" http://java.sun.com/j2ee/dtds/web-app_2.2.dtd ">
<WEB-APP>
<TAGLIB>
<TAGLIB-URI>
Kode HTML
</TAGLIB-URI>
<TAGLIB-LOKASI>
/WEB-INF/HTML_FormatTag.tld
</TAGLIB-LOKASI>
</TAGLIB>
</WEB-APP>
Gunakan tag baru.
Setelah tag khusus disetel, Anda dapat menggunakannya di halaman JSP Anda. Untuk melakukan ini, cukup gunakan perintah direktif taglib untuk mendeklarasikan tag yang ingin Anda gunakan pada halaman. Tag diindeks berdasarkan URI uniknya, yang kemudian diberi awalan namespace. Awalan ini tidak mempunyai arti khusus, asalkan tidak bertentangan dengan namespace lain, bisa sembarangan. Silakan lihat Daftar F dan G di bawah.
Listing F: Menggunakan tag pengkodean HTML<%@ taglib uri="HTMLEncode" prefix="Examples" %>
pada halaman JSP
<PRA>
<?XML:awalan NAMESPACE = Contoh /><Contoh:HTMLEncode>
<Halo, Contoh sederhana>
</Contoh:HTMLEncode>
</PRE>
Listing G: Output kode contoh<Halo, Contoh sederhana>
yang ditampilkan sebagai:
<Halo, Contoh sederhana>
Dengan tag ini, saya menyandikan semua kode halaman. Semua tag khusus diproses di server. Ini berarti Anda tidak akan melihat tag khusus di halaman keluaran.
Seperti yang Anda lihat, membuat tag tidaklah sulit. Bagian yang paling menyusahkan adalah mempelajari seluk beluk pemroses tag secara keseluruhan. Ini adalah fitur canggih, dan kami hanya membahas permukaannya saja. Karena banyaknya langkah yang terlibat dalam proses ini, pemrogram JSP baru mungkin merasa bingung saat membuat tag.
Kesimpulan
Pustaka tag adalah salah satu fitur terpenting JSP, dan masih terus dikembangkan. Memang merupakan hal yang baru, sehingga belum diadopsi secara luas, namun custom tag library telah menghilangkan misterinya, dan semakin banyak developer yang mulai memperhatikan dan menggunakannya. Pada akhir tahun 2001, diharapkan bahwa perpustakaan tag akan menjadi fitur yang sangat umum di banyak proyek JSP.
Manfaat perpustakaan tag hanya dibahas secara singkat di artikel ini. Pustaka tag sebenarnya memiliki banyak fitur canggih lainnya. Perpustakaan tag mendorong pengembangan JSP ke dunia baru yang belum pernah terjadi sebelumnya. Ini memang merupakan teknologi baru yang menarik bagi pengembang JSP karena mereka mendapatkan alat yang dapat mengubah JSP menjadi berbagai aplikasi dan membangun aplikasi web jenis apa pun. Pustaka tag mengubah JSP menjadi yang terkaya, kemampuan pengembangan paling dinamis, dan lingkungan pemrograman Web yang kuat. Kemampuannya hanya dibatasi oleh imajinasi dan kreativitas kita.