Java Server Pages(3) Pemrograman Lanjut
Praktikum 1.
Contoh penggunaan useBean, setProperty dan getProperty.
Buat package cwp. Simpan Pesan.java di package cwp. Simpan Pesan.jsp di process. Pesan.java
Pesan.jsp
Selanjutnya cobalah untuk membuat aplikasi yang mengakses data numerik (misal: int atau double)!
Atribut value pada <jsp:setProperty> digunakan untuk memberikan nilai yang bertipe String. Jika nilai pada value tersebut diberikan pada atribut numerik maka secara otomatis akan terjadi konversi nilai.
package cwp; public class Pesan{ private String message; public Pesan() {}
public void setMessage(String message) { this.message = message;
}
public String getMessage() { return(message); } } <HTML> <HEAD> <TITLE>JavaBean in JSP</TITLE> </HEAD> <BODY> <p>
<jsp:useBean id="coba" class="cwp.Pesan" /> <jsp:setProperty name="coba"
property="message" value="5" />
Mengambil nilai yang sudah di set sebelumnya:
<jsp:getProperty name="coba" property="message" />
</p> </BODY> </HTML>
Praktikum 2.
Contoh penggunaan useBean, setProperty dan getProperty serta penggunaan JSP exspression dan scriplet.
Jalannya program:
1. Dibuat bean dengan nama StringBean.
2. Mengambil nilai awal property message dengan menggunakan getProperty. (Perhatikan message di StringBean.java adalah merupakan instance variable). 3. Mengambil nilai awal property message dengan menggunakan JSP
exspression.
4. Mengeset nilai property message dengan menggunakan setProperty.
5. Mengambil kembali nilai property message dengan menggunakan getProperty setelah sebelumnya diset pada langkah 4.
6. Mengambil nilai property message dengan menggunakan scriplet.
Simpan StringBean.java di package cwp. Simpan JSP-Styles.css dan StringBean.jsp di process.
JSP-Styles.css package cwp;
/** A simple bean that has a single String property * called message.
*/
public class StringBean {
private String message = "No message specified"; public void setMessage(String message) {
this.message = message; }
public String getMessage() { return(message);
} }
<STYLE TYPE="text/css"> <!--
BODY { background-color: #FDF5E6 } A:hover { color: red }
H1 { color: #440000; text-align: center;
font-family: Arial Black, Arial, Helvetica, sans-serif }
H2 { color: #440000; text-align: left;
font-family: Arial, Helvetica, sans-serif }
StringBean.jsp
H3 { color: #440000; text-align: left;
font-family: Arial, Helvetica, sans-serif } UL { margin-top: 0; border-top-width: 0; padding-top: 0 } DT { font-weight: bold; } PRE { font-size: 105%; } CODE { font-size: 105%; } .TOC { font-size: 90%; font-weight: bold;
font-family: Arial, Helvetica, sans-serif }
TH.COLORED { background-color: #FFAD00 }
TR.COLORED { background-color: #FFAD00 }
TH.TITLE { background-color: #EF8429; font-size: 28px;
font-family: Arial, Helvetica, sans-serif; }
-->
</STYLE>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <!--
Simple example of jsp:useBean and manipulating properties with jsp:setProperty and jsp:getProperty and
with explicit Java code in scriptlets and expressions. -->
<HTML> <HEAD>
<TITLE>Using JavaBeans with JSP</TITLE> <LINK REL=STYLESHEET
HREF="JSP-Styles.css" TYPE="text/css"> </HEAD>
<BODY>
<TABLE BORDER=5 ALIGN="CENTER"> <TR><TH CLASS="TITLE">
Praktikum 3.
Contoh penggunaan useBean, setProperty dan getProperty.
Perhatikan perubahan nilai instance variable count akibat dari proses-proses!
Simpan CounterBean.java di package com.chocolove. Simpan jsp_bean.jsp di process.
CounterBean.java /* paket dari class */ package com.chocolove; public class CounterBean {
int count = 3; /* nilai awal properti */ /* method untuk mengambil nilai properti */ public int getCount() {
return count; }
/* method untuk mengisi nilai properti */ public void setCount(int c) {
count = c; }
/* method untuk menaikkan nilai properti */ public int increaseCount() {
count++; return count; }
}
<jsp:useBean id="stringBean" class="cwp.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>
jsp_bean.jsp
Praktikum 2.
Praktikum 4. Menggunakan Java Bean dengan property=”*”
BeanMusik.java <html> <head> <title>JSP</title> </head> <body>
<jsp:useBean id="cacah" class="com.chocolove.CounterBean" scope="page">
Nilai awal, langsung dari Action getProperty tanpa set lewat JSP :
<jsp:getProperty name="cacah" property="count" /><br> <jsp:setProperty name="cacah" property="count" value="8" /> </jsp:useBean>
<%
out.print("Nilai setelah diset dengan setProperty : "+cacah.getCount());
cacah.setCount(5); cacah.increaseCount();
out.println("<br>");
out.println("Nilai setelah dicacah :"+cacah.getCount()); %>
<br>
Nilai dari Action getProperty :
<jsp:getProperty name="cacah" property="count" /><br>
</body> </html>
package cwp;
public class BeanMusik { private String nama; private String musik; public BeanMusik () {}
public void setNama(String nama) { this.nama = nama;
}
public String getNama() { return(this.nama); }
public void setMusik(String musik) { this.musik = musik;
}
public String getMusik() { return(this.musik); }
public String getKomentar() { String tmp;
tmp = "Hello, " + this.nama + "." + "Anda suka " + this.musik + ", ya?"; return(tmp);
TestBean.html
BeanMusik.jsp <HTML> <HEAD>
<TITLE>Tes Java Bean</TITLE> </HEAD>
<BODY>
<FORM ACTION="bean.jsp" METHOD="post"> Nama Anda:
<INPUT TYPE = "TEXT" NAME="nama"> <BR>
Musik yang Anda sukai:</TD> <SELECT NAME="musik"> <OPTION VALUE = "Jazz">Jazz <OPTION VALUE = "Rock">Rock <OPTION VALUE = "Dangdut">Dangdut <OPTION VALUE = "Klasik">Klasik
<OPTION VALUE = "Keroncong">Keroncong <OPTION VALUE = "Seriosa">Seriosa
</SELECT> <BR>
<INPUT TYPE="submit" VALUE="Kirim"> </FORM>
</BODY> </HTML>
<jsp:useBean id="beanMusik" class="cwp.BeanMusik" /> <jsp:setProperty name="beanMusik" property="*" /> <HTML>
<HEAD>
<TITLE>Java Bean</TITLE> </HEAD>
<BODY>
nama = <jsp:getProperty name="beanMusik" property="nama" /> <BR>
musik = <jsp:getProperty name="beanMusik" property="musik" /> <BR>
komentar = <jsp:getProperty name="beanMusik" property="komentar" />
</BODY> </HTML>
Praktikum 5.
SaleEntry class has an itemID property (a String), a numItems property (an int), a discountCode property (a double), and two read-only properties itemCost and totalCost (each of type double).
SaleEntry.java
SaleEntry1.jsp
package cwp;
/** Simple bean to illustrate the various forms * of 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;
}
// In real life, replace this with database lookup.
public double getItemCost() { double cost; if (itemID.equals("a1234")) { cost = 12.99*getDiscountCode(); } else { cost = -9999; } return(roundToPennies(cost)); }
private double roundToPennies(double cost) { return(Math.floor(cost*100)/100.0); }
public double getTotalCost() {
return(getItemCost() * getNumItems()); }
SaleEntry.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <!--
Example of using jsp:setProperty with an explicit value supplied to the "value" attribute.
--> <HTML> <HEAD> <TITLE>Using jsp:setProperty</TITLE> <LINK REL=STYLESHEET HREF="JSP-Styles.css" TYPE="text/css"> </HEAD> <BODY>
<TABLE BORDER=5 ALIGN="CENTER"> <TR><TH CLASS="TITLE">
Using jsp:setProperty</TABLE>
<jsp:useBean id="entry" class="cwp.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>
Untuk menjalankan program akses url dengan cara sebagai berikut:
http://localhost:8080/process/SaleEntry1.jsp?itemID=a1234&numItems=11&discountCode=0.95 Perhatikan pada praktikum 5 diatas digunakan ekspresi JSP untuk memberikan nilai pada atribut value. Nilai yang diperoleh dari pengambilan parameter adalah bernilai String. Bagaimana bila nilai hasil pengambilan parameter tersebut akan diberikan pada atribut yang bertipe numerik? Diperlukan konversi tipe data seperti yang dicontohkan pada atribut discountCode dan numItems diatas.
Ingat method getParameter(String param) akan mengembalikan nilai String.
Praktikum 6.
SaleEntry2.jsp dan SaleEntry3.jsp adalah alternatif dari praktikum 5. Perhatikan bahwa pada alternatif ini tidak diperlukan konversi tipe data.
SaleEntry2.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <!--
Example of using jsp:setProperty and an explicity association with an input parameter. See SaleEntry1.jsp
and SaleEntry3.jsp for alternatives. --> <HTML> <HEAD> <TITLE>Using jsp:setProperty</TITLE> <LINK REL=STYLESHEET HREF="JSP-Styles.css" TYPE="text/css"> </HEAD> <BODY>
<TABLE BORDER=5 ALIGN="CENTER"> <TR><TH CLASS="TITLE">
Using jsp:setProperty</TABLE>
<jsp:useBean id="entry" class="cwp.SaleEntry" /> <jsp:setProperty name="entry" property="itemID" param="itemID" /> <jsp:setProperty name="entry" property="numItems" param="numItems" />
<%-- WARNING! Both the JSWDK 1.0.1 and the Java Web Server have a bug that makes them fail on double
type conversions of the following sort. --%> <jsp:setProperty name="entry" property="discountCode" param="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>
SaleEntry3.jsp SaleEntry3.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <!--
Example of using jsp:setProperty and a general association with the input parameters. See SaleEntry1.jsp
and SaleEntry2.jsp for alternatives. --> <HTML> <HEAD> <TITLE>Using jsp:setProperty</TITLE> <LINK REL=STYLESHEET HREF="JSP-Styles.css" TYPE="text/css"> </HEAD> <BODY>
<TABLE BORDER=5 ALIGN="CENTER"> <TR><TH CLASS="TITLE">
Using jsp:setProperty</TABLE>
<jsp:useBean id="entry" class="cwp.SaleEntry" />
<%-- WARNING! Both the JSWDK 1.0.1 and the Java Web Server have a bug that makes them fail on automatic
type conversions to double values. --%>
<jsp:setProperty name="entry" property="*" /> <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>