Java Server Pages (JSP) merupakan sebuah tenologi servlet-based yang digunakan pada web tier untuk menghadirkan dynamic dan static content. JSP merupakan text-based dan kebanyakan berisi template text HTML yang digabungkan dengan spesifik tags dynamic content.
Alasan Menggunakan JSP
- Sejak JSPs merupakan dokumen text seperti HTML, para pengembang menghindari format dan manipulasi yang memungkinkan String yang sangat panjang untuk menghasilkan output. Content HTML sekarang tidak ditempelkan dengan berbagai macam kode dari Java. Hal ini membuatnya lebih mudah untuk dipelihara.
- JSPs lebih dikenal oleh semua orang dengan pengetahuan dari HTML, hanya dengan mempelajari markup dynamic. Hal ini membuatnya mungkin untuk para desainer site untuk membuat template HTML dari sebuah site, dengan para pengembang memprosesnya suatu saat nanti untuk memasukkan tags yang menghasilkan dynamic content. Hal ini juga memudahkan dalam pengembangan web page.
- JSPs memiliki built-in yang mendukung untuk penggunaan komponen software yang dapat digunakan kembali(JavaBeans). Hal ini tidak hanya membiarkan para pengembang menghindari kemungkinan menemukan kembali inti/kemudi dari tiap aplikasi, mempunyai software pendukung untuk memisahkan komponen software untuk menghandle logic promotes separation dari presentasi dan business logic.
- JSPs, merupakan bagian solusi dari Java untuk pengembang aplikasi web, merupakan multi-platform yang tak terpisahkan dan dapat dijalankan pada berbagai container servlet yang compatible, dengan mengabaikan vendor atau sistem operasinya.
- Dalam kaitannya dengan cara kerja JSPs, mereka tidak membutuhkan kompilasi dari para pengembang. Kompilasi ini telah ada untuk kita pada kontainer servlet. Modifikasi JSPs dideteksi secara otomatis. Hal ini secara relatif membuatnya mudah untuk dibangun.
Contoh JSP
<html> <head><title>Contoh JSP</title> </head> <body> Waktu sekarang : <%= new java.util.Date() %> </body> </html>Gambar diatas adalah file JSP yang simple yang melakukan penyambutan untuk site user sebagai penginformasian tanggal dan waktu saat ini untuk user.
Dari contoh diatas, kita dapat melihat bahwa file JSP merupakan sebagian besar dari HTML. Hanya pada bagian ini yang beda :
<%= new java.util.Date()%>Hal ini merupakan bagian dari kode Java untuk menampilkan hari dan tanggal pada saat itu juga. Hal ini mempermudah unutk membuat objek baru untuk membuat objek Date dan menampilkannya sebagai String.
Alur JSP
Container servlet mengatur JSPs pada suatu cara untuk mengatur servlet itu sendiri melalui penggunaan suatu alur JSP maka dapat dijalankan dengan baik.
JSPs memiliki tiga fase alur : inisialisasi, servis, dan destruksi. Fase-fase ini sama dengan method servlet yang diambil dari container yang berbeda : jspInit() untuk inisialisasi fase, _jspService() untuk servis fase, dan jspDestroy() untuk mendestruksi fase.
Dari contoh JSP yang telah diberikan, terlihat membingungkan untuk membahas method jspInit atau _jspService(). Contoh dari JSP hanya simple text page yang kebanyakan berasal dari content HTML : dia tidak memiliki method yang lain. Jawaban dari ha tersebut adalah : JSPs di-compile kedalam class servlet yang sama oleh server. Hal ini menyebabkan class servlet yang menangani permintaan untuk page JSP. Translasi ini dimasukkan kedalam servlet dan kompilasi subsequent telah selesai digunakan oleh server : para pengembang tidak perlu ragu-ragu tentang bagaimana prosedure ini diselesaikan.
Pemrograman Dengan Java Server Pages
Gambar Pemrosesan Halaman JSP
Kelebihan JSP
- JSP dapat berjalan pada sembarang platform.
- JSP cenderung memiliki performansi yang lebih baik, karena JSP dilakukan kompile terlebih dahulu menjadi servlet yang berupa bytecode.
- Didukung bahasa Java yang memilki kemampuan OOP dan tingkat reuseability tinggi.
- Dapat menggunakan JavaBean untuk mengenkapsulasi kode-kode java.
Kelemahan
JSP
- Proses kompile terhadap halaman JSP mengakibatkan client harus menunggu lebih lama pada saat pertama kali di lakukan loading. Hal ini tentu saja menyebabkan kecepatan proses JSP secara menyeluruh berkurang.
Listing
Program
<%=
"Hello World JSP Sederhana"%>
|
Seperti yang dijelaskan diatas, bahwa halaman JSP akan dilakukan
kompile menjadi servlet yang diberikan pada Listing program sebagai
berikut :
Listing
Program
package LatihJsp;
import
javax.servlet.*;
import javax.servlet.http.*;
import
javax.servlet.jsp.*;
public class helloWorld1_2 extends
org.apache.jasper.runtime.HttpJspBase {
static {
}
public
helloWorld1_2( ) {
}
private
boolean _jspx_inited = false;
public final
synchronized void _jspx_init() throws
org.apache.jasper.JasperException {
if (!
_jspx_inited) {
_jspx_inited
= true;
}
}
public void
_jspService(HttpServletRequest request, HttpServletResponse response)
throws
java.io.IOException, ServletException {
JspFactory
_jspxFactory = null;
PageContext
pageContext = null;
HttpSession
session = null;
ServletContext
application = null;
ServletConfig
config = null;
JspWriter
out = null;
Object
page = this;
String _value = null;
try {
try {
_jspx_init();
_jspxFactory = JspFactory.getDefaultFactory();
response.setContentType("text/html;charset=ISO-8859-1");
pageContext
= _jspxFactory.getPageContext(this, request, response,
"", true, 8192,
true);
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
// HTML // begin
[file="D:\\jakarta-tomcat-3.3.1\\webapps\\ROOT\\latihJsp\\helloWorld1.jsp";from=(0,0);to=(9,1)]
out.write("\r\n\r\n\r\n\r\n\t\r\n\r\n\r\n\t");
// end
//
begin
[file="D:\\jakarta-tomcat-3.3.1\\webapps\\ROOT\\latihJsp\\helloWorld1.jsp";from=(9,4);to=(9,32)]
out.print( "Hello World JSP Sederhana");
// end
// HTML // begin
[file="D:\\jakarta-tomcat-3.3.1\\webapps\\ROOT\\latihJsp\\helloWorld1.jsp";from=(9,34);to=(11,7)]
out.write("\r\n\r\n");
// end
}
catch (Exception ex) {
if
(out != null && out.getBufferSize() != 0)
out.clearBuffer();
if
(pageContext != null) pageContext.handlePageException(ex);
} catch (Error error) {
throw
error;
} catch (Throwable
throwable) {
throw
new ServletException(throwable);
}
} finally {
if
(out instanceof org.apache.jasper.runtime.JspWriterImpl) {
((org.apache.jasper.runtime.JspWriterImpl)out).flushBuffer();
}
if
(_jspxFactory != null) _jspxFactory.releasePageContext(pageContext);
}
}
}
|
Jika dijalankan pada browser dengan alamat URL :
Maka akan menampilkan tampilan sebagai berikut
:
Gambar Tampilan helloWorld.jsp
pada Browser
Elemen-elemen JSP
Struktur halaman JSP adalah penambahan program
Java dalam tag <% %> pada suatu halaman HTML untuk membangkitkan
content yang bersifat dinamik.
JSP memiliki tiga komponen utama, yaitu :
- Directives : merupakan suatu petunjuk bagi web container tentang sesuatu yang harus dilakukan pada saat container melakukan compile halaman JSP.
- Scripting Elements : tag untuk menuliskan program Java.
- Action : special tag yang memberikan pengaruh pada halaman JSP pada saat runtime.
Directives
Sintaks :
<%@ namaDirective attribute1=”value1”
attribute2 =”value2” %>
Directives terdiri dari tiga bagian, yaitu :
- Page Directive
- Include Directive
- Taglib Directive
Untuk
menentukan dan memanipulasi atribut-atribut pada halaman JSP serta
memberikan informasi ke container untuk atribut-atribut yang memerlukan
proses tertentu.
Sintaks
:
<%@ page ATTRIBUTE %>
Attribute yang digunakan pada Page Directive
diberikan pada tabel sebagai berikut :
Attribute
|
Keterangan
|
Default Nilai
|
Language
|
Menentukan bahasa pemrograman yang digunakan
|
“Java”
|
Extends
|
Digunakan untuk men-generate superclass
|
Tidak ada
|
Import
|
Mengimport package atau class java, seperti halnya pada program
Java
|
Tidak ada
|
Session
|
Menentukan apakah halaman JSP menggunakan HTTP session
|
“true”
|
Buffer
|
Menentukan model buffering untuk output
stream ke client
| |
autoFlush
|
Melakukan reset isi buffer jika sudah penuh
|
“true”
|
isThreadSafe
|
Mendefinisikan tingkat keamanan mengenai
masalah threading halaman JSP. Jika “false” request akan diproses
sebagai single Thread, berurutan sesuai urutan kedatangan request
|
“true”
|
Info
|
Mendefinisikan string informasi yang dapat
diperoleh dari implementasi metode Servlet.getServletInfo()
|
Tidak ada
|
errorPage
|
Menentukan error page, sehingga jika terjadi error, maka
halaman JSP ini akan ditampilkan
|
Tidak ada
|
isErrorPage
|
Memberikan indikasi apakah halaman JSP
merupakan halaman error dari halaman JSP yang lain
|
“false”
|
contentType
|
Menentukan encoding karakter pada JSP dan tipe MIME untuk respons yang dihasilkan JSP.
|
MIME-TYPE text / html CHARSET
ISO-8859-1
|
Contoh :
<%@ page
language=”Java” import="java.sql.*“ session=”true” buffer=”12kb”
autoFlush=”true” errorPage=”myError.JSP” %>
Include
Directive
Untuk menyisipkan isi file lain ke dalam file JSP
Sintaks :
<%
include file=”namaFile” %>
Contoh :
<% include
file=”myHeader.html” %>
Taglib Directive
Untuk penggunaan tag library atau tag
tambahan.
Contoh :
<%@ taglib
url=http://Latihan.com/tagKu prefix=”test” />
…
Scripting Elements
Terdiri dari tiga elemen, yaitu :
- Declarations
- Scriptlets
- Expression
Declarations
Declarations merupakan blok program Java yang
digunakan untuk mendeklarasikan variable dan method yang akan digunakan
dalam program. Variable yang dideklarasikan pada bagian ini akan
berperan sebagai variable global pada servlet hasil kompile.
Sintaks :
<%!
Deklarasi variable dan method %>
Contoh :
<%! int i = 10 ;
double x = 5.0 ; %>
Scriptlets
Scriptlets merupakan blok program Java yang
dieksekusi pada saat pemrosesan request. Scriptlets akan dijalankan
sesuai dengan instruksi program yang diberikan.
Sintaks :
<% Sintaks Program
Java %>
Contoh
:
<% System.out.println(“Test
Scriptlets”); %>
Expression
Expression merupakan cara untuk memperpendek penulisan scriptlets
dan akan mengembalikan nilai String yang dikirim melalui output stream.
Sintaks :
<%=
Ekspresi Java %>
Contoh :
<%
String
oAnalisa=oAnalisaReview.getAnalisa(oIDK);
%>
Hasil Analisa dan Review
<%=oAnalisa%> -------------> Expression
Action
Action merupakan tag yang mempengaruhi
perilaku halaman JSP pada saat runtime. JSP mengenal tag action standar
dan custom tag. Tag standar adalah tag yang didefinisikan dalam
spesifikasi JSP, sedangkan custom tag adalah tag baru yang dapat
didefinisikan sendiri. Pada bagian ini hanya dibahas mengenai tag action
standar.
Tag action standar
JSP adalah sebagai berikut :
Action tag ini berfungsi untuk
meng-instantiate suatu Java Object (Java Bean) agar kemudian dapat
digunakan pada halaman JSP. Penggunaan bean ini merupakan salah satu
cara untuk memisahkan antara logic dan presentation pada JSP. Logic yang
digunakan pada JSP dapat diletakkan pada suatu bean, dan bean ini dapat
digunakan untuk halaman JSP yang lain.
Sintaks
:
Untuk beanDetail berupa salah satu dibawah ini :
class =
“className”
class =
“className” type = “typeName”
beanName = “beanName”
type = “typeName”
type = “typeName”
Atribut pada action tag dapat dilihat pada tabel sebagai berikut :
Atribut
|
Deskripsi
|
Default Nilai
|
id
|
Nama untuk mengindentifikasi bean yang akan
di-instantiate
|
Tidak ada
|
scope
|
Jangkauan reference terhadap bean. Nilai yang
tersedia untuk scope antara lain : page, request, session, application
|
“page”
|
class
|
Nama class bean yang akan digunakan
|
Tidak ada
|
beanName
|
Atribut khusus yang terkait dengan method instantiate()
pada class java.beans.Beans
|
Tidak ada
|
Type
|
Menentukan tipe class
|
Nilai dari
atribut class
|
Contoh :
Action tag standar ini digunakan bersama
dengan action tag . Action tag ini berfungsi untuk men-set nilai
properties yang terdapat pada bean.
Sintaks :
Untuk propertyDetail adalah sebagai berikut :
property = “*”
property =
“propertyName”
property =
“propertyName” param = “parameterName”
property =
“propertyName” value = “propertyValue”
Contoh :
Action tag ini merupakan kebalikan dari action
tag , dimana berfungsi untuk mengambil nilai property
pada Java Bean.
Sintaks :
Contoh
:
Action tag ini berfungsi untuk menset
nilai-nilai parameter yang akan digunakan dalam halaman JSP.
Sintaks :
Contoh :
Action tag ini memiliki fungsi yang serupa
dengan directive <%@ include file = “fileName” %>. Tetapi memiliki perbedaan mendasar, yaitu
waktu eksekusi. Untuk tag dieksekusi pada saat request dan directive include dieksekusi pada saat kompile.
Hasil eksekusi dari keduanya adalah sama dan
dapat digunakan untuk melakukan include halaman statis atau dinamis.
Action tag ini sebaiknya digunakan jika
halaman yang di-include-kan sering mengalami perubahan secara dinamis,
tetapi jika tidak mengalami perubahan sebaiknya digunkan directive
include. Hal ini didasarkan pada proses kompile ulang halaman JSP. Pada
directive jika halaman JSP yang meng-include halaman JSP lain tidak
berubah, sedangkan halaman JSP yang di-include-kan mengalami perubahan,
maka kompile ulang belum tentu dilakukan. Tetapi pada action tag kompile
ulang pasti akan dilakukan karena proses include dilakukan pada saat
melakukan proses terhadap request.
Sintaks :
Contoh
:
Action tag ini berfungsi untuk melakukan
forward ke suatu halaman lain, baik halaman HTML atau
JSP.
Sintaks :
Contoh :
Action tag ini untuk menghasilkan kode-kode
yang sesuai target browser dalam menyisipkan komponen Java bean atau
applet secara otomatis.
sumber : http://rendyriskianto.blogspot.com/2010/07/pemrograman-dengan-java-server-pages.html
sumber : http://rendyriskianto.blogspot.com/2010/07/pemrograman-dengan-java-server-pages.html
Tidak ada komentar:
Posting Komentar