📰 WHAT'S NEW?

[10] Java Standard Tag Library (JSTL)

JSTL
JSTL adalah singkatan dari Java Standard Tag Library. JSTL adalah seperangkat tag di luar tag standar HTML yang bisa kita gunakan dalam file JSP. Tujuan utama JavaServer Pages Template Library (JSTL) adalah mempermudah kehidupan perancang halaman JSP. Bagi developer, JSTL membantu menciptakan halaman JSP yang rapi, tidak banyak berbaur antara kode HTML dan kode Java, sehingga halaman JSP lebih mudah dimengerti dan dikelola.

Bila kita menggunakan Maven, konfigurasi dependensinya adalah:
groupId : javax.servlet
artifactId : jstl
version : 1.2

Agar JSTL bisa digunakan, kita harus mendeklarasikannya dulu di bagian atas file JSP seperti ini:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

JSTL memiliki beberapa tag, yaitu :

Core Tag
Area
Function
Tags
Prefix
Core
Variable support
remove
set
c
Flow control
choose
    when
    otherwise
forEach
forTokens
if
URL management
import
    param
redirect
    param
url
    param
Miscellaneous
catch
out

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

Variable Support Tags
Set tag menetapkan nilai variabel EL atau milik variabel EL di salah satu lingkup JSP (halaman, permintaan, sesi, atau aplikasi). Jika variabel tidak sudah ada, itu dibuat.
<c:set var="foo" scope="session" value="..."/>

JSP EL variabel atau properti dapat diatur baik dari nilai atribut:
<c:set var="foo">
     ...
 </c:set>

Flow Control Tags in the Core Tag Library
Untuk melaksanakan aliran kontrol logika, penulis halaman umumnya harus resor untuk menggunakan scriptlets. Sebagai contoh, scriptlet berikut ini digunakan untuk iterate melalui keranjang belanja:
<%
     Iterator i = cart.getItems().iterator();
    while (i.hasNext()) {
        ShoppingCartItem item =
            (ShoppingCartItem)i.next();
        ...
%>
        <tr>
        <td align="right" bgcolor="#ffffff">
         ${item.quantity}
        </td>
        ...
<%
     }
 %>

URL Tags
Oleh karena itu, tag impor adalah sederhana, cara umum untuk mengakses sumber daya berbasis URL, yang isinya kemudian dapat dimasukkan dan atau diolah di dalam halaman JSP. Misalnya, dalam XML Tag Library, impor digunakan untuk membaca dalam dokumen XML yang berisi informasi buku dan menetapkan konten ke xml variabel scoped:
<c:import url="/books.xml" var="xml" />
<x:parse doc="${xml}" var="booklist"
     scope="application" />
Miscellaneous Tags
Tag out mengevaluasi ekspresi dan output hasil evaluasi ke objek JspWriter saat ini. Sintaks dan atribut adalah sebagai berikut:
<c:out value="value" [escapeXml="{true|false}"]
     [default="defaultValue"] />


XML Tag Library

Tag JSTL XML menyediakan cara JSP-sentris menciptakan dan memanipulasi dokumen XML. Berikut ini adalah sintaks untuk memasukkan JSTL XML perpustakaan di JSP Anda.

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

Area
Function
Tags
Prefix
XML
Core
out
parse
set
x
Flow control
choose
    when
    otherwise
forEach
if
Transformation
transform
    param

XML Flow Control Tags
XML flow control tags sejajar dengan yang dijelaskan dalam Flow Control Tags di Core Tag Library untuk aliran data XML.
Halaman JSP tut-install / javaeetutorial5 / contoh / web / bookstore4 / web / buku / bookcatalog.jsp menggunakan tag forEach untuk menampilkan semua buku yang terdapat dalam daftar buku sebagai berikut:
<x:forEach var="book"
     select="$applicationScope:booklist/books/*">
    <tr>
        <c:set var="bookId">
            <x:out select="$book/@id"/>
        </c:set>=
        <td bgcolor="#ffffaa">
             <c:url var="url"
            value="/bookdetails" >
                <c:param name="bookId" value="${bookId}" />
                <c:param name="Clear" value="0" />
            </c:url>
            <a href="${url}">
            <strong><x:out select="$book/title"/>&nbsp;
            </strong></a></td>
         <td bgcolor="#ffffaa" rowspan=2>
             <c:set var="price">
                <x:out select="$book/price"/>
            </c:set>
            <fmt:formatNumber value="${price}" type="currency"/>
             &nbsp;
        </td>
         <td bgcolor="#ffffaa" rowspan=2>
         <c:url var="url" value="/catalog" >
            <c:param name="Add" value="${bookId}" />
        </c:url>
         <p><strong><a href="${url}">&nbsp;
            <fmt:message key="CartAdd"/>&nbsp;</a>
        </td>
    </tr>
     <tr>
         <td bgcolor="#ffffff">
         &nbsp;&nbsp;<fmt:message key="By"/> <em>
            <x:out select="$book/firstname"/>&nbsp;
            <x:out select="$book/surname"/></em></td></tr>
</x:forEach>

Transformation Tags
Tag Transformasi berlaku untuk transformasi, yang ditentukan oleh stylesheet XSLT yang ditetapkan oleh XSLT atribut, untuk dokumen XML, ditentukan oleh doc atribut. Jika atribut doc tidak ditentukan, masukan dokumen XML dibaca dari konten body tag.

Param sub tag dapat digunakan bersama dengan transformasi untuk mengatur parameter transformasi. Atribut nama dan nilai yang digunakan untuk menentukan parameter. Nilai atribut opsional. Jika tidak ditentukan, nilai diambil dari tubuh tag.


Formatting Tags

Tag format JSTL digunakan untuk memformat dan menampilkan teks, tanggal, waktu, dan nomor untuk situs web internasionalisasi.

JSTL menyediakan satu set tag untuk nomor dan tanggal lokal-sensitif parsing dan format.

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

Example :
<jsp:useBean id="now" class="java.util.Date" />
<jsp:setProperty name="now" property="time"
     value="${now.time + 432000000}" />
<fmt:message key="ShipDate"/>
 <fmt:formatDate value="${now}" type="date"
    dateStyle="full"/>.


SQL Tag Library

JSTL Library tag SQL memberikan tag untuk berinteraksi dengan database relasional (RDBMSs) seperti Oracle, mySQL, atau Microsoft SQL Server.

Tag untuk melakukan permintaan query SQL yang mengembalikan hasil set. Untuk query SQL parameter, Anda menggunakan tag param bersarang di dalam tag query.

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

Example :

<c:set var="bid" value="${param.Add}"/>
<sql:query var="books" >
    select * from PUBLIC.books where id = ?
    <sql:param value="${bid}" />
</sql:query>


Functions Tags

Tag format JSTL digunakan untuk memformat dan menampilkan teks, tanggal, waktu, dan nomor untuk situs web internasionalisasi.

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

JSTL functions are concerned with string manipulation :

toUpperCase, toLowerCase: Changes the capitalization of a string
substring, substringBefore, substringAfter: Gets a subset of a string
trim: Trims white space from a string
replace: Replaces characters in a string
indexOf, startsWith, endsWith, contains, containsIgnoreCase: Checks whether a string contains another string
split: Splits a string into an array
join: Joins a collection into a string
escapeXml: Escapes XML characters in a string




[09] JAVA BEAN

API Java Bean merupakan standar format dari class java. Dengan adanya Java Bean, komponen dapat digunakan sewaktu-waktu untuk membangun program. Penulisan kelas Java Bean mempunyai aturan tertentu sebagai berikut:
a.      Memiliki properti (variabel) dengan akses bukan public yang digunakan untuk menyimpan data.
b.      Memiliki method get dan set (memberi dan mendapatkan properti dari bean).
c.       Memiliki konstruktor kosong.

Berikut ini adalah langkah-langkah membuat kelas Java Bean:
a.      Mendefinisikan variabel dalam bean yang akan kita buat.
Variabel ini tidak boleh dideklarasikan public.
Misal : private String nrp;
b.      Untuk masing-masing variabel dibuat metode get dan set.
Misal : getNrp() dan setNrp()
Untuk boolean, gunakan method setXxx() untuk mengeset nilai boolean dan isXxx yang mengembalikan nilai boolean
Aturan membuat method:
public void set<namaVariabel>
public <tipe_variabel> get<namaVariabel>
public boolean is<namaVariabel>
           c.  Menambahkan konstruktor kosong.

         Berfungsi untuk inisialisasi

Membuat Java Bean

Memanggil javabean dalam halaman jsp memakai sintax:
<jsp:usebean id=”name” class=”package.Class”/>
Yang berarti pembuatan object class yang telah ditentukan dan dimasukkan ke dalam variable dengan nama yang ditentukan id.
Seumpama ada contoh sintax berikut :
<jsp:usebean id=”book1” class=”cwp.Book”/>
Secara normal hal sama dengan scriplet :
<% cwp.Book book1=new cwp.Book(); %>
Meskipun javabean ekivalen dengan membangun sebuah object, tapi dia mempunyai option tambahan yang membuatnya lebih powerfull. Kita dapat menentukan scope yang mendefinisikan ruang batas dari obyek yang akan dibuat. Bisa saja scope bukan hanya pada page ini saja, tapi bisa lebih jauh. Jika ini dapat dishare tentunya akan sangat berguna, jadi kita akan membuat object baru jika dan hanya jika tidak memang benar benar tidak ada yang id dan scopenya sama.

Mengambil Nilai Property Java Bean
Dalam beberapa kasus mungkin kita ingin variable lokal kita mempunyai tipe yang sama sebagai object yang dibuat. Cara pengaksesan javabean adalah memakai sintax jsp:getproperty. Contoh pengaksesan sbb :

<jsp:getProperty name=”book1” propery=”title” />
ekivalen dengan :
<%= book1.getTitle() %>

Mengeset Nilai Property Java Bean
Untuk memodifikasi properti menggunakan sintax jsp:setProperty . Action ini mempunyai beberapa bentuk yang berbeda, tapi untuk yang paling simple perlu tiga attribut yaitu : name, property dan valuenya. Contoh sintax sederhananya adalah sbb :
<jsp:setProperty name=”book1” propery=”title” value=”Core Web Programming”/>
ekivalen dengan :
<%= book1.setTitle(“Core Web Programmming”) %>


Berikut ini adalah contoh sederhana Java Bean dengan JSP:

public class StringBean {
private String message = "No message specified";
public String getMessage() {
return(message);
}
public void setMessage(String message) {
this.message = message;
}
}

Dan pengaksesannya memakai JSP adalah sbb :

<HTML>
<HEAD>
         <TITLE>Using JavaBeans with JSP</TITLE>
</HEAD>
<BODY>
    <TABLE BORDER=5 ALIGN="CENTER">
    <TR><TH CLASS="TITLE"> Using JavaBeans with JSP
</TABLE>
<jsp:useBean id="stringBean"
class="coreservlets.StringBean"/>
<OL>
    <LI>Initial value (getProperty):
    <I><jsp:getProperty name="stringBean"
       property="message" /></I>
    <LI>Initial value (JSP expression):
    <I><%= stringBean.getMessage() %></I>
    <LI><jsp:setProperty name="stringBean"
        property="message" value="Best string bean: Fortex" />
Value after setting property with setProperty:
    <I><jsp:getProperty name="stringBean"
       property="message" /></I>
    <LI><% stringBean.setMessage("My favorite:
        Kentucky Wonder"); %>
Value after setting property with scriptlet:
    <I><%= stringBean.getMessage() %></I>
</OL>
</BODY>
</HTML>

Berikut ini adalah contoh program pemakaian set dan get properti javabean:

<HTML>
<HEAD><TITLE>Using jsp:setProperty</TITLE></HEAD>
<BODY>
<TABLE BORDER=5 ALIGN="CENTER">
<TR><TH CLASS="TITLE">
Using jsp:setProperty</TABLE>
<jsp:useBean id="entry"
class="coreservlets.SaleEntry" />
<jsp:setProperty name="entry" property="itemID"
 value='<%= request.getParameter("itemID") %>' />
<% int numItemsOrdered = 1;
try {
  numItemsOrdered =
  Integer.parseInt(request.getParameter("numItems"));
} catch(NumberFormatException nfe) {}
%>
<jsp:setProperty name="entry"
property="numItems"
value="<%= numItemsOrdered %>" />
<% double discountCode = 1.0;
try {
   String discountString =
   request.getParameter("discountCode");
 // Double.parseDouble not available in JDK 1.1
  discountCode = Double.valueOf(discountString).doubleValue();
} catch(NumberFormatException nfe) {}
 %>
<jsp:setProperty name="entry"
 property="discountCode"
 value="<%= discountCode %>" />
<BR>
<TABLE ALIGN="CENTER" BORDER=1>
<TR CLASS="COLORED">
<TH>Item ID<TH>Unit Price<TH>Number
Ordered<TH>Total Price
<TR ALIGN="RIGHT">
<TD><jsp:getProperty name="entry"
property="itemID" />
<TD>$<jsp:getProperty name="entry"
property="itemCost" />
<TD><jsp:getProperty name="entry"
property="numItems" />
<TD>$<jsp:getProperty name="entry"
property="totalCost" />
</TABLE>
</BODY>
</HTML>