Home >Documents >Komplit Modul

Komplit Modul

Date post:30-Dec-2016
Category:
View:275 times
Download:4 times
Share this document with a friend
Transcript:

BAB IPENDAHULUAN

Dewasa ini pengembang pengembang banyak membuat aplikasi transaksi yang terdistribusi untuk digunakan di perusahaan perusahaan besar. Di era teknologi informasi yang ditandai dengan adanya tuntutan yang besar terhadap e-commerce, aplikasi - aplikasi enterprise harus didesign, dibangun dan diproduksi dengan biaya yang kecil dan pemanfaatan resource yang sedikit namun dengan hasil yang optimal.Dalam rangka mengurangi biaya dan untuk mengembangkan aplikasi yang cepat dan tepat, Java Enterprise Edition menyediakan pendekatan component-based untuk mendesign, mengembangkan dan mendeploy aplikasi aplikasi enterprise. Java Enterprise Edition menawarkan model aplikasi multi tier terdistribusi, komponen yang dapat digunakan kembali, control transaksi yang lebih fleksibel dan dukungan web service melalui teknologi XML. Hal ini membawa dampak pengembang tidak hanya menghasilkan solusi solusi bisnis yang innovative secara lebih cepat, tetapi juga solusi J2EE tidak terikat pada produk dan API dari vendor manapun. Vendor dan customer dapat memilih produk dan komponen komponen yang terbaik untuk bisnis dan persyaratan persyaratan teknis lainnya.

1.1. Aplikasi Aplikasi Multitier Terdistribusi J2EE menggunakan aplikasi multitier terdistribusi untuk membangun aplikasi aplikasi enterprise. Aplikasi logik dibagi ke dalam komponen komponen menurut fungsi, dan berbagai komponen aplikasi yang menyusun aplikasi J2EE diinstall pada mesin mesin yang berbeda menurut tier dalam lingkungan J2EE multitier. Gambar 1.1 berikut ini menunjukkan dua aplikasi aplikasi multitier J2EE yang dibagi ke dalam tier.Aplikasi J2EE yang ditunjukkan pada gambar 1.1 ini terbagi atas : Komponen client-tier yang berjalan pada sisi client Komponen web-tier yang berjalan pada server J2EE Komponen business-tier yang berjalan pada server J2EE Sistem informasi enterprise (EIS) yang berjalan pada EIS ServerMeskipun aplikasi enterprise dapat terdiri atas tiga atau empat tier seperti pada gambar 1.1, aplikasi aplikasi multitier J2EE biasanya terdiri atas tiga tier karena terdistribusi pada tiga lokasi yaitu client machine, server J2EE dan database pada sisi back end.

Gambar 1.1 Aplikasi Multitier

1.2. Komponen J2EE Aplikasi aplikasi J2EE dibuat oleh komponen komponen. Suatu komponen J2EE adalah satuan perangkat lunak fungsional yang dipasangkan dalam satu aplikasi J2EE dengan kelas kelas dan file file dan yang berkomunikasi dengan component komponen lainnya. Komponen komponen J2EE adalah sebagai berikut :a. Aplikasi client dan applet adalah komponen komponen yang berjalan pada sisi clientb. Komponen komponen teknologi java servlet dan javaserver pages adalah web komponen yang berjalan pada server.c. Komponen komponen enterprise java beans adalah business komponen yang berjalan pada server. Komponen komponen J2EE ditulis dalam bahasa java dan dikompilasi dengan cara yang sama seperti bahasa program lainnya. Perbedaan antara komponen J2EE dan class java standart adalah bahwa komponen komponen J2EE diasemble dalam satu aplikasi J2EE dan dideploy untuk produksi dimana mereka dijalankan dan dimanage oleh server J2EE.

1.3. J2EE ClientJ2EE client dapat berupa suatu web client atau aplikasi client1.3.1. Web ClientWeb client terdiri atas dua bagian yaitu web page dinamis yang berisi bermacam macam markup language (HTML,XML dan lain lain), yang dihasilkan oleh bermacam macam web komponen yang berjalan pada web tier; dan web browser yang merender halaman halaman web yang diterima dari server.Web client kadangkalanya disebut thin client. Thin client biasanya tidak melakukan query terhadap database, mengekesekusi aturan aturan bisnis yang kompleks atau terhubung ke aplikasi aplikasi yang legal.1.3.2. AppletApplet adalah aplikasi client yang ditulis dalam bahasa java yang dieksekusi oleh java virtual machine yang terinstall pada web browser. Olehya, client perlu java plug in supaya applet dapat dieksekusi oleh web browser.Komponen komponen web adalah API terpilih untuk membuat program web client karena tidak ada plug in atau security policy files yang dibutuhkan pada sisi client. Juga komponen komponen web memungkinkan design aplikasi secara lebih jelas dan modular karena komponen komponen web memberikan suatu cara untuk memisahkan program program aplikasi dari design halaman web.1.3.3. Application ClientApplication client berjalan pada client machine dan memberikan fasilitas pada user untuk menangani tugas yang membutuhkan user interface yang dapat disiapkan oleh satu markup language. Application client mempunyai graphical user interface yang dibuat dari Swing atau AWT API, namun memungkinkan juga menggunakan Command Line Interface.Application client secara langsung mengakses enterprise bean yang berjalan pada business tier. Juga applikasi client dapat membuka koneksi http untuk membangun komunikasi dengan servlet yang berjalan pada web tier.1.4. Komunikasi Server J2EEGambar 1.2 berikut ini menunjukkan berbagai elemen yang membentuk client tier.

Gambar 1.2 Komunikasi Server

Client berkomunikasi dengan business tier yang berjalan pada server J2EE baik secara langsung atau dalam hal client berjalan dalam satu web browser adalah dengan menggunakan JSP atau Servlet yang berjalan di web tier. Aplikasi J2EE dapat menggunakan thin browser-based client atau thick application client. Mana yang akan digunakan, tergantung pada pertimbangan antara mempertahankan fungsi pada client dan dekat ke user dan mengurangi beban server sekecil mungkin. Semakin kecil beban server, semakin mudah untuk mendistribusikan, mendeploy dan mengelola aplikasi 1.5. Komponen Komponen Web dan BisnisKomponen komponen web dapat berupa servlet atau JSP. Servlet adalah class class dari bahasa pemrograman java yang secara dinamis memproses request dan membentuk response. Halaman halaman JSP adalah dokumen teks yng mengeksekusi servlet tetapi memungkinkan pendekatan natural untuk membuat static content.Halaman halaman statis html dan applet digabung dengan komponen komponen web selama aplikasi disusun tetapi bukan merupakan web komponen. Class class utilitas pada sisi server dapat juga digabungkan dengan komponen komponen web dan seperti halaman halaman HTML class class ini tidak dianggap sebagai web komponen.Seperti terlihat pada gambar 1.3 berikut ini, web tier seperti client tier, dapat meliputi komponen java bean untuk mengelola masukan user dan mengirimkan input ke enterprise bean yang berjalan pada bisnis tier untuk diproses.

Gambar 1.3 Lapisan Web dan Aplikasi J2EEKode Binis yang merupakan logika untuk memecahkan kebutuhan domain bisnis tertentu seperti bank atau perusahaan financial lainnya ditangani oleh enterprise bean yang berjalan pada bisnis tier. Gambar 1-4 berikut ini menunjukan bagaimana enterprise bean menerima data dari client, memproses data tersebut jika perlu dan mengirimkannya ke sistem informasi enterprise untuk penyimpanan. Enterprise bean juga mengambil data dari penyimpanan, memprosesnya dan mengembalikan ke client.

Gambar 1.4 Lapisan Bisnis dan Sistem Informasi Enterprise

Ada tiga jenis enterprise bean : session bean, entity beans dan message-driven bean. Session bean menunjukkan suatu percakapan transient dengan seorang client. Ketika client selesai mengeksekusi, session bean dan datanya lenyap.Sebaliknya entity bean menunjukan secara persistent data disimpan dalam satu baris table di suatu database. Jika client berhenti atau server mati, data entity bean tersimpan. Message-driven bean mengkombinasikan ciri yang dimiliki oleh session bean dan java message service (JMS) listener, yang mengijinkan satu komponen bisnis menerima pesan pesan JMS secara asinkron.

1.6. J2EE ContainerPada dasarnya aplikasi aplikasi multitier thin-client sulit dalam pembuatannya karena meliputi banyak baris kode untuk menangani transaksi, multithreading, resource pooling dan uraian kompleks lainnya. Arsitektur J2EE menjadikan aplikasi J2EE mudah untuk dibuat karena logika bisnis disusun dalam komponen komponen yang dapat digunakan kembali. Sebagai tambahan server J2EE menyediakan layanan penting dalam bentuk satu container untuk setiap tipe komponen. Karena kita tidak harus mengembangkan layanan layanan ini, maka konsentrasi kita hanya pada bagaimana memcahkan persoalan persoalan bisnis.

1.6.1. Container ServicesContainer adalah interface antara satu komponen dan platform tertentu pada tingkat rendah yang mendukung komponen tersebut. Sebelum web komponen, enterprise bean atau komponen aplikasi client dapat dieksekusi, kompoenen tersebut harus dipasang dalam satu module J2EE dan dideploy dalam kontainernya.Proses pemasangan mencakup penyetingan container tertentu untuk setiap komponen dalam aplikasi J2EE dan untuk aplikasi J2EE sendiri. Penyetingan container mengkustomasi pendukung pendukung utama yang disediakan server J2EE mencakup kemaanan, management transaksi, Java Naming and Directory Interface dan konektivitas remote Karena arsitektur J2EE menyediakan layanan yang dapat dikonfigurasi, komponen komponen aplikasi dalam aplikasi J2EE yang sama dapat bertindak secara berbeda berdasarkan dimana mereka dideploy. Sebagai contoh suatu enterprise bean dapat mempunyai penyetingan keamanan yang mengijinkannya mengakses database pada satu lingkungan produksi dan akses database lain pada lingkungan produksi lainnya.

1.6.2. Tipe Tipe ContainerProses deployment menginstall komponen komponen aplikasi J2EE dalam container J2EE seperti digambarkan pada gambar 1.5. J2EE Server; menyediakan container Enterprise Java Bean dan web container Enterprise Java Bean Container; mengelola eksekusi enterprise bean untuk aplikasi aplikasi J2EE. Enterprise bean dan containernya berjalan pada server J2EE. Web Container; mengelola eksekusi komponen aplikasi client. Aplikasi client dan containernya berjalan pada sisi client. Applet Container; mengelola eksekusi applet, terdiri atas web browser dan Java Plug-in yang berjalan disisi client secara bersamaan.

Gambar 1.5 Server J2EE dan Container

RANGKUMAN Java Enterprise Edition menawarkan model aplikasi multi tier terdistribusi, komponen yang dapat digunakan kembali, control transaksi yang lebih fleksibel dan dukungan web service melalui teknologi XML Aplikasi aplikasi multitier J2EE terdiri atas tiga tier dan terdistribusi pada tiga lokasi yaitu client machine, server J2EE dan database pada sisi back end. Komponen J2EE adalah satuan perangkat lunak fungsional yang dipasangkan dalam satu aplikasi J2EE dengan kelas kelas dan file file dan yang berkomunikasi dengan component komponen lainnya Komponen J2EE terdiri atas aplikasi client dan applet, komponen komponen teknologi javaservlet dan javaserver pages serta java enterprise beans.CONTOH SOAL

1. Apa perbedaan antara komponen J2EE dan class java standart ?Jawaban : Komponen J2EE diassemble dalam satu aplikasi J2EE dan dideploy produksi dimana mereka dijalankan dan dimanage oleh server J2EE. Class java standart dikompile dan dieksekusi mengunakan java virtual machine dan tidak membutuhkan server J2EE dalam proses produksinya.2. Apa yang dimaksud dengan applet dan syarat mengeksekusi applet ?Jawaban : Applet adalah aplikasi client yng ditulis dalam bahasa java yang dieksekusi oleh java virtual machine yang terinstall pada web browser. Syarat untuk mengeksekusi applet adalah client harus memiliki java plug-in.

LATIHAN SOAL

1. Jelaskan komponen komponen JEE yang membentuk client tier dan middle tier !2. Jelaskan secara singkat perbedaan antara web container dan EJB container !3. Sebutkan dan jelaskan kegunaan dari masing masing container yang ada dalam JEE ?4. Jelaskan pengertian anda tentang aplikasi multi tier !

BAB IIDASAR SERVLET

2.1. ServletServlet merupakan dasar dari teknologi java web. Servlet adalah program java yang dieksekusi di server untuk membuat web. Servlet merupakan sebuah class java yang mempunyai kemampuan sebagai server, sehingga jika kita ingin membuat sebuah aplikasi web dengan servlet, maka harus dilakukan coding class class java biasa. Servlet bekerja berdasarkan model request response, artinya servlet akan melakukan tindakan (response) setelah servlet menerima request dari client. Servlet juga dipanggil sebagai HTTPServlet karena servlet biasanya digunakan sebagai HTTP. HTTPServlet merupakan pintu masuk dan keluar bagi request dan response.Servlet mirip dengan teknologi Common Gateway Interface(CGI), Objek servlet terjadi hanya sekali ketika servlet diinisialisasi dan kemudian diam di dalam memori. Dampaknya adalah servlet menjadi lebih cepat karena setiap ada request servlet tidak akan menciptakan objek baru lagi. Sedangkan pada CGI setiap request akan menciptakan objek baru. Servlet dibuat dengan bahasa java sehingga dapat digabungkan dengan teknologi java lainnya seperti JDBC, EJB,RMI dan sebagainya.

2.2. Siklus Hidup ServletSiklus hidup servlet dikendalikan oleh web container, dimana servlet dideploy. Siklus hidup servlet terdiri atas 3 tahap yaitu init( ), service( ) dan destroy( ). Siklus hidup servlet dapat dilihat pada gambar berikut ini : (Initialization(Load Resources)Service(Accept Request)Destruction(Unload Resources)RequestResponse)

S e r v l e t

Gambar 2.1 Siklus hidup servlet

Siklus hidup servlet diawali dengan method init( ) yang dipanggil oleh web container setelah servlet diinisialisasi. Saat inisialisasi ini web container akan mengecek apa saja yang diperlukan oleh servlet misal servlet perlu mengakses servlet yang lain, database atau yang lainnya.Setelah servlet dinisialisasi, web container memanggil method service( ). Pada tahap ini servlet siap menunggu request untuk kemudain melakukan proses dan mengirimkan response kepada client. Method destroy ( ) dipanggil ketika web container dimatikan atau servlet diundeploy. Untuk mengaktifkan kembali servlet harus diinisialiasi lagi dari awal.

2.3. Servlet APIServlet API terdiri atas 2 package, yaitu javax.servlet dan javax.servlet.http. Package ini merupakan package diluar java SE (Standart Edition) dan didistribusikan bersama package java EE (Enterprise Edition). (javax.servlet.Servletjavax.servlet.ServletMyServletjavax.servlet.http.HttpServlet)

Gambar 2.2 Servlet API

Servlet sendiri sebenarnya hanyalah sebuah java class. Namun perbedaannya dari class java biasa adalah servlet merupakan turunan dari HttpServlet. Tujuan menurunkan class HttpServlet adalah agar class java (servlet) yang dibuat bisa menjalankan mekanisme request response melalui protocol HTTP, dimana aplikasi web akan berjalan.

public class MyServlet extends HttpServlet{protected void doGet(HttpServletRequest request,HttpServletResponse response ) throws Exception{}}HttpServlet merupakan class abstrak, sehingga untuk menggunakan servlet kita harus mengimplementasikan salah satu method yang ada, yaitu doGet( ) dan doPost( ), yang merupakan method pengiriman request melalui protocol HTTP. Perbedaan doGet( ) dan doPost( ) secara mudah terlihat pada URL nya. Ciri dari doGet( ) adalah URL yang panjang berisi data parameternya. Ciri dari doPost( ) adalah URL yang pendek tanpa terlihat isi parameter. Jadi jika data yang dikirim bersifat rahasia misalnya pada form login maka gunakan doPost( ), namun jika data tidak begitu penting semisal link gunakan saja doGet( ).

2.4. Penggunaan Servlet (RequestServletResponseBrowserRequestResponse)Fungsi servlet adalah untuk membuat web dinamis bagi user. Secara umum, cara kerja servlet adalah menerima request kemudian mengirim response

Gambar 2.3 Servlet request - response

Client (browser) mengirimkan HTTP request pada servlet container, kemudian servlet container akan menghantar request ke servlet yang dimaksud. Servlet akan menjalankan program java dan jika diperlukan servlet bisa mengakses database atau lainnya untuk menghasilkan output berupa halaman HTML. Halaman HTML ini diserahkan ke servlet container untuk dikirim kembali sebagai response kepada client.

2.5. Contoh ProgramUntuk lebih memahami mekanisme kerja dari servlet, berikut ini akan dibuatkan contoh servlet dengan menggunakan netbeans IDE. Servlet yang akan dibuat berupa aplikasi form registrasi. Langkah langkahnya adalah sebagai berikut :1. Buat project baru dan pilih category Java web dan projects Web Application, lihat gambar berikut

Gambar 2.4 Memilih project Web Application

2. Berikan nama yang diinginkan untuk project, pastikan server yang dipilh Apache Tomcat dan versi java ee yang digunakan adalah Java EE 5. Klik Finish

Gambar 2.5 Memilih server Apache Tomcat3. Buat servlet baru dan beri nama FormRegistration. Isikan package : servlet. Klik next. Ubah url pattern menjadi /registration. Klik Finish

Gambar 2.6 Konfigurasi URL Pattern servlet FormRegistration

4. Kita akan buat form registrasi sederhana yang berisi input nama,alamat,email dan pemilihan paket internet. Ubah code servlet FormRegistration pada method processRequest( ). Ketik kode berikut protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { out.println(""); out.println(""); out.println("Registration Form"); out.println(""); out.println(""); out.println("Form Registrasi"); out.println(""); out.println("" + "Nama: " + "" + "" + "Alamat: " + "" + "" + "" + "Email: " + "" + "" + "Paket: " + "" + "Personal " + "" + "Game" + "" + "Office" + "" + "" + ""); out.println(""); out.println(""); out.println(""); } finally { out.close(); } }

5. Buat lagi sebuah servlet untuk membaca data yang diinput pada form registration. Beri nama ShowData dengan package servlet. Ubah url pattern menjadi /show. Kemudian ketikkan kode berikut ini protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); String nama = request.getParameter("nama"); String alamat = request.getParameter("alamat"); String email = request.getParameter("email"); String paket = request.getParameter("paket"); PrintWriter out = response.getWriter(); try { out.println(""); out.println(""); out.println("Registration Form"); out.println(""); out.println(""); out.println("Data Pelanggan Baru"); out.println("" + "Nama: " + nama + "" + "Alamat: " + alamat + "" + "E-mail: " + email + "" + "Pilihan Paket: " + paket + "" + ""); out.println(""); out.println(""); } finally { out.close(); } }

6. Ubah welcome page dengan mengklik ganda web.xml arahkan ke FormRegistrasi.7. Jalankan project, klik kanan project dan pilih Build. Klik kanan project pilih Run. Akan tampil hasil seperti berikut ini :

(Gambar 2.7 Servlet Registrasi)

8. Klik tombol daftar maka akan tampil output sebagai berikut

RANGKUMAN

Servlet adalah program java yang dieksekusi di server untuk membuat web dan merupakan sebuah class java yang mempunyai kemampuan sebagai server Siklus hidup servlet dikendalikan oleh web container, dimana servlet dideploy. Siklus hidup servlet terdiri atas 3 tahap yaitu init( ), service( ) dan destroy( ). Servlet API terdiri atas 2 package, yaitu javax.servlet dan javax.servlet.http Fungsi servlet adalah untuk membuat web dinamis bagi user dan secara umum, cara kerja servlet adalah menerima request kemudian mengirim response

LATIHAN SOAL

1. Jelaskan pengertian anda tentang servlet dan penggunaannya dalam membangun program aplikasi untuk skala enterprise !2. Dengan menggunakan netbeans IDE buatlah servlet yang dapat dipakai untuk memberikan fasilitas Login bagi user.

BAB IIISERVLET LANJUT

3.1. Pengalihan ResponseAda banyak jenis response yang diberikan oleh servlet sebagai tanggapan atas request client. Salah satunya adalah mengalihkan response itu sendiri untuk ditangani oleh servlet lain atau mengalihkan ke halaman jsp atau bagian aplikasi web lainnya.Contoh kasusnya misalnya pada aplikasi web yang memerlukan login untuk mengaksesya. Jika yang mengakses adalah user biasa, tentunya hasilnya akan berbeda jika yang mengakses adalah super user/ admin. User biasa akan diarahkan pada halaman member, sedangkan super user akan diarahkan ke halaman administrator. Hal ini dilakukan dengan cara mengarahkan response. Ada dua method yang dipakai untuk mengalihkan response, yaitu :1. RequestDispatcher( )2. sendRedirect( )3.1.1. Request DispatcherRequestDispatcher ditemukan berada dalam object HttpServletRequest. Dengan memanggil method getRequestDispatcher ( String path ), kita tentukan parameter pathnya, dimana request akan diteruskan. Parameter path ini bisa berupa lokasi file jsp atau servlet lain yang ingin dihubungkan dengan request.Setelah kita menciptakan object getRequestDispatcher, kita dapat memanggil salah satu dari dua method berikut, yaitu : public void include ( ) public void forward ( )Kedua method tersebut akan mengalihkan response ke lokasi yang ditentukan dalam parameter path tadi. Perbedaan utama dari include dan forward adalah jika menggunakan include, kita dapat menambahkan isi lain ke response, sedangkan jika menggunakan forward hanya mengirimkan response saja.

3.1.2. SendRedirectMethod sendRedirect ( ) dapat ditemukan dalam object HttpServletresponse. Dengan memanggil method sendRedirect ( String relativePath), kita dapat menglihkan response ke relative path tertentu. Method ini secara efektif memerintahkan browser untuk mengirim request yang lain ke relative path-nya.Untuk lebih memahami mengenai pengalihan response dengan kedua cara diatas perhatikan contoh berikut dengan mengikuti langkah langkah berikut ini :1. Buat project baru dengan nama DemoServletLanjut. Lakukan penyetingan seperti pada bab sebelumnya2. Buat fom login pada index.jsp. Ketikkan kode berikut ini

JSP Page Login Username:

Password:

3. Buat dua halaman jsp lagi, yaitu admin.jsp dan user.jsp

Gambar 3.1 Membuat JSP File

4. Buat tulisan Welcome Admin di dalam tag body5. Buat juga hal yang sama untuk user.jsp6. Buat sebuah servlet untuk mengecek input pada username dan password. Beri nama LoginDispatcher7. Pada method processRequest( ) ketikkan kode berikut iniprotected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String username = request.getParameter("uname"); String password = request.getParameter("pass"); RequestDispatcher dis = null; if(username.equalsIgnoreCase("admin") && password.equals("admin")){ dis = request.getRequestDispatcher("/admin.jsp"); }else if(username.equalsIgnoreCase("user") && password.equals("user")){ dis = request.getRequestDispatcher("/user.jsp"); }else{ out.println("Login Salah!!"); dis = request.getRequestDispatcher("/index.jsp"); } //dis.include(request, response); dis.forward(request, response); }

8. Build dan Run servlet, coba masukan admin dan password admin. Akan didapat tampilan sebagai berikut

Gambar 3.2 Login sebagai Admin

9. Lakukan hal yang sama untuk username user dan password user

3.2. Request Dispatcher VS SendRedirectKita telah menggunakan requestDispatcher dan sendRedirect dan hasil yang ditampilkan oleh web browser adalah sama. Namun sebetulnya ada perbedaan antara kedua method ini, seperti yang Nampak pada url dari kedua method ini : RequestDispatcher SendRedirectPada requestDispatcher program tidak menciptakan request yang baru. Request hanya terjadi satu kali, yaitu request ke servlet LoginDispatcher. Coba kita login sebagai user atau kita isi saja sembarang, maka url-nya tetap sama seperti itu.Pada sendRedirect program akan menciptakan request yang baru. Disini request terjadi dua kali, yaitu request ke servlet LoginRedirect kemudian request ke halaman index.jsp. Coba kita login sebagai user atau kita isi saja sembarang, maka url-nya akan berbeda.3.3. ContextDi dalam java kita bisa menyimpan data yang kompleks/objek. Objek disini bukan database ataupun file, tetapi data yang sedang diolah program. Objek disimpan dalam sebuah context.Spesifikasi servlet memberikan empat penyimpanan data dalam java, yaitu : Page ContextJika kita menyimpan objek pada Page Context, maka kita definisikan dahulu object tersebut pada sebuah halaman. Page Context hanya dikenali pada halaman yng mendefinisikannya Request ContextPada request context, objek disimpan pada sebuah request tunggal. Objek dapat dikenali oleh semua komponen web yang menangani request dari client, namun hanya saat request itu dikirimkan dan response diterima oleh client. Ketika ada request lainnya muncul, request sebelumnya tidak dapat dikenali lagi. Objek yang tergabung dengan bidang ini adalah objek HttpServletRequest. Instance instance dari objek ini siap dan dapat digunakan untuk servlet, sama seperti yang mereka berikan sebagai parameter untuk method service yang dipanggil oleh container di atas request client. SessionObjek dalam session dapat diakses oleh semua komponen aplikasi web dan akan terus tersimpan selama session belum mencapai timeout atau user logout dari sistem dan objek dihapus dari session. Objek dari suatu session user, bagaimanapun tidak terlihat dari dalam session user yang lain. Penggunaan session misalnya pada aplikasi took online. Session digunakan untuk menyimpan data pemesanan barang.Objek yang tergabung dengan bidang ini adalah objek HttpSession. Sebuah instance dari ini bisa didapatkan kembali menggunakan method getSession( ) dalam objek HttpServletRequest. Application ContextObjek yang tersimpan dalam application context dapat dikenali oleh semua komponen aplikasi web tanpa memperhatikan request user atau session client yang mengatur dan mengakhiri sampai aplikasi dihentikan. Objek yang dibaca oleh client satu dengan lainnya akan sama client mengakses context yang sama. Objek yang tergabung dengan bidang ini adalah objek ServletContext. Ini bisa didapatkan kembali dengan memanggil method getServletContext( ) dari objek yang valid ServletConfig. Servlet context mendefinisikan berbagai fungsi yang digunakan servlet untuk berkomunikasi dengan servlet container meliputi penghantaran request, penulisan ke log dan sebagainya.

3.4. Mengakses ContextSemua objek context memiliki method untuk mengambil kembali dan menyimpan data di dalamnya. Untuk menyimpan objek gunakan method :public void setAttribute ( String key, Object value)parameter key merupakan nama kunci yang digunakan untuk menyimpan objek. Key ini akan dipanggil lagi jika kita ingin membaca atau menghapus objek yang telah disimpan. Untuk membaca objek, gunakan method :public Objek getAttribute ( String key)Nilai kembalian dari method getAttribute ini adalah Objek, sehingga kita harus melakukan casting Objek ke class yang sesuai. Jika tidak ada objek yang bisa mendapatkan kembali dari key yang diberikan, method akan mengembalikan nilai null. Untuk menghapus sebuah attribute dari objek, gunakan method removeAttribute ( String key)Berikut ini adalah contoh penggunaan context, khususnya request context. Ikuti langkah langkah berikut ini : 1. Buat project baru dan beri nama DemoServletContext2. Lakukan penyetingan untuk server dan tipe enterprise edition yang digunakan3. Buat sebuah form input nama pada index.jsp, dengan mengetikkan kode berikut ini :

JSP Page Masukkan Nama Anda

4. Buat sebuah servlet baru untuk menyimpan context dan beri nama SaveContext. Atur konfigurasi seperti didepan.5. Ubah method processRequest( ) pada servlet seperti pada kode berikut ini :protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String nama = request.getParameter("nama");

//request.setAttribute("namactx", nama); ServletContext ctx = getServletContext(); ctx.setAttribute("namactx", nama);

RequestDispatcher dis = request.getRequestDispatcher("view"); dis.forward(request, response); }

6. Buat servlet yang baru beri nama ViewContext dan ubah method processRequest( ) dengan kode berikut ini :protected void processRequest( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter();

//String nama = (String) request.getAttribute("namactx"); ServletContext ctx = getServletContext(); String nama = (String) ctx.getAttribute("namactx");

try { out.println(""); out.println(""); out.println("View Context"); out.println(""); out.println(""); out.println("Nama Anda : " + nama + ""); out.println(""); out.println(""); } finally { out.close(); } }

7. Build dan jalankan project. Akan diperoleh tampilan sebagai berikut :

Klik submit akan didapat tampilan sebagai berikut

8. Sekarang coba ketikkan langsung url ini : http://localhost:8084/DemoServletContext/view. Hasilnya adalah tidak ada isi context yang bisa diambil. Jadi harus melewati mekanisme yang sesuai. Ini terjadi karena pada RequestContext, objek disimpan hanya dalam satu request tunggal.RANGKUMAN Dalam servlet response ditangani dengan cara mengalihkan response itu sendiri untuk ditangani oleh servlet lain atau dialihkan ke halaman jsp atau aplikasi web lainnya Ada dua method yang digunakan untuk mengalihkan response yaitu RequestDispatcher ( ) dan sendRedirect ( ) Pada requestDispatcher program tidak menciptakan request yang baru. Request hanya terjadi satu kali. Coba kita login sebagai user atau kita isi saja sembarang, maka url-nya tetap sama seperti itu. Pada sendRedirect program akan menciptakan request yang baru. Disini request terjadi dua kali RequestDispatcher berada dalam class HttpServletRequest dan memiliki dua method yaitu public void include( ) dan public void forward ( ). Perbedaan utama dari include dan forward adalah jika menggunakan include, kita dapat menambahkan isi lain ke response, sedangkan jika menggunakan forward hanya mengirimkan response saja. Ada empat penyimpanan data dalam java yaitu Page Context, Request Context, Session dan Application Context.

SOAL LATIHAN

1. Berikan perbedaan antara requestDispatcher ( ) dan sendRedirect ( ), dua metode yang dipakai untuk mengalihkan response !2. Jelaskan perbedaan antara session, application context, page context dan request context !3. Coba anda modifikasi contoh Request Context diatas menjadi Application Context !4. Buatlah contoh program penggunaan servlet dan jsp untuk mengalihkan response dari suatu servlet ke halaman jsp !

BAB IVCOOKIE

Aplikasi web adalah aplikasi yang stateless, dimana server tidak akan mengingat request client. Akibatnya setiap request yang masuk selalu dianggap oleh server berasal dari client client yang berbeda. Padahal kadang kadang server juga perlu mengenali client, missal untuk kepentingan autentikasi dimana client tidak bisa mengakses sembarang halaman yang tidak diizinkan. Untuk mengatasi masalah ini, bisa digunakan cookie atau session.

4.1. CookieCookie merupakan informasi kecil yang dikirim kepada client/browser dari server. Cookie dijadikan tempat penyimpanan sementara state yang disimpan disisi client/ browser. Oleh browser cookie akan disimpan dan nantinya dapat dikirimkan kembali ke server jika diperlukan.Biasanya cookie dipakai untuk mengidentifikasi client. Cookie berisi suatu ID yang unik pada tiap client. Biasanya server bisa mengenali banyak client yang pada saat bersamaan sedang melakukan request.Dalam kasus tertentu misalnya website yang mewajibkan user untuk login supaya dapat mengakses resource resource dari website tersebut, tentunya akan repot jika user harus terus menerus melakukan login setiap mengakses halaman website yang berbeda. Oleh karena itu server dapat mengirimkan cookie berupa identitas masing masing client, sehingga dapat dikenali apakah client yang bersangkutan sudah melakukan login atau belum. Cookie disimpan di browser. Browser yang berbeda dianggap sebagai client yang berbeda dan cookie bisa dihapus melalui browser masing masing. Mungkin anda pernah mengsakses website, dimana kita atur menggunakan bahasa Indonesia dalam website itu, dan ketika mengakses kembali website dengan browser yang sama maka secara otomatis website langsung menampilkan halaman berbahasa Indonesia. Ini terjadi karena browser menyimpan state penggunaan bahasa kita. Namun ketika kita mengakses dengan browser yang lain, kita harus mengatur kembali penggunaan bahasanya karena kita sudah dianggap client yang berbeda.Cookie hanya dapat menampung data String sederhana bukan data kompleks seperti context. Cookie akan terhapus begitu browser ditutup, namun cookie dapat diatur waktu hidupnya sehingga bisa disimpan lebih lama oleh web browser. Selain itu cookie hanya diubah oleh server dari mana cookie tersebut berasal.

4.2. Keuntungan dan Kelamahan CookieDengan karekteristik cookie seperti yang sudah dijelaskan sebelumnya, maka cookie memiliki beberapa keuntungan sekaligus kelemahan. Kelemahan cookie yang utama, yaitu karna cookie disimpan oleh client maka setiap client yang ingin mengakses website yang membutuhkan cookie, wajib menggunakan browser yang mendukung cookie dan mengaktifkan cookie-nya. Jika tidak, aplikasi web tidak akan berjalan sebagaimana mestinya. Ini adalah kelemahan di mana aplikasi web menjadi sangat bergantung dengan client itu sendiri.Meski hanya bisa dimodifikasi oleh server, namun cookie bisa dibaca oleh unauthorized user. Cookie dapat meningkatkan beban di jaringan akibat informasi yang sama yang dikirim terus menerus. Namun, beban ini biasanya tidak akan terasa karena ukuran cookie sendiri yang sangat kecil, yaitu sekitara 4kb. Keuntungan penggunaan cookie selain bisa digunakan untuk identifikasi client adalah cookie tidak terpengaruh pada crash server karena data disimpan di client serta dapat meringankan beban di memori user.

4.3. Cookie di JavaDi java sudah disediakan fasilitas untuk menggunakan cookie melalui class javax.servlet.http.Cookie. Untuk menciptkan cookie , berikut langkah langkahnya :1. Panggil contructor Cookie. Misal seperti ini :Cookie c = new Cookie (ckieNama,maksy);String ckieNama adalah nama cookie-nya sedangkan string maksy adalah isi cookie-nya. Nama dan isi cookie tidak boleh mengandung spasi, tab dan karakter seperti { [] ( ) = , / @ : ;2. Agar cookie tidak terhapus begitu browser ditutup dan masih bisa digunakan lagi, atur umur maksimum cookie-nya.c.setMaxAge(60*60*24); Berarti umur maksimum cookie kita adalah 60 x 60 x 24 detik atau 1 hari. Setelah itu cookie akan terhapus.3. Untuk mengirimkan cookie kepada client, tambahkan cookie kepada object response.response.addCookie(c);Untuk membaca cookie gunakan method request.getCookie( ). Nilai kembalian dari method ini adalah array object cookie yang disimpan oleh browser dan akan mengembalikan null jika tidak ada cookie. Untuk mendapatkan cookie yang kita maskud, lakukan pengulangan menggunakan method getName( ) pada setiap objek cookie sampai ditemukan cookie yang dimaksud.4.4. Contoh ProgramDalam contoh program ini akan dibuat sebuah halaman login dan sebuah halaman khusus untuk member. Jika kita login sebagai member, kita akan diizinkan mengakses halaman khusus member tersebut dan jika bukan member maka tidak akan izinkan. User member maupun non member akan memperoleh id masing masing . Sehingga jika ada user non-member yang ingin langsung mengakses halaman khusus member tanpa login maka akan ditolak.1. Buat sebuah project dan beri nama DemoCookie. Lakukan penyetingan seperti didepan pada project sebelumnya.2. Buat sebuah form input username dan password pada index.jsp dengan mengetikkan kode berikut ini :

JSP Page Member Login Username:

Password:

3. Buat lagi sebuah halaman jsp dengan nama member.jsp. Ketikkan kode berikut ini

JSP Page Halaman Khusus Member

4. Buat sebuah servlet baru untuk menambah cookie dan beri nama LoginCookie. Ubah pattern menjadi /login dan ketikkan kode berikut dalam method processRequest ( ).protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String username = request.getParameter("uname"); String password = request.getParameter("pass"); String cookieMember = "1234567890"; String cookieNonMember = "000"; if(username.equalsIgnoreCase("member") && password.equals ("member")){ Cookie c = new Cookie("ckieNama", cookieMember); c.setMaxAge(60*60); response.addCookie(c); out.println(""); out.println(""); out.println("Login"); out.println(""); out.println(""); out.println("Login benar!!!"); out.println("Klik untuk menuju ke halaman member..."); out.println(""); out.println(""); }else{ Cookie c = new Cookie("ckieNama", cookieNonMember); c.setMaxAge(60*60); response.addCookie(c); out.println("Login Salah!!"); RequestDispatcher dis = null; dis = request.getRequestDispatcher("/index.jsp"); dis.include(request, response); } }

Program ambil nilai dari form input username dan password. Username dan password ini akan divalidasi. Jika username dan passwordnya adalah member maka cookie ckieNama akan bernilai konstanta cookieMember dan akan menampilkan halaman Login benar serta link untuk memasuki halaman member Jika username dan password bukan member maka cookie ckieNama akan bernilai konstanta cookieNonMember dan akan dikembalikan ke index.jsp dengan peringatan Login salah.Cookie diset berumur 60 x 60 detik atau 1 jam. Setelah durasi request mencapai 1 jam maka cookie akan terhapus. Didalam aplikasi professional, isi cookie jangan berupa konstanta. Isi cookie haruslah acak dan unik untuk client tertentu, bisa saja berdasarkan username dan password. 5. Buatlah lagi sebuah servlet untuk mengarahkan user ke halaman member dan beri nama MemberPage. Ketik kode berikut dalam method processRequest ( )protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); RequestDispatcher dis; String cookieMember = "1234567890";

try { Cookie[] cookies = request.getCookies(); String cNama = ""; if(cookies!=null){ for(int x=0; x Filter

Gambar 6.4. Membuat Filter AuthenticationFilter

6. Kita atur filter mappingnya. Klik Edit

Gambar 6.4. Configure Filter

7. Klik radio-button Servlet dan pilih LoginServlet. Centang checkbox REQUEST pada Dispatch Condition. Klik OK kemudian klik Finish.

Gambar 6.5. Filter Mapping

8. Buat kode authentikasi agar hanya user yang login sebagai member yang bisa mengakses servlet LoginServlet. Ketik kode berikut dalam method doFilter ( )public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {

String username = request.getParameter("uname"); String password = request.getParameter("pass");

if(username.equals("member") && password.equals("member")){ chain.doFilter(request, response); }else{ RequestDispatcher dis = request.getRequestDispatcher("/index.jsp"); dis.forward(request, response); } }

Filter akan memvalidasi user yang melakukan login. Jika yang login adalah member, maka filter akan menjalankan servlet LoginServlet melalui method FilterChain.doFilter ( ). Jika bukan member, maka akan dikembalikan ke halaman index.RANGKUMAN Filter adalah komponen web yang tugasnya melakukan penyaringan terhadap request/response Fungsi filter berkaitan dengan fungsi pengalihan response. Filter mengambil sebagian tugas servlet dalam hal menyaring request atau response, sehingga servlet bersih dari logika program yang lebih rumit. Filter berdiri diantara request / response dengan resource web yang ingin diakses dan bekerja dengan menangkap request client Didalam java ada 3 interface yang berhubungan dengan filter, interface Filter, FilterChain dan FilterConfig. Ketiga interface ini berada dalam package javax.servlet Siklus hidup filter mirip dengan servlet yang memiliki 3 tahap yaitu init, service dan destroyLATIHAN SOAL1. Jelaskan manfaat filter dalam pemrograman java web berskala enterprise !2. Jelaskan apa yang dimaksud dengan siklus hidup filter !3. Jelaskan langkah langkah yang dilakukan untuk mengimplementasikan filter . Uraikan penggunaan method methodnya !4. Buatlah aplikasi sederhana menggunakan filter, dimana skenarionya sebagai berikut : apabila user mengklik Logout maka user akan dibawa ke halaman Logout dan bila user mengklik Lanjut maka user akan dibawa ke halaman transaksi lainnya

BAB VIIDASAR JSP

JSP merupakan bagian dari J2EE. Halaman JSP adalah text dokumen yang dapat menghasilkan halaman web yang statis maupun dinamis. Halamana JSP terdiri atas html/xml standard an tag script JSP. Sama seperti halaman html biasa, JSP menggunakan protocol HTTP.JSP bertujuan memisahkan business logic dengan presentation/tampilan. JSP dibuat untuk menyederhanakan proses presentation halaman web. Komponen java lainnya dapat dibuat terpisah dari JSP dan dapat diakses dengan server side scripting. Hal ini akan memudahkan perubahan tampilan tanpa harus mempengaruhi business logicnya.7.1. JSP VS SERVLETKelemahan servlet ada dalam pembuatan halaman web. Servlet harus mengirimakan code html sebagai code java sehingga proses pengiriman akan menjadi lebih lama. Kelebihan JSP adalah codingnya sama dengan HTML namun bercampur dengan tag script JSP. JSP lebih mudah dipakai untuk membuat halaman web yang cantik.JSP dapat langsung dijalankan dengan membuat file jsp-nya saja, sedangkan untuk menjalankan servlet harus dibungkus menjadi sebuah paket (.war) terlebih dahulu.Secara sederhana dapat dikatakan perbedaan servlet dan JSP, yaitu servlet merupakan file java yang dapat disisipi code html, sedangkan JSP merupakan file html yang dapat disisipi code java. 7.2. Cara Kerja JSPJSP dikembangkan berdasarkan teknologi servlet yang mempunyai fitur untuk menggabungkan antara content statis dan content dinamis dalam satu halaman web. JSP merupakan perluasan dari servlet dimana ketika JSP dijalankan maka akan dikompilasi menjadi servlet terlebih dahulu. (HTTPRequestNewOrChangedJSPServlet (java)Servlet (class)ServletHTTPResponseY)

Gambar 7.1 Cara Kerja JSP

Saat terjadi request dari user, maka akan dicek apakah file jsp mengalami perubahan. Jika berubah maka file jsp akan dibuat sourcenya dalam bentuk file Java. File java di-compile menjadi file class dan dieksekusi dalam bentuk servlet. Jika tidak maka akan langsung dieksekusi sebagai servlet.7.3. Siklus Hidup JSP (jspinti( )(Load Resources)jspService( )(Accept Request)jspDestroy( )(Unload Resources)RequestResponse)JSP juga memiliki siklus hidup. Siklus hidup JSP mirip seperti servlet terdiri atas 3 tahap, yaitu init, service dan destroy. JavaServer Page

Gambar 7.2 Siklus hidup JSPSiklus hidup ini dicerminkan dari interface javax.servlet.jsp. JspPage melalui method :jspInit( ), jspService( ) dan jspDestroy ( ), Interface jspPage merupakan turunan dari javx.servlet.Servlet. JSP di compile ke dalam class servlet yang sama oleh server sehingga class servlet yang menangani permintaan untuk JSP

7.4. Syntax JSPJSP berusaha untuk menggabungkan antara konten web statis dan dinamis. Oleh karena itu JSP memungkinkan kode java untuk disertakan dalam sebuah halaman JSP. Secara garis besar, elemen elemen standar dalam JSP bila dikelompokkan menjadi 3, yaitu : Elemen perintah (Directive) Elemen scripting Elemen action

7.4.1. Elemen Perintah (Directive)Elemen directive merupakan elemen yang memberikan informasi mengenai halaman JSP itu sendiri. Ada 3 directive, yaitu page, include dan taglib. Page directivePage directive mendefiniskan atribut dalam jangkauan seluruh file JSP itu. Syntax standart page directive itu adalah seperti ini : .Atribute page directive bisa dilihat di :http://java.sun.com/products/jsp/syntax/2.0/syntaxref2010.htmlContoh page directive : Include directiveInclude directive digunakan untuk menginclude suatu file dalam JSP. Syntax standart include directive adalah seperti ini :

Contoh include directive : Taglib directiveTaglib directive mendefinisikan tag library dan prefix untuk custom tag dalam halaman JSP. Syntax standar taglib directive adalah seperti ini :

Contoh taglib directive:

7.4.2. ScriptingElemen scripting mengizinkan code java untuk dimasukkan dalam halaman JSP. Ada 3 cara memasukkan code java, yaitu ekspression, scriplet dan declaration.

ExpressionExpression biasanya digunakan untuk mencetak nilai variable. Saat halaman jsp dijalankan, expression akan dievaluasi dan dikonversi menjadi string. Syntax standart expression adalah seperti ini : . Contoh expression :

ScripletScriplet digunakan untuk menyisipkan code java biasa pada halaman JSP. Kode java meliputi perulangan, kondisi, akses database, deklarasi variable dan sebagainya. Contoh syntax scriplet adalah seperti ini : Contoh scriplet : DeclarationDeclaration digunakan untuk mendefinisikan variable atau method. Syntax dasar declaration adalah seperti ini :

Contoh declaration :

7.4.3. ActionElemen action merespon action berdasarkan informasi yang diperlukan halaman JSP. Elemen action didefinisikan dengan prefix jsp. Berikut daftar elemen action : Jika ingin mempelajari lebih lanjut mengenai syntax JSP secara lengkap bisa dilihat di : http://java.sun.com/products/jsp/syntax/2.0/syntaxref20.htm.

7.5. Contoh Program Buatlah form penjumlahan 2 buah bilangan. Buat juga error-page jikalau user nantinya salah melakukan input selain angka. Proses penjumlahan dan penanganan error akan dilakukan di dalam halaman JSP.Langkah langkah penyelesaian :1. Buat project baru dan beri nama DemoJSP. Lakukan pengaturan seperti pada contoh soal Bab sebelumnya.2. Buat 2 buah form input penjumlahan pada index.jsp. ketik kode berikut :

JSP Page Angka 1:

Angka 2:

3. Tidak seperti bab sebelumnya, dimana kita menggunakan servlet untuk memproses input. Kali ini proses penjumlahan akan kita lakukan di dalam JSP.4. Karena proses penjumlahan ini memungkinkan terjadi exception semisal input bukanlah angka, maka perlu kita buat error-page. Klik kanan pada web pages di tab project pilih New > JSP. Beri nama file : error dan klik finish. Ketik kode berikut pada error.jsp

JSP Page Telah Terjadi ERROR!!

5. Buat sebuah halaman jsp untuk memproses penjumlahan dan menampilkan hasilnya. Beri nama result

Gambar 7.3. Halaman result.jsp

6. Ketik kode berikut pada result.jsp

JSP Page Hasil dari + adalah

Program akan mengambil angka 1 dan angka 2 kemudian di parse ke tipe data integer. Kedua angka tersebut dijumlahkan dan hasilnya akan ditampilkan. Kita daftarkan error-page menggunakan page directive errorPage JSP container akan mengarahkan ke halaman error.jsp bila terjadi exception di halaman result.jsp ini7. Build dan jalankan program dan coba masukkan angka numeric terlebih dahulu

Gambar 7.4. Memasukkan angka numerik

8. Klik back pada web browser dan coba masukkan input bukan angka.9. Hasilnya adalah error. User diarahkan ke error.jsp

RANGKUMAN

JSP bertujuan memisahkan business logic dengan presentation/tampilan. JSP dibuat untuk menyederhanakan proses presentation halaman web Kelemahan servlet ada dalam pembuatan halaman web. Servlet harus mengirimakan code html sebagai code java sehingga proses pengiriman akan menjadi lebih lama. Kelebihan JSP adalah codingnya sama dengan HTML namun bercampur dengan tag script JSP. JSP lebih mudah dipakai untuk membuat halaman web yang cantik. JSP merupakan perluasan dari servlet dimana ketika JSP dijalankan maka akan dikompilasi menjadi servlet terlebih dahulu JSP memiliki siklus hidup dan siklus hidup JSP mirip seperti servlet terdiri atas 3 tahap, yaitu init, service dan destroy Secara garis besar, elemen elemen standar dalam JSP bila dikelompokkan menjadi 3, yaitu :Elemen perintah (Directive),Elemen scripting dan Elemen action Elemen directive merupakan elemen yang memberikan informasi mengenai halaman JSP itu sendiri Elemen scripting mengizinkan code java untuk dimasukkan dalam halaman JSP Elemen action merespon action berdasarkan informasi yang diperlukan halaman JSP

LATIHAN SOAL

1. Berikan perbedaan antara JSP dan Servlet. Berikan keuntungan dan kelemahannya masing masing !2. Jelaskan dengan menggunakan bagan cara kerja dari JSP !3. Apakah yang dimaksud dengan siklus hidup JSP. Jelaskan dengan menggunakan gambar ?4. Jelaskan elemen elemen dasar dari JSP !5. Buatlah JSP page yang digunakan untuk mengautentikasi user. User hanya bisa masuk ke halaman utama apabila nama dan passwordnya sama serta memiliki jumlah karakter lebih dari delapan !

BAB VIIIJSP LANJUT

8.1. Expression LanguageExpression Language dapat digunakan untuk menggantikan elemen scripting guna mempermudah penulisan ekspresi dalam halaman JSP. Expression Language diperkenalkan dengan spesifikasi JSP 2.0Expression Language memiliki bentuk yang lebih sederhana dan ditulis dengan syntax : ${Expression}. Sebagai gambaran bagaimana sederhanaya penggunaan expression language, jika itu menggunakan elemen scripting atau elemen action kita akan menulis syntax seperti ini :

atau

Namun dengan expression language penulisan syntax hanya seperti ini :${user.name}Perhatikan, jika kita menggunakan elemen scripting kita juga harus memahami property dari tipe data di Java. Dan jika kita menggunakan elemen action ini, penulisannya cukup panjang dan susah. Bandingkan jika kita menggunakan Expression Language penulisannya singkat dan langsung pada intinya dan kita tidak harus memahami property dan tipe data di java.Halaman JSP bisa dibuat tanpa scripting dengan menggunakan expression language, sehingga memungkinkan pemisahan antara programmer dengan web designer. Hal ini sesuai dengan tujuan JSP, yaitu memisahkan antara presentation dengan business logic. Expression language bisa berupa literal, operator, object implicit ataupun fungsi.

8.1.1 Literal Expression language mendefinisikan literal berupa Boolean Long Float String NullContoh expression language berupa literal :${false} hasilnya adalah false${1+2+3} hasilnya adalah 6${Saya ganteng} hasilnya adalah string Saya ganteng 8.1.2 OperatorExpression language menyediakan operator berikut : Aritmetika : -, bianary, *, / dan div, % dan mod, unary Logika : and, &&,or,||,not,! Relational : ==, eq, !=, ne, , gt, =, lePerbandingan dapat dilakukan terhadap nilai nilai lain atau terhadap Boolean, string, integer, atau literal floating point Empty : Operator kosong adalah prefix yang digunakan untuk menentukan apakah suatu nilai adalah null atau kosong Kondisional : A ? B : C. Jika A true maka hasilnya B, Jika A false maka hasilnya C Referensi: .,// Referensi berdasarkan property atau index.Contoh : ${user,nama} sama dengan ${user[name]}

8.1.3 Object ImplisitExpression Language mendefinisikan sekumpulan object implicit yaitu Object pageContext merupakan context untuk halaman JSP. Menyediakan akses ke berbagai objek, termasuk servletContext, session, request, response. Object Param; Object map yang berisi request nama parameter untuk nilai tunggal Object ParamValues; Object map yang berisi request nama parameter untuk array ObjectHeader; Object map yang berisi request nama header untuk nilai tunggal ObjectHeaderValues; Object map yang berisi request nama header untuk array Object Cookie; Object map yang berisi nama nama cookie Object InitParam; Peta suatu context inisialisasi nama parameterExpression Language menyediakan beberapa object implicit yang mewakili sebuah object Map di dalam jangkauan yang berbeda. Object PageScope; Object map yang berisi nama attribute dan nilainya dalam jangkauan halaman Object RequestScope; Object map yang berisi nama attribute dan nilainya dalam jangkauan request Object SessionScope; Object map yang berisi nama attribute dan nilainya dalam jangkauan session ObjectApplicationScope; Object map yang berisi nama attribute dan nilainya dalam jangkauan application

8.2. JSTLJava Server Pages Standart Tag Library (JSTL) adalah library yang menyediakan fungsi fungsi dasar yang umumnya ada pada JSP. JSTL memiliki tag tag seperti untuk perulangan, kondisi, manipulasi XML, mengakses database dan sebagainya.Penggunaan JSTL dimaksudkan untuk mengurangi penggunaan fungsi fungsi standart java sehingga memungkinkan menulis kode JSP yang rumit tanpa menggunakan code java.JSTL memiliki berbagai variasi tag sesuai fungsinya masing masing. Untuk menggunakan library library JSTL, kita mengimpor dari beberapa URI-nya. Kategorisasi dari tag tag JSTL adalah Core, XML, Internationalization, SQL dan functions.Untuk menyertakan halaman JSTL didalama halaman JSP, kita harus menyertakan library JSTL serta menuliskan taglib di dalam halaman JSP. Contoh :

8.2.1 JSTL CoreUntuk menggunakan JSTL core kita harus mengimport dari URL: http://java.sun.com/jsp/jstl/core. JSTL core menggunakan prefix : c. JSTL core terdiri atas subkategori : Variable support Flow control URL management MiscellaneousDaftar tag JSTL core : 8.2.2 JSTL SQLUntuk menggunakan JSTL SQL, kita harus mengimport dari URI : http://java.sun.com/jsp/jstl/sql. JSTL SQL menggunakan prefix: sqlDaftar tag JSTL SQL :

8.2.3 JSTL XMLUntuk menggunakan JSTL XML, kita harus mengimport dari URI : http://java.sun.com/jsp/jstl/xml. JSTL XML menggunakan prefix :x dan terdiri atas subkategori : Core Flow control TransformationDaftar tag JSTL XML :

8.2.4 JSTL InternationalizationUntuk menggunakan JSTL internationalization, kita harus mengimport dari URI : http://java.sun.com/jsp/jstl/fmt. JSTL internationalization menggunakan prefix :fmt dan terdiri atas subkategori Locale Message formatting Number and date formattingDaftar tag JSTL internationalization :

8.2.5 JSTL FunctionsUntuk menggunakan JSTL functions, kita harus mengimport dari URI: http://java.sun.com/jsp/jstl/functions. JSTL functions menggunakan prefix :fn dan terdiri atas subkategori : Collection length String manipulationDaftar fungsi JSTL functions : ${fn:contains ( )}${fn:split ( )} ${fn:containsIgnoreCase( )}${fn:startsWith ( )} ${fn:endsWith ( ) }${fn:substring ( ) } ${fn:escapeXml( )}${fn:substringAfter( )} ${fn:indexOf( )}${fn:substringBefore( )} ${fn:join ( )}${fn:toLowerCase( )} ${fn:length ( )}${fn:toUpperCase( )} ${fn:replace( )}${fn:trim ( )}

8.2.6 Contoh ProgramBerikut ini akan diberikan contoh penggunaan Expression Language dan JSTL. Ikuti Langkah berikut ini : 1. Buat sebuah project baru dan beri nama :DemoJSPLanjut. Lakukan penyettingan seperti pada Bab sebelumnya2. Tambahkan library JSTL pada project. Klik kanan pada libraries > add library. Cari library JSTL 1.1. Klik add library

Gambar 8.1. Library JSTL

3. Ketik kode berikut pada index.jsp

JSP Page

Tanggal :

${nama}

Ada tiga hal yang kita buat disini : Yang pertama kita mengeset sebuah data string lalu mencetaknya Yang kedua kita mencetak tanggal hari ini Yang ketiga kita menggunakan perulangan untuk mencetak nilai suatu kumpulan data string berisi namaDalam mencetak semua datanya, kita menggunakan expression language. Disini digunakan JSTL Core dan Internationalization, dimana sebelum tag kita sudah mendaftarkan taglibnya.

4. Build dan jalankan programnya . Akan didapat hasil sebagai berikut :

Gambar 8.2. Hasil pemakaian EL dan JSTL

RANGKUMAN Expression Language dapat digunakan untuk menggantikan elemen scripting guna mempermudah penulisan ekspresi dalam halaman JSP Expression Language memiliki bentuk yang lebih sederhana dan ditulis dengan syntax : ${Expression} Expression language bisa berupa literal, operator, object implicit ataupun fungsi. Expression Language mendefinisikan sekumpulan object implicit berupa Object pageContext, Object Param, Object ParamValues,Object Header, object HeaderValues, Object Cookie, object InitParam Java Server Pages Standart Tag Library (JSTL) adalah library yang menyediakan fungsi fungsi dasar yang umumnya ada pada JSP Penggunaan JSTL dimaksudkan untuk mengurangi penggunaan fungsi fungsi standart java sehingga memungkinkan menulis kode JSP yang rumit tanpa menggunakan code java Untuk menyertakan halaman JSTL didalama halaman JSP, kita harus menyertakan library JSTL serta menuliskan taglib di dalam halaman JSP Untuk menggunakan JSTL core kita harus mengimport dari URL: http://java.sun.com/jsp/jstl/core. Untuk menggunakan JSTL SQL, kita harus mengimport dari URI : http://java.sun.com/jsp/jstl/sql Untuk menggunakan JSTL XML, kita harus mengimport dari URI : http://java.sun.com/jsp/jstl/xml Untuk menggunakan JSTL internationalization, kita harus mengimport dari URI : http://java.sun.com/jsp/jstl/fmt

LATIHAN SOAL1. Apakah yang dimaksud dengan expression language ? Apakah yang membedakannya dengan jsp ?2. Jelaskan objek objek implicit yang dikandung oleh expression language !3. Apakah manfaat dari Java Server Pages Standart Tag Library (JSTL) ?4. Dengan menggunakan expression language buatlah java web yang dapat digunakan untuk membandingkan 2 buah string yang diinput oleh user melalui input form !5. Buatlah program menggunakan expression language yang dapat digunakan untuk menentukan apakah bilangan yang diinput user ganjil atau genap !

BAB IXMODEL VIEW CONTROLLER

Sering kali antara business logic dan user interface digabung dalam satu file yang sama ( servlet atau jsp) atau disebut dengan arsitektur model 1. Hal ini tidak menjadi masalah jika diterapkan pada aplikasi yang sederhana. Tapi jika aplikasi menjadi besar dan kompleks, akan menimbulkan masalah jika terjadi perubahan pada salah satu komponennya. Solusi permasalahan ini adalah menggunakan arsitektur model 2 atau Model View Controller(MVC) dalam pengembangannya.9.1. MVCMVC merupakan konsep arsitektur aplikasi yang memisahkan model data, user interface dan business logic sebagai komponen yang berbeda sehingga modifikasi komponen menjadi lebih mudah.Pada aplikasi dimana code user interface tergabung dengan business logicnya, jika terjadi perubahan pada user interface atau business logic maka keduanya akan salaing mempengaruhi. Misalnya sebuah file jsp dimana berisi code user interface dan business logic untuk mengakses database. Ketika kita ingin mengubah user interfacenya, maka business logicnya juga harus ikut menyesuaikan,. Itu berarti kita harus merombak seluruh kode dalam file jsp tersebut, yang tentunya akan sangat merepotkan.Disamping itu tidak semua programmer bisa melakukan desain atau sebaliknya, seorang desainer web belum tentu bisa melakukan pemrograman. Jika user interface dan business logic digabung maka diperlukan orang yang bisa melakukan program dan desain. Akan tetapi jika aplikasi terlalu besar akan sangat menyulitkan.Perubahan yang terjadi pada komponen yang satu tidak akan terlalu mempengaruhi komponen lainnya secara significant. Paling tidak dengan memakai arsitektur MVC, memerlukan lebih sedikit penyesuaian jika terjadi perubahan. Selain itu seorang desainer bisa focus pada user interface aplikasi dan programmer bisa focus pada business logicnya.Untuk aplikasi yang besar, penerapan MVC akan sangat membantu maintenance atau pengembangan yang selanjutnya. Misal jika hanya aplikasi web apalagi dengan halaman yang statis, tidak perlu menggunakan pola MVC ini. Tetapi untuk aplikasi yang besar misal aplikasi ERP, maka penggunaan kosnsep MVC akan sangat membantu sekali.9.2. Komponen MVCArsitektur MVC membagi aplikasi menjadi 3 bagian besar, yaitu model, view, controller dan kemudian membuat interaksi antar ketiganya.9.2.1. ModelModel merepresentasikan data yang digunakan oleh aplikasi. Dengan pemisahan antara data dan interface, komponen model dapat digunakan kembali oleh bagian aplikasi lain yang memiliki kegunaan yang sama. Mungkin kita pernah mengakses situs berita dengan browser desktop atau browser mobile. Yang berbeda dari keduanya hanyalah tampilannya, tetapi business logic yang digunakan tetap sama. Ini menunjukkan bahwa dengan pemisahan seperti ini, berarti interface tidak terikat dengan data, sehingga apa pun interfacenya data yang digunakan bisa sama. Umumnya komponen model berupa class java.9.2.2. ViewView merupakan implementasi user interface yang menampilkan data yang telah diolah pada user, atau komponen yang akan berinteraksi dengan user. View ini termasuk komponen yang paling sering berubah. Bahkan pada aplikasi web yang canggih biasa dimodifikasi sendiri oleh user tanpa mempengaruhi business logic dari aplikasi. Umumnya komponen view berupa halaman jsp.9.2.3. ControllerController merupakan pengontrol aliran request. Data request akan diteruskan ke komponen lain yang mengolah data. Controller juga menentukan komponen aplikasi manakah yang akan dieksekusi, serta menentukan transisi view mana yang akan ditampilkan. Dengan penggunaan komponen controller yang terpisah ini, view dapat didesain tanpa harus memperhatikan komponen lainnya. Umumnya komponen controller berupa servlet.9.3. Framework MVCAda banyak framework yang dibuat berbasis arsitektur MVC. Beberapa diantaranya adalah Spring dan Struts . Framework menyediakan sarana untuk mengimplementasikan ketiga komponen MVC (model,view,controller) secara mudah pada aplikasi web. Beberapa framework lain bahkan menyediakan fitur lainnya. 9.3.1. SpringSpring adalah application framework lightweight untuk mempermudah pengembangan aplikasi heavyweight java. Penggunaan Spring tidak hanya terbatas pada aplikasi berbasis web tetapi juga untuk aplikasi java yang lain.Didalam situs resmi spring dikatakan Spring memberikan solusi lightweight untuk pengembangan aplikasi enterprise, serta tetap mendukung kemungkinan penggunaan declarative transaction, remote access dengan menggunakan RMI ataupun web service, fasilitas mailing serta dukungan ke teknologi presistance yang telah ada. Spring menyediakan sebuah framework MVC, serta tata cara yang transparan dalam integrasi Aspect oriented Programming (AOP) ke dalam aplikasi yang dibangun, dan menyediakan hirarki exception yang terstruktur. Spring dapat menjadi one-stop-solution untuk pengembangan aplikasi enterprise java, tetapi Spring juga bersifat modular sehingga developer dapat mengambil beberapa modul dan mengabaikan modul lainnya.Seperti yang telah disinggung diatas, Sprint terdiri dari beberapa modul yang dapat dipilih, sehingga kita dapat memilih sesuai kebutuhan aplikasi yang kita kembangkan. Modul modul Spring dapat digambarkan seperti gambar berikut ini (Spring CoreSpringAOPSpringWebMVCSpring ORMSpring WebSpring DAOSpring Context)

Gambar 9.1 Susunan Modul Spring Framework

Penjelasan singkat untuk masing masing modul adalah sebagai berikut : Spring Core; menyediakan sarana fungsionalitas yang fundamental dalam Spring Framework. Dalam modul ini terdapat beanfactory yang merupakan inti dari aplikasi yang menggunakan Spring. Spring Context; modul ini merupakan ekstensi dari BeanFactory dengan menambahkan dukungan untuk internalization, event-event dari siklus hidup aplikasi serta validasi. Modul ini juga menydeiakan service enterprise seperti email, akses JNDI, integrasi dengan EJB, remoting dan penjadwalan, serta integrasi dengan velocity dan freemarker. Spring AOP; modul ini menyediakan layanan penuh pada Aspect Oriented Programming (AOP) Spring DAO; modul ini menyediakan abstraksi ke JDBC dan DAO, sehingga pemrograman dengan kedua komponen tersebut menjadi lebih sederhana dan mudah. Spring ORM; modul ini menyediakan integrasi dengan beberapa Object Relational Mapping (ORM) yang popular saat ini seperti Hibeernate, JDO,Ibatis,SQL Maps, Oracle TopLink Spring Web; modul integrasi menyediakan context yang ditujukan untuk aplikasi berbasis web, dan juga integrasi dengan framework seperti Jakarta Struts, Tapestry,dan WebWork SpringMVC FrameworkGambar 4.2 diatas pada dasarnya merupakan pembagian secara koseptual. Pada kenyataannya sebuah modul dapat tersusun dari satu atau beberapa package. Package package yang terdapat dalam org.springframework terdiri dari aop, beans, chace, context, corte, dao, jb,jca,jdbc,jms,jmx,jndi,mail,metadata,orm,remoting,scheduling dan web. 9.3.2. StrutsSpring adalah application framework lightweight untuk mempermudah pengembangan aplikasi heavyweight java. Penggunaan Spring tidak hanya terbatas pada aplikasi berbasis web tetapi juga untuk aplikasi java yang lain.Didalam situs resmi spring dikatakan Spring memberikan solusi lightweight untuk pengembangan aplikasi enterprise, serta tetap mendukung kemungkinan penggunaan declarative transaction, remote access dengan menggunakan RMI ataupun web service, fasilitas mailing serta dukungan ke teknologi presistance yang telah ada. Spring menyediakan sebuah framework MVC, serta tata cara yang transparan dalam integrasi Aspect oriented Programming (AOP) ke dalam aplikasi yang dibangun, dan menyediakan hirarki exception yang terstruktur. Spring dapat menjadi one-stop-solution untuk pengembangan aplikasi enterprise java, tetapi Spring juga bersifat modular sehingga developer dapat mengambil beberapa modul dan mengabaikan modul lainnya. (Spring CoreSpringAOPSpringWebMVCSpring ORMSpring WebSpring DAOSpring Context)Seperti yang telah disinggung diatas, Sprint terdiri dari beberapa modul yang dapat dipilih, sehingga kita dapat memilih sesuai kebutuhan aplikasi yang kita kembangkan. Modul modul Spring dapat digambarkan seperti gambar berikut ini

Gambar 9.2 Susunan Modul Strut Framework

Penjelasan singkat untuk masing masing modul adalah sebagai berikut : Spring Core; menyediakan sarana fungsionalitas yang fundamental dalam Spring Framework. Dalam modul ini terdapat beanfactory yang merupakan inti dari aplikasi yang menggunakan Spring. Spring Context; modul ini merupakan ekstensi dari BeanFactory dengan menambahkan dukungan untuk internalization, event-event dari siklus hidup aplikasi serta validasi. Modul ini juga menydeiakan service enterprise seperti email, akses JNDI, integrasi dengan EJB, remoting dan penjadwalan, serta integrasi dengan velocity dan freemarker. Spring AOP; modul ini menyediakan layanan penuh pada Aspect Oriented Programming (AOP) Spring DAO; modul ini menyediakan abstraksi ke JDBC dan DAO, sehingga pemrograman dengan kedua komponen tersebut menjadi lebih sederhana dan mudah. Spring ORM; modul ini menyediakan integrasi dengan beberapa Object Relational Mapping (ORM) yang popular saat ini seperti Hibeernate, JDO,Ibatis,SQL Maps, Oracle TopLink Spring Web; modul integrasi menyediakan context yang ditujukan untuk aplikasi berbasis web, dan juga integrasi dengan framework seperti Jakarta Struts, Tapestry,dan WebWork SpringMVC FrameworkGambar 4.2 diatas pada dasarnya merupakan pembagian secara koseptual. Pada kenyataannya sebuah modul dapat tersusun dari satu atau beberapa package. Package package yang terdapat dalam org.springframework terdiri dari aop, beans, chace, context, corte, dao, jb,jca,jdbc,jms,jmx,jndi,mail,metadata,orm,remoting,scheduling dan web.

9.4. Contoh ProgramKita akan menerapkan arsitektur MVC secara sederhana dalam aplikasi web berikut ini. Skenarionya adalah kita buat halaman yang memuat link menuju halaman tutorial pemrograman. Jika link tersebut diklik, maka oleh controller akan diarahkan ke halaman tutorial yang dimaksud. Secara garis besar, alur aplikasi ini bisa digambarkan sebagai berikut :

(Client(Browser)Index.jspController(GoTutorial)Model(DataLinks)View(Web.jsp)(mobile.jsp)(desktop.jsp))

Gambar 9.3 Alur Aplikasi MVC

Langkah langkah pembuatannya adalah sebagai berikut :1. Buat project dengan nama DemoMVC. Lakukan penyetingan atas server dan java EE yang digunakan2. Pertama akan dibuatkan komponen model terlebih dahulu. Buat sebuah class java dan beri nama DataLinks serta tempatkan pada package model. Ketikkan kode berikut ini :package model;

/** * * @author Maksy */public class DataLinks { public String links[] = { "Web Application Programming", "Mobile Application Programming", "Desktop Application Programming"};

public String targets[] = {"web","mobile","desktop"};

public int getLinksNumber(){ return links.length; }

public String getLink(int num){ return links[num]; }

public String getTarget(int num){ return targets[num]; }}Class DataLinks ini memuat 3 buah link target. Array targets nantinya akan digunakan oleh controller untuk mengarahkan user ke halaman yang sesuai. 3. Langkah kedua, kita buat komponen viewnya. Selain index.jsp, kita tambahkan 3 buah halaman jsp lagi sebagai tujuan target dari link pada DataLinks tadi. Ketiga file jsp ini kita beri nama sesuai dengan isi dalam array targets.4. Klik kanan pada web pages di tab project. Pilih New > JSP dan beri nama file web. Klik finish. Buat kode JSP pada halaman ini sehingga akan ditampilkan Tutorial Web Programming saat program dijalankan5. Buat lagi 2 jsp file berturut turut diberi nama mobile.jsp dan desktop.jsp. Halaman ini saat dijalankan akan menghasilkan tulisan sebagai berikut : Tutorial Mobile Programming dan Tutorial Desktop programming.6. Buka halaman index.jsp dan ketikkan kode berikut ini

JSP Page Programming Tutorial

Index.jsp mengambil links dari class DataLinks dan menampilkannya serta mengeset sesuai targetnya. Keunggulan dari penggunaan MVC sudah terlihat disini. Jika kita ingin menambahkan links, kita hanya menambahkan links dari class DataLinks( model ) tanpa harus repot mengubah index.jsp (view) 7. Jangan lupa kita impor class DataLinks menggunakan page directive import. Lakukan sebelum tag 8. Yang terakhir, kita buat servlet sebagai controllernya yang mengendalikan request user sesuai tergetnya dan beri nama GoTutorial. Isikan package controller. Ketik kode berikut pada servlet GoTutorial.

protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); String type = request.getParameter("type"); String file = type +".jsp"; RequestDispatcher dis = null; if(type != null){ dis = request.getRequestDispatcher(file); } dis.forward(request, response); }

Servlet GoTutorial akan melihat target dalam parameter type kemudian akan diteruskan ke halaman jsp sesuai isi parameter type tersebut.9. Build dan run program dan kemudian klik salah satu link.

Gambar 9.4. Halaman index MVC10. Lihat url hasilnya kemudian coba isi parameter type web. Program akan mengarahkan langsung ke halaman web.jsp

RANGKUMAN MVC merupakan konsep arsitektur aplikasi yang memisahkan model data, user interface dan business logic sebagai komponen yang berbeda sehingga modifikasi komponen menjadi lebih mudah. Arsitektur MVC membagi aplikasi menjadi 3 bagian besar, yaitu model, view, controller dan kemudian membuat interaksi antar ketiganya Model merepresentasikan data yang digunakan oleh aplikasi dan umumnya berupa java class View merupakan implementasi user interface yang menampilkan data yang telah diolah pada user, atau komponen yang akan berinteraksi dengan user dan umumnya berupa jsp Controller merupakan pengontrol aliran request dan umumnya berupa servlet

LATIHAN SOAL1. Jelaskan manfaat penggunaan konsep MVC dalam pengembangan aplikasi berskala enterprise !2. Bagaimana konsep modeling diterjemahkan dalam kerangka MVC !3. Bagaimana konsep view digunakan dalam MVC !4. Buatlah aplikasi penjualan barang secara online menggunakan konsep MVC. Kembangkan java class yang akan digunakan, halaman jsp dan servlet untuk aplikasi ini !BAB XDATABASE , SQL DAN JDBC

Untuk membuat aplikasi web berskala enterprise, belum lengkap rasanya jika tanpa koneksi ke database.

10.1. DatabaseDatabase atau basis data adalah kumpulan data yang disimpan secara sistematik sehingga dapat diakses untuk memperoleh informasi dari database tersebut.Database ini misalnya seperti buku telepon di mana kita mencatat nama dan nomor telepon seseorang.Database yang dimaksud disini, tentunya adalah data yang disimpan dalam computer, yang dikelola menggunakan perangkat lunak khusus yang disebut dengan Database Management System (DBMS). Sebuah database memiliki penjelasan terstruktur dari data yang tersimpan di dalamnya yang disebut dengan skema. Skema menggambarkan objek yang diwakili suatu database, dan hubungan diantara objek tersebut. Cara mengorganisasikan skema umumnya menggunakan model relational yanr tabeg direpresentasikan dalam bentuk table, yang terdiri atas baris dan kolom. Dalam model ini, hubungan antara table diwakili dengan nilai yang sama antar table.10.2. SQLSQL adalah standar ANSI untuk mengakses dan memanipulasi database. Statemen SQL digunakan untuk menerima, mengubah dan menghapus data. Perintah SQL tidak bersifat case sensitive pada kata kuncinya, tetapi pada nilainya.Pada aplikasi yang membutuhkan akses ke database, umumnya akan melakukan aksi aksi seperti memasukkan data, mengambil data mengupdate dan menghapus data.10.2.1. Memasukkan DataUntuk memasukkan baris data yang baru ke dalam table database yang aktif, kita menggunakan perintah INSERT. Struktur dasar dari perintah INSERT :INSERT INTO nama_tabel VALUES (nilai1,nilai2,) Clause INTO diikuti nama dari table yang akan diisi data baru. Parameter yang diberikan di dalam kata kunci VALUES adalah daftar nilai data yang akan dimasukkan ke dalam table. Perintah INSERT harus diikuti aturan integritas pada table data. Oleh karena itu jika sebuah field pada table ditetapkan not-null, maka jika kita mencoba memasukkan nilai null, akan menyebabkan error.

10.2.2 Mengambil DataUntuk mengambil data dari database yang aktif, kita menggunakan perintah SELECT. Struktur dasar perintah SELECT :SELECT kolom1,kolom2,FROM nama_tabel WHERE kondisiPerintah SELECT diikuti oleh kolom kolom table yang akan diambil datanya. Jika kita ingin mengambil semua data dari seluruh kolom pada table, gunakan * sebagai pengganti nama kolom. Clausa FROM diikuti nama tabelnya. Claus WHERE dapat disertakan dan diikuti dengan kondisi data yang ingin diambil.

10.2.3 Meng-update DataUntuk mengupdate baris data dari table database yang aktif, kita menggunakan perintah UPDATE. Struktur dasar perintah UPDATE :UPDATE nama_tabel SET nilai-kolom WHERE kondisiPerintah UPDATE diikuti oleh nama table yang ingin di-update datanya. Clause SET diikuti daftar data dari nama kolom dan nilai barunya. Clausa WHERE harus disertakan jika kita hanya mengupdate baris data tertentu. Jika tidak, semua baris data akan ikut terupdate.

10.2.4 Menghapus DataUntuk menghapus baris data dati table database yang aktif, kita menggunakan perintah DELETE. Struktur dasar perintah DELETE :DELETE FROM nama_table WHERE kondisiClause FROM diikuti oleh nama table yang ingin di-update datanya. Clause WHERE harus disertakan jika kita hanya menghapus baris data tertentu. Jika tidak, semua baris data akan ikut terhapus.

10.3. JDBCJava menyediakan API untuk mengakses database yang disebut Java Database Connectivity (JDBC) API. Dengan JDBC, kita bisa mengakses database tanpa mempedulikan DBMS-nya.JDBC API memungkinkan untuk melakukan tiga hal, yaitu membuat koneksi dengan database, mengirim perintah SQL, dan memproses hasil.Setiap mengakses database,kita menggunakan JDBC driver sebagai interface atau koneksi ke database tersebut. Setiap vendor DBMS memerlukan driver yang berbeda. Untuk beberapa vendor telah tersedia drivernya didalam JDBC API, sedangkan yang tidak ada bisa didownload pada website vendor masing masing.

10.4. Membuat DatabaseUntuk membuat database kita bisa menggunakan netbeans seperti yang akan dicontohkan berikut ini. Database yang akan dibuat terdiri atas dua table dengan struktur sebagai berikut : Tabel SubjectFieldType

KodeVarchar(4)

NamaVarchar(10)

SKSint

Tabel MahasiswaFieldType

NisVarchar(10)

NamaVarchar(40)

AlamatVarchar(40)

Tabel JadwalFieldType

NisVarchar(10)

KodeVarchar(4)

Langkah langkah pembuatannya adalah sebagai berikut :1. Buka aplikasi Netbeans. Klik tab Services2. Buat database baru. Klik databases dalam tab services. Klik kanan Mysql Server > Create database. Jika Mysql belum berjalan, jalankan terlebih dahulu,pilih Start

Gambar 10.1. Membuat database baru

3. Isikan nama database Akademik hingga diperoleh tampilan sbb :

Gambar 10.2. Database Akademik telah dibuat

4. Buat table tablenya . Klik kanan pada akademik > Execute Command. Hasilnya akan nampak seperti gambar berikut ini :

Gambar 10.3. Database Akademik dengan tabelRANGKUMAN

Database adalah kumpulan table table yang menyimpan data dan telah memenuhi aturan tertentu (ternormalisasi) Untuk membuat, mengakses dan memanipulasi data data yang tersimpan dalam satu database digunakan bahasa yaitu SQL. Structured Query Language (SQL) terbagi atas Data Definition Language (DDL) dan Data Manipulation Language (DML). DDL terdiri atas perintah CREATE, DROP dan ALTER. DML terdiri atas perintah INSERT, SELECT, UPDATE, dan DELETE. CREATE digunakan untuk membuat table. DROP digunakan menghapus table dari satu database. ALTER digunakan untuk memodifikasi table. INSERT digunakan menambahkan record dalam satu table. SELECT digunakan untuk mengquery record tertentu dari satu database berdasarkan kondisi tertentu UPDATE digunakan untuk mengupdate record tertentu berdasarkan criteria tertentu. DELETE digunakan untuk menghapus baris tetentu dari satu table. Java menyediakan API untuk mengakses database yang disebut Java Database Connectivity (JDBC) API. Dengan JDBC, kita bisa mengakses database tanpa mempedulikan DBMS-nya.

LATIHAN SOAL1. Apa yang dimaksud dengan database, jelaskan !2. Jelaskan perintah perintah yang tergabung dalam kelompok SQL DDL ! 3. Apa yang dimaksud dengan JDBC dan kapan JDBC digunakan ?4. Dengan menggunakan netbeans dan Mysql buatlah database yang memiliki table table seperti dibawah ini :Tabel BarangNama FieldTipe Data

Kode_BarangVarchar(4)

NamaVarchar(30)

Hargaint

Tabel CustomerNama FieldTipe Data

Kode_CusVarchar(4)

Nama_CusVarchar(30)

AlamatVarchar(20)

PhoneVarchar(20

Tabel TransaksiNama FieldTipe Data

Kode_CusVarchar(4)

Kode_BarangVarchar(4)

BAB XIENTERPRISE BEANS

Enterprise beans adalah komponen java enterprise edition yang mengimplementasikan teknologi enterprise javabeans (EJB). Enterprise beans berjalan dalam EJB container yang ada dalam application server. Meskipun transparent terrhadap pengembangan aplikasi, container EJB memberikan layanan terhadap sistem seperti transaksi dan keamanan bagi enterprise beannya. Layanan ini memungkinkan kita untuk membangun dan mendeploy enterprise beans secara cepat yang merupakan bentuk inti dari aplikasi java EE.

11.1. Apa itu Enterprise Bean Ditulis dengan bahasa pemrograman java, enterprise bean adalah komponen pada sisi server yang membungkus business logic dari suatu aplikasi. Business logic adalah kode yang memenuhi maksud dari aplikasi. Sebagai contoh dalam suatu aplikasi inventory, enterprise bean mengimplementasikan business logic dalam method yang disebut checkInventoryLevel dan orderProduct. Dengan menginvoke method method ini, client dapat mengakses layanan inventory yang disediakan oleh aplikasi.Enterprise beans menyederhanakan pengembangan aplikasi aplikasi yang besar dan terdistribusi. Pertama karena container EJB menyediakan layanan layanan system-level ke enterprise bean seperti management transaksi dan securitas , pengembang bean dapat berkonsentrasi dalam memecahkan masalah masalah business. Kedua karena bean berisikan business logic dari aplikasi, pengembang pada sisi client dapat focus pada client. Pengembang client tidak harus mengkoding rutin untuk mengimplementasikan business rule atau mengakses database. Hal ini menyebabkan, client menjadi lebih kecil dan dapat diterapkan pada peralatan peralatan yang kecil.Enterprise beans digunakan pada aplikasi yang memiliki criteria sebagai berikut :1. Aplikasi harus scalable. Untuk mengakomodir pertumbuhan jumlah pengguna, kita perlu mendistribusikan komponen komponen aplikasi pada berbagai mesin. 2. Aplikasi yang memiliki transaksi yang harus menjamin integritas data. Enterprise bean mendukung transaksi3. Aplikasi yang memiliki berbagai macam client. Dengan hanya beberapa baris kode, remote client dengan mudah dapat menghubungi enterprise bean.

11.2. Jenis Jenis Enterprise Bean11.2.1. Session BeanSession bean menunjuk pada client tunggal yang ada dalam application server. Untuk mengakses aplikasi yang dideploy dalam server, client menginvoke method method dari session bean. Session bean bekerja untuk clientnya, melindungi client dari kompleksitas dengan mengeksekusi persoalan persoalan business dalam server.Seperti namanya, session bean sama dengan interaktif session. Session bean tidak dapat di shared, session bean hanya memiliki satu client. Ketika client berhenti, session bean juga berhenti dan terputus koneksi dengan client.Ada dua jenis session bean yaitu stateful session bean dan stateless session bean. Pada stateful session bean , instance variable menunjukkan keadaan dari suatu client session bean tertentu. Karena client berinteraksi dengan beannya, keadaan ini sering dinamakan conversational state.State dipertahankan selama client-bean session. Jika client menghapus bean atau menghentikannya, session berakhir dan state hilang. Sifat transient dari state tidak menjadi masalah karena percakapan antara client dan bean berakhir disana. Stateless session bean tidak mempertahankan suatu keadaan conversational dengan client. Ketika client menginvoke method method suatu stateless bean, instance variable bean dapat berisi keadaan tertentu untuk client tersebut, tetapi hanya selama invokasi. Ketika method selesai, keadaan specific client tidak dipertahankan. Client dapat mengubah state instance variable dalam pool stateless bean, dan state ini dipertahankan sampai pada invokasi selanjutnya dari pool stateless bean.Session bean harus digunakan pada keadaan sebagai berikut : Pada waktu tertentu, hanya satu client mengakses instance bean State bean tidak persistent (tetap), hanya ada pada periode yang pendek Bean mengimplementasikan web serviceStatefull session bean cocok untuk criteria sebagai berikut : Bean state menunjukkan interaksi antra bean dan client tertentu Bean perlu menyimpan informasi tentang client Dibelakang layar, bean mengelola aliran kerja dari beberapa enterprise bean.Untuk memperbaiki performance, kita dapat menggunakan stateless session bean terutama jika bean state tidak memiliki data untuk client tertentu dan dalam suatu invokasi method tunggal, bean melakukan tugas tugas generic untuk semua client. Sebagai contoh kita dapat menggunakan stateless session bean untuk mmengirimkan email yang mengkonfirmasi suatu pesanan online.

11.2.2. Massage-Driven BeanMessage-driven bean adalah enterprise bean yang menyebabkan aplikasi aplikasi java Entertprise Editon memproses message secara asinkronous. Umumnya bertindak sebagai JMS message listener, yang sama dengan suatu ecent listener kecuali message driven bean menerima pesan pesan JMS bukan event. Message dapat dikirim oleh setiap komponen java enterprise edition atau aplikasi JMS atau sistem yang tidak menggunakan teknologi java EE. Message driven bean dapat memproses pesan pesan JMS atau pesan pesan lainnya. Perbedaan utama antara message-driven bean dan session bean adalah bahwa client tidak mengakses message driven bean melalui interfaces. Tidak seperti session bean, message-driven bean hanya mempunyai satu class bean. Message-driven bean memiliki ciri sebagai berikut : Message-driven bean dieksekusi setelah menerima message dari client Diinvoke secara asinkronous dan waktu hidup singkat Tidak menunjukkan share data secara langsung dalam database, tetapi dapat mengakses dan mengupdate data Bersifat stateless 11.3. Access Client dengan Interface Seorang client dapat mengakses session bean hanya melalui method yang didefinisikan dalam business interface dari bean. Business interface mendefinisikan pandangan client terhadap suatu bean. Semua aspek lain dari bean tersembunyi dari client. Session bean dapat memiliki lebih dari satu business interface. Client dapat mengakses enterprise bean secara remote, local ataupun melalui web service.11.3.1. Remote ClientRemote client dari suatu enterprise bean dapat berjalan pada mesin yang berbeda dan Java Virtual Machine yang berbeda dengan enterprise beannya. Remote client dapat berupa web component, aplikasi client ataupun enterprise bean.Untuk membuat enterprise bean yang mengijinkan remote access, yang harus dilakukan adalah : Menambahkan business interface dari enterprise bean dengan anotasi @Remote sebagai berikut :@Remotepublic interface InterfaceName {.} Menambahkan bean class dengan @Remote, mendefinisikan business interface atau interface : @Remote(InterfaceName.class) public class BeanName implements InterfaceName {}Remote interface mendefinisikan business dan siklus hidup method yang specific dari bean. Sebagai contoh, remote interface dari bean bernama BankAccountBean dapat memiliki business method deposit dan credit, seperti dapat dilihat pada contoh berikut :

Gambar 11.1. Interface Enterperise Bean dengan Remote Access11.3.2. Local ClientLocal client memiliki karekteristik sebagai berikut :1. Berjalan pada JVM yang sama dengan enterprise beannya2. Dapat berupa web component atau enterprise bean lainnya3. Lokasi enterprise bean yang diakses tidak transparent.Untuk membuat enterprise bean yang hanya dapat diakses secara local, maka dapat dilakukan sebagai berikut :1. Tambahkan business interface dari enterprise bean dengan @local interface, [email protected] interface InterfaceName {}2. Tentukan interface dengan menambahkan bean class dengan @Local dan tentukan nama interface.11.4. Isi Enterprise BeanUntuk membangun enterprise bean kita harus menyiapkan file file sebagai berikut :1. Enterprise bean class; mengimplementasikan method- method yang didefinisikan dalam business interface dan semua callback method2. Business Interface; mendefinisikan method method yang diimplementasikan oleh enterprise class bean3. Class Helper; class class lainnya yang dibutuhkan oleh enterprise class bean seperti class exception dan class utility Semua file ini dipaketkan dalam file EJB JAR, modul yan

of 181/181
BAB I PENDAHULUAN Dewasa ini pengembang – pengembang banyak membuat aplikasi transaksi yang terdistribusi untuk digunakan di perusahaan – perusahaan besar. Di era teknologi informasi yang ditandai dengan adanya tuntutan yang besar terhadap e-commerce, aplikasi - aplikasi enterprise harus didesign, dibangun dan diproduksi dengan biaya yang kecil dan pemanfaatan resource yang sedikit namun dengan hasil yang optimal. Dalam rangka mengurangi biaya dan untuk mengembangkan aplikasi yang cepat dan tepat, Java Enterprise Edition menyediakan pendekatan component- based untuk mendesign, mengembangkan dan mendeploy aplikasi – aplikasi enterprise. Java Enterprise Edition menawarkan model aplikasi multi tier terdistribusi, komponen yang dapat digunakan kembali, control transaksi yang lebih fleksibel dan dukungan web service melalui teknologi XML. Hal ini membawa dampak pengembang tidak hanya menghasilkan solusi – solusi bisnis yang innovative secara lebih cepat, tetapi juga solusi J2EE tidak terikat pada produk dan API dari vendor manapun. Vendor dan 1
Embed Size (px)
Recommended