Java Servlet

download Java Servlet

of 57

Transcript of Java Servlet

DASAR-DASAR PEMROGRAMAN JAVA SERVER PAGE (JSP) 1. Servlet Servlet merupakan class yang didefinisikan dalam java dan digunakan untuk meningkatkan kemampuan web server dalam menangani request dan response client. Servlet dapat menerima request dan menghasilkan response melalui protokol komunikasi yang berbeda, tetapi sebagian besar tipe yang digunakan adalah HTTP Servlet, yang diimplementasikan dengan class java javax.servlet.httpServlet. Java memiliki dua paket yang menyediakan interface dan class untuk servlet, yaitu javax.servlet dan javax.servlet.http. Beberapa method yang terdapat pada interface servlet, antara lain adalah : Method void init (ServletConfig config) Method servlet. ServletConfig getServletConfig() Method Keterangan ini dipanggil hanya sekali selama siklus servlet dan

pemanggilan secara otomatis. Method ini digunakan untuk inisialisasi

ini

mengembalikan interface

reference

ke

objek Objek

yang ini

mengimplementasikan

ServletConfig.

memungkinkan servlet mengakses konfigurasi informasi servlet seperti inisialisasi parameter dan ServletContex, yang memungkinkan servlet memiliki akses ke lingkungannya, seperti pengaksesan ke server dimana servlet dijalankan. void service (ServletRequest request, ServletResponse response) Method ini merupakan method pertama yang dipanggil pada setiap servlet untuk merespons request client. String getServletInfo() Method ini didefinisikan programmer servlet untuk mengembalikan String yang berisi informasi servlet seperti author dan versi servlet. Void destroy() Method ini sering disebut clenUp. Method ini untuk mendealokasi resource yang digunakan servlet. Paket servlet mendefinisikan dua buah class abstract yang mengimplementasikan interface Servlet, yaitu class GenericServlet pada paket javax.servlet dan class HttpServlet pada paket javax.servlet.http. Contoh-contoh yang diberikan pada bagian ini diturunkan dari class HttpServlet, yang mendefinisikan kemampuan pemrosesan servlet untuk mewarisi fungsionalitas web server. Method utama yang terdapat pada setiap servlet adalah methot service, yang memiliki parameter

berupa objek ServletRequest dan ServletResponse. Kedua objek ini menyediakan akses untuk input stream maupun output stream dan mengijinkan servlet untuk membaca data dari client dan mengirimkan data kembali ke client. Jika terdapat masalah selama eksekusi servlet, maka class ServletException atau IOException di passing untuk memberitahukan masalah yang terjadi. Class HttpServlet akan melakukan override method service untuk membedakan antara request yang diterima web browser client. Dua tipe request yang paling umum digunakan adalah GET dan POST, yang sering disebut sebagai request method. Request GET digunakan untuk mendapatkan atau menerima informasi dari server yang berupa file HTML atau image. Sedangkan request POST digunakan untuk mengirimkan data ke server dalam bentuk HTML yang berisi data yang dimasukan oleh client. Method yang sering digunakan untuk memberikan respon terhadap request client adalah doGet dan doPost yang memiliki dua parameter, yaitu HttpServletRequest dan HttpServletResponse. Beberapa method yang berasal dari ServletRequest adalah sebagai berikut : Method Keterangan String getParameter(String name) Dikirim ke servlet sebagai bagian request GET atau POST. Enumeration getParameterNames() Mengembalikan nama seluruh parameter yang dikirim ke servlet sebagai bagian dari request POST. String[] getParameterValues(String name) Mengembalikan array of string yang berisi nilai untuk parameter servlet Cookie[] getCookies() Mengembalikan array of cookie, merupakan objek client yang disimpan di server. Cookies dapat digunakan untuk mengidentifikasikan secara unik setiap client oleh server. HttpSession getSession(Boolean create) Mengembalikan objek HttpSession yang sedang berlasung pada client. Parameter akan bernilai jika tidak terdapat objek Httpsession di client. Secara fungsionalitas memilki kegunaan yang sama dengan Cookies. Beberapa method yang berasal dari ServletResponse adalah sebagai berikut : Method Keterangan void addCookie(Cookie cookie) Digunakan untuk menambahkan cookie pada header sebagai respons ke client. ServletOutputStream getOutputStream() Mendapatkan output stream berbasis byte yang memungkinkan data teks dikirim ke client. PrintWriter getWriter() Mendapatkan output stream berbasis karakter yang memungkinkan data

Method

Keterangan

binary dikirim ke client. Void setContentType(String type) Menspesifikasikan type MIME respons ke browser. 1.1. Penanganan request HTTP GET Tujuan utama adalah untuk menerima content dari suatu URL. Content biasanya dalam bentuk HTML. Dibawah ini diberikan contoh program servlet sederhana untuk menangani request HTTP Get untuk menerima content dari suatu URL. Listing Program 1.1.// Nama file : HTTPGetServlet.java // Diskripsi : Membuat dan mengirimkan halaman web ke client import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class HTTPGetServlet extends HttpServlet { public response) throws ServletException, IOException { PrintWriter output; response.setContentType( "text/html" ); output = response.getWriter(); // tipe content // get writer void doGet( HttpServletRequest request, HttpServletResponse

// membuat dan melakukan send halaman HTML ke client StringBuffer buf = new StringBuffer(); buf.append( "\n" ); buf.append( "Contoh Servlet Sederhana\n" ); buf.append( "\n" ); buf.append( "Program Servlet Sederhana!\n" ); buf.append( "" ); output.println( buf.toString() ); output.close(); } } // close PrintWriter stream

Sedangkan file HTML yang mendemonstrasikan servlet untuk menangani Request HTTP GET adalah sebagai berikut : Listing Program 1.2. Contoh Servlet : Request HTTP GET Tekan tombol Submit agar servlet mengirimkan file HTML

Jika HTTPGetServlet.html dijalankan pada browser, maka akan terlihat tampilan pada browser seperti pada gambar 1.1. : Dilakukan dengan memasukan alamat URL pada browser sebagai berikut : http://localhost:8080/server2/HTTPGetServlet.html

Gambar 1.1. Tampilan HTTPGetServlet.html pada Browser Jika button Submit ditekan, maka servlet akan mengembalikan HTML seperti yang terlihat pada browser sebagai berikut :

Gambar 1.2. Servlet yang Menangani Request HTTP Get 1.2. Menangani Request HTTP POST Request HTTP Post sering digunakan untuk mengirimkan data dalam bentuk HTML menjadi server-side form handler yang digunakan untuk memproses data. Dibawah ini diberikan contoh program servlet sederhana untuk menangani request HTTP Post. Contoh ini mendeskripsikan survey

berbasis web untuk mengetahui minat kebutuhan terhadap suatu jenis bahasa pemrograman. Listing Program 1.3.// Nama file : HTTPPostServlet.java // Diskripsi : Hasil survey menggunakan servlet request HTTP POST import javax.servlet.*; import javax.servlet.http.*; import java.text.*; import java.io.*; import java.util.*; public class HTTPPostServlet extends HttpServlet { private String namaBahasa[] = { "Fortran", "Pascal", "C", "Java", "TidakAda" }; public void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { int bahasa[] = null, total = 0; File f = new File( "survey.txt" ); if ( f.exists() ) { // menentukan responden hasil survey try { ObjectInputStream FileInputStream(f)); bahasa = (int []) input.readObject(); input.close(); // close stream input = new ObjectInputStream(new

for ( int i = 0; i < bahasa.length; ++i ) total += bahasa[ i ]; } catch( ClassNotFoundException cnfe ) { cnfe.printStackTrace(); } } else bahasa = new int[ 5 ]; // membaca responden hasil survey current String value = request.getParameter( "jBahasa" );

++total;

// update total of all responses

// menentukan bahasa yang dipilih dan melakukan update total for ( int i = 0; i < namaBahasa.length; ++i ) if ( value.equals( namaBahasa[ i ] ) ) ++bahasa[ i ]; // menulis update total ke disk ObjectOutputStream FileOutputStream(f)); output.writeObject( bahasa ); output.flush(); output.close(); // menghitung persentase double percentages[] = new double[ bahasa.length ]; for ( int i = 0; i < percentages.length; ++i ) percentages[ i ] = 100.0 * bahasa[ i ] / total; // mengirim message terima kasih ke clien response.setContentType( "text/html" ); //content type output = new ObjectOutputStream(new

PrintWriter responseOutput = response.getWriter(); StringBuffer buf = new StringBuffer(); buf.append( "\n" ); buf.append( "Terima Kasih!\n" ); buf.append( "Terima Kasih untuk partisipasinya.\n" ); buf.append( "
Hasil Survei :\n" ); DecimalFormat twoDigits = new DecimalFormat("#0.00"); for ( int i = 0; i < percentages.length; ++i ) { buf.append( "
" ); buf.append( namaBahasa[ i ] ); buf.append( ": " ); buf.append(twoDigits.format(percentages[ i ]) ); buf.append( "% responden: " ); buf.append( bahasa[ i ] );

buf.append( "\n" ); } buf.append( "\n

Total responden: " ); buf.append( total ); buf.append( "\n" ); responseOutput.println( buf.toString() ); responseOutput.close(); } }

Sedangkan file HTML yang mendemonstrasikan servlet untuk menangani Request HTTP POST adalah sebagai berikut :

Listing Program 1.4.

Jika HTTPPostServlet.html dijalankan pada browser, maka akan terlihat tampilan pada browser seperti pada gambar 1.3.: Dilakukan dengan memasukan alamat URL pada browser sebagai berikut : http://localhost:8080/server2/HTTPPostServlet.html

Gambar 1.3. Tampilan HTTPPostServlet.html pada Browser Jika tombol submit ditekan, maka servlet akan mengembalikan dokumen HTML sebagai berikut :

Gambar 1.4. Servlet yang Menangani Request HTTP Post

2. Pemrograman dengan Java Server Pages (JSP) Pada bagian ini akan diberikan tentang servlet dan JSP yang digunakan untuk mengembangkan suatu aplikasi server side berbasis java. JSP bertujuan untuk menyederhanakan pembuatan dan manajemen halaman web yang bersifat dinamis, dengan cara memisahkan content dan presentasi. JSP merupakan halaman yang menggabungkan HTML dengan scripting tag dan program java. Pada saat JSP dipanggil client melalui browser, JSP tersebut akan di kompile terlebih dahulu menjadi servlet, dan kemudian hasilnya dikembalikan ke client. Sebagai ilustrasi diberikan pada gambar 2.1. sebagai berikut :

Bean

Bean

Gambar 2.1. Pemrosesan Halaman JSP Kelebihan JSP

1. JSP dapat berjalan pada sembarang platform. 2. JSP cenderung memiliki performansi yang lebih baik, karena JSP dilakukan kompile terlebih dahulu menjadi servlet yang berupa bytecode. 3. Didukung bahasa Java yang memilki kemampuan OOP dan tingkat reuseability tinggi. 4. Dapat menggunakan JavaBean untuk mengenkapsulasi kode-kode java. Kelemahan JSP 1. 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.

Uses

Us

Beberapa Contents Static

Listing Program 2.1. Hello World Menggunakan JSP

Seperti yang dijelaskan diatas, bahwa halaman JSP akan dilakukan kompile menjadi servlet yang diberikan pada Listing program 2.2. sebagai berikut : Listing Program 2.2.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 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\t\tHello Menggunakan JSP\r\n\t\r\n\r\n\r\n\t"); //end //begin [file="D:\\jakarta-tomcat3.3.1\\webapps\\ROOT\\latihJsp\\helloWorld1.jsp";from=(9,4);to=(9 ,32)] out.print( "Hello World JSP Sederhana"); // end World _value = null;

//HTML//begin [file="D:\\jakarta-tomcat3.3.1\\webapps\\ROOT\\latihJsp\\helloWorld1.jsp";from=(9,34);to=(1 1,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.releasePageContext(pageContext); } } } (_jspxFactory != null)

Jika dijalankan pada browser dengan alamat URL : http://localhost:8080/LatihJSP/helloWorld.jsp Maka akan menampilkan tampilan sebagai berikut :

Gambar 2.2. Tampilan helloWorld.jsp pada Browser 2.1. 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 : 1. Directives : merupakan suatu petunjuk bagi web container tentang sesuatu yang harus dilakukan pada saat container melakukan compile halaman JSP. 2. Scripting Elements : tag untuk menuliskan program Java. 3. Action : special tag yang memberikan pengaruh pada halaman JSP pada saat runtime. 2.1.1. Directives Sintaks : Directives terdiri dari tiga bagian, yaitu : 1. Page Directive 2. Include Directive 3. Taglib Directive 2.1.1.1. Page Directive Untuk menentukan dan memanipulasi atribut-atribut pada halaman JSP serta memberikan informasi

ke container untuk atribut-atribut yang memerlukan proses tertentu. Sintaks : Attribute yang digunakan pada Page Directive diberikan pada tabel sebagai berikut : Attribute Language Extends Import Session Buffer autoFlush isThreadSafe Keterangan Menentukan bahasa pemrograman yang digunakan Digunakan untuk men-generate superclass Mengimport package atau class java, seperti halnya pada program Java Menentukan apakah halaman JSP menggunakan HTTP session Menentukan model buffering untuk output stream ke client Melakukan reset isi buffer jika sudah penuh Mendefinisikan tingkat keamanan mengenai masalah threading halaman JSP. Jika false request akan diproses sebagai single Thread, Info berurutan sesuai urutan kedatangan request Mendefinisikan string informasi yang dapat diperoleh dari implementasi metode errorPage Servlet.getServletInfo() Menentukan error page, sehingga jika terjadi error, maka halaman JSP ini akan isErrorPage ditampilkan Memberikan indikasi apakah halaman JSP merupakan halaman error dari halaman JSP contentType yang lain Menentukan encoding karakter pada JSP dan tipe MIME untuk respons yang dihasilkan JSP. MIME-TYPE text / html CHARSET ISO-8859-1 false Tidak ada Tidak ada true true Default Nilai Java Tidak ada Tidak ada true

Contoh : rubah Go back to admin control myConn =

DriverManager.getConnection("jdbc:mysql:3306//wroxjsp?

Listing Program 2.19. : ( modproc.jsp ) Merubah Record Employee Merubah Record Employee Last Name: First Name: Extension: City:

Department:

Go back to admin control Listing Program 2.20. : ( updproc.jsp ) Pemrosesan Perubahan Record Employee Success Merubah Record Employee See all employees
Go back to control center Sorry, Gagal Merubah Record. Go back to control center Sehingga jika dijalankan pada browser maka akan menampilkan sbb :

Gambar 2.17. Tampilan dbmodemp.jsp

Jika dilakukan perubahan pada salah satu record maka akan browser akan memberikan tampilan sebagai berikut :

Gambar 2.18. Tampilan modproc.jsp Jika ditekan tombol Change Now maka pada browser akan menampilkan sbb :

Gambar 2.19. Tampilan updproc.jsp