JSP and JavaBeans JavaBeans - Mengurangi jumlah code Java dan membuatnya lebih mudah bagi non-programmer untuk membuat JSP yang bekerja dengan kelas bisnis - Ketika class kode yang mendefinisikan Java Bean, atau bean, anda dapat menggunakan tag JSP khusus. - Mampu melakukan lebih dari mendefinisikan obyek bisnis - Dapat digunakan untuk mendefinisikan tombol dan kontrol antarmuka pengguna lainnya - Memanggil JavaBeans dalam halaman jsp memakai sintax: <jsp:usebean id=”name” class=”package.Class”/> - Mengambil Nilai Property Java Bean <jsp:getProperty name=”book1” propery=”title” /> ekivalen dengan <%= book1.getTitle() %> Class javaBean yang memiliki attribute-attribute sesuai dengan field-field yang ada di form, beserta method getter dan setter. public class User { private String username; private String email; private String address; private String gender; private String product; private String payment; public String getAddress() { return address; } public String setAddress(String address) { this.address = address; } public String geEmail() { return email; } public String setEmail(String email) { this.email = email; } public String getGender() { return gender; } public String setGender(String gender) { this.gender = gender; } public String getPayment() { return payment; } public String setPayment(String payment) { this.payment = payment; } public String getProduct() { return product; } public String setProduct(String product) { this.product = product; } public String getUsername() { return username; } public String setUsername(String username) { this.username = username; } } Tiga rules untuk semua JavaBeans harus mengikuti - Harus berisi constructor yang tidak menerima argument - Tidak dapat mendeklarasikan variabel public instance - Harus berisi get dan set methods untuk semua properties yang perlu diakses oleh JSP JavaBeans – example (the code for the User bean class) vpackage business; import java.io.Serializable; public class User implements Serializable { private String firstNamel public User() { firstName = "“; } public User(String first) { firstName = first; } public void setFirstName(String f) { firstName = f; } public String getFirstName() { return firstName; } } Berikut ini adalah contoh program pemakaian set dan get properti javabean: package coreservlets; /** Bean sederhana untuk mengilustrasikan berbagai macam * bentuk jsp:setProperty. */ public class SaleEntry { private String itemID = "unknown"; private double discountCode = 1.0; private int numItems = 0; public String getItemID() { return(itemID); } public void setItemID(String itemID) { if (itemID != null) { this.itemID = itemID; } else { this.itemID = "unknown"; } } public double getDiscountCode() { return(discountCode); } public void setDiscountCode(double discountCode) { this.discountCode = discountCode; } public int getNumItems() { return(numItems); } public void setNumItems(int numItems) { this.numItems = numItems; } // Replace this with real database lookup. public double getItemCost() { double cost; if (itemID.equals("a1234")) { cost = 12.99*getDiscountCode(); } else { cost = -9999; } return(roundToPennies(cost)); } Enterprise JavaBean (EJB) - Tipe lain dari Java Beans. - EJSs serupa dalam beberapa cara untuk JavaBeans - Lebih kompleks dan sulit untuk kode dari JavaBeans Mesin JSP secara otomatis mengkonversi tipe data Code JSP Tags for JavaBeans Usebean action tag merupakan tag yang paling umum digunakan. Ini mengijinkan JSP untuk membuat sebuah instace Java Bean. Digunakan untuk membuat bean dengan name dan scope yang lebih spesifik. Syntax umum usebean action tag: <jsp:useBean id="beanInstanceName" scope="page|request|session|application" { class="package.class" | type="package.class" | class="package.class" type="package.class" | beanName="{package.class | <%= expression %>}" type="package.class" } { /> | > other elements </jsp:useBean> } Pada syntax diatas jsp:usebean menunjukkan lokasi bean. <jsp:useBean id="mybean" class="bean.Music"> <jsp:setProperty name="mybean" property="musicid" value="M999" /> <jsp:getProperty name="mybean" property="musicid" /> </jsp:useBean> Digunakan untuk melakukan setter dan getter pada property. Example – JavaBean: javaBeanName package javaBeanPackageName; public class javaBeanName { private String firstName; public void setFirstName(String f){ firstName = f; } public String getFirstName(){ return firstName; } } Example – Example – How to use it (JSP) <jsp:useBean id="myBean" class=" javaBeanPackageName.javaBeanName" /> <% myBean.setFirstName(“FirstName”); %> <%= myBean.getFirstName() %> Special sequences within attributes Simple JavaBeans that return value – Example Create New -> Java Class Class Name = Hello (Hello.java) Package Name = beanExample package beanExample; public class Hello { private String myText="Hello<br/>This is JavaBean text"; public String getText(){ return myText; } } Simple JavaBeans that return value – Example index.jsp <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <jsp:useBean id="myBean" class="beanExample.Hello" /> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP and JavaBean</title> </head> <body> <%= myBean.getMyText() %> </body> </html> JSP Standard Tag Library <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <table> <tr> <th>No</th> <th>NIM</th> <th>Name</th> <th>Angkatan</th> <th>IPK</th> </tr> <c:forEach var="mhs" items="${daftarMahasiswa}" varStatus="counter"> <tr> <td><c:out value="${counter}" /></td> <td><c:out value="${mhs.npm}" /></td> <td><c:out value="${mhs.nama}" /></td> <td><fmt:formatDate value="${mhs.tanggalMasuk}" pattern="dd-MMM- yyyy"/></td> <td><fmt:formatNumber value="${mhs.ipk}" type="number" maxIntegerDigits="1" maxFractionDigits="2"/></td> </tr> </c:forEach> </table> JSTL adalah singkatan dari Java Standard Tag Library. JSTL merupakan library untuk JSP yang berisi tag-tag standard. JSTL merupakan halaman java yang berada dalam HTML (Java in HTML). Tag pada JSTL : <%..........%> atau <%=………….%> JSTL dapat digunakan apabila dideklarasikan seperti dibawah ini pada bagian file JSP : <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> Tujuan dari JSTL yaitu : - Mempermudah dalam perancangan halaman JSP - Memisahkan halaman kode html dan kode Java pada JSP Work with JSTL Code Library <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> JSTL tags can be classified according to their functions – Core tags <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> – Formatting tags – SQL tags – XML tags – JSTL Functions JSTL core library <c:out> The <c:out> tag displays the result of an expression, similar to the way <%= %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head><title><c:out> Tag Example</title> </head> <body> <c:out value="${'<tag> , &'}"/> </body> </html> <c:choose> <c:if> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title><c:if> Tag Example</title> </head> <body> <c:set var="salary" scope="session" value="${2000*2}"/> <c:if test="${salary > 2000}"> <p>My salary is: <c:out value="${salary}"/><p> </c:if> </body> </html> <c:forEach> - example loop through a collection <c:forTokens> - example parse a string & delimiter JSP code with JSTL <a href="<c:url value='/index.jsp' />">Go to index</a> Equivalent scripting <a href="<%=response.encodeURL("index.jsp")%>"> Go to index</a> Jenis-jenis Tag Pada JSTL : 1. Core (http://java.sun.com/jsp/jstl/core, prefix c) Merupakan bagian inti, terdapat pada bagian perulangan seperti : If, Else, dan Switch Case ataupun iterasi dan kondisi. Tag core menyediakan fungsi yang sangat berguna untuk setiap proyek web. Set core dapat dibagi menjadi sub kategori sebagai berikut: - General Purpose Tags <c:set> Tag ini dapat mengatur variabel di dalam scope tertentu (untuk set value). Dan memiliki atribut: 1. Value : nilai yang akan diatur ke dalam terget bean. 2. Var : nama dari sebuah variabel yang akan di atur di dalam scope tertentu 3. Scope: menjelaskan variabel scope yang dijelaskan oleh atribut var. <c:out> Tag ini digunakan untuk menampilkan atau melakukan pemanggilan hasil secara langsung kepada obyek yang sesuai dengan halaman output. Dengan kata lain, tag ini akan menuliskan kata yang tertulis dalam atribut value dan dalam bentuk non-XML tags. <c:remove> Tag ini digunakan untuk menghapus variabel yang telah dibuat. Tag ini memiliki dua atribut : - Scope: scope variabel yang akan di hapus - Var: nama variabel yang akan di hapus dari scope tertentu Contoh : - Iteration Merupakan tag untuk perulangan yang terdiri dari : <forEach> dan <forTokens> <c:forEach> Tag yang digunakan pada perulangan untuk variabel dan pemanggilan output yang berupa integer. Contoh : <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title><c:forEach> Tag Example</title> </head> <body> <c:forEach var="i" begin="1" end="5">Item<c:out value="${i}"/><p> </c:forEach> </body> </html> <c:forTokens> Tag ini digunakan dengan memasukkan langsung calue yang ingin ditampilkan. Terdapat delims (pemisah) karakter string. Contoh : <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title><c:forTokens> Tag Example</title> </head> <body> <c:forTokens items="Zara,nuha,roshy" delims="," var="name"> <c:out value="${name}"/><p> </c:forTokens> </body> </html> - Conditionals Tag yang fungsinya sama dengan standar if, else-if, yang ditemukan dalam standar Java. Terdapat dua set kondisional : - Tag <c:if> dan - Tag <c:choose> yang berelasi dengan tag <c:when> serta <c:otherwise> <c:if> Dieksekusi apabila pernyataan didalam body bernilai True. <c:choose>, <c:when>, dan <c:otherwise> Meemiliki cara kerja yang sama dengan kondisi pemilihan Switch Case. 2. XML processing (http://java.sun.com/jsp/jstl/xml, prefix x) Memiliki kaitan dengan dokumen XML 3. SQL (http://java.sun.com/jsp/jstl/sql, prefix sql) Memiliki kaitan dengan database prefix, yang mana tag ini adalah default(settingan) aslinya dan tidak dapat diubah. Dan bertugas dalam pengolahan data pada database 4. Functions (http://java.sun.com/jsp/jstl/functions, prefix fn) Biasanya digunakan untuk manipulasi String. 5. Formatting (http://java.sun.com/jsp/jstl/fmt) Digunakan untuk internasionalisasi sehingga web yang dihasilkan dapat diakses dengan versi banyak bahasa Tahap-Tahap Pembuatan JSP Dengan JSTL : 1. Tambahkan library (file .jar) ke dalam package libraries. Dan bila tidak tersedia pada library, maka kunjungi website Oracle dan download filenya. 2. Tambahkan file JSP 3. Tambahkan tag-tag JSTL. Terutama tag : <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> Dan letakkan sebelum <html>. Kemudian tulis kode java setelah <body> dan sebelum </body> Contoh Kode Program pada JSTL : Untuk melakukan looping, kita bisa menggunakan tag foreach dalam paketcore. Dan untuk memformat tanggal dan angka, kita menggunakan tagformatDate dan formatNumber dalam paket fmt Contoh kode program : <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <table> <tr> <th>No</th> <th>NPM</th> <th>Nama</th> <th>Tanggal Masuk</th> <th>IPK</th> </tr> <c:forEach var="mhs" items="${daftarMahasiswa}" varStatus="counter"> <tr> <td><c:out value="${counter}" /></td> <td><c:out value="${mhs.npm}" /></td> <td><c:out value="${mhs.nama}" /></td> <td><fmt:formatDate value="${mhs.tanggalMasuk}" pattern="dd-MMM-yyyy"/></td> <td><fmt:formatNumber value="${mhs.ipk}" type="number" maxIntegerDigits="1" maxFractionDigits="2"/></td> </tr> </c:forEach> </table> Perbedaan JSTL dan Tag Bean Biasa : Dengan Java Biasa: Dengan JSTL :