Download - dasar web java.docx

Transcript

Pada artikel terdahulu, kita telah membahas tentang pentingnya penguasaan terhadap konsep dasar. Kali ini, kita akan membahas tentang konsep dasar aplikasi web di Java. Ini juga akan menj

Pada artikel terdahulu, kita telah membahas tentang pentingnya penguasaan terhadap konsep dasar. Kali ini, kita akan membahas tentang konsep dasar aplikasi web di Java. Ini juga akan menjawab pertanyaan yang sering ditanyakan di forum yaituSaya ingin belajar Java Enterprise Edition (Java EE), apa yang pertama harus saya pelajari?Java EE sangat luas cakupannya, di antaranya adalah: Java Servlet JavaServer Faces JavaServer Pages Java Persistence dan masih banyak lagiUntuk bisa memahami semuanya, tentu kita harus memulai dari yang paling sederhana dulu, yaitu Java Servlet. Teknologi ini adalah dasar dari semua aplikasi web di Java. Tanpa pemahaman terhadap teknologi ini, sulit bagi kita untuk mempelajari framework atau library yang lebih canggih seperti Spring MVC, Struts, JavaServer Faces, dan berbagai framework web lainnya. Kenapa sulit? Karena semua framework tersebut dibangun di atas Java Servlet. Kalau pondasinya saja tidak paham, bagaimana mau belajar yang lain?Ada beberapa hal penting yang harus dipahami dalam Java Servlet, yaitu: Struktur Folder Aplikasi Web Java Alur eksekusi HTTP Request sampai menghasilkan HTTP ResponseTiga komponen Java Servlet yaitu: Servlet Filter ListenerMari kita bahas satu persatu.Struktur FolderAplikasi web Java struktur foldernya harus mengikuti kaidah berikut

Gambar di atas adalah struktur folder aplikasi yang siap dijalankan. Oleh karena itu kita tidak melihat adanya source code Java di sana.Setelah kita memiliki struktur folder seperti di atas, aplikasi siap dipaketkan (package) supaya bisa dideploy di application server. Packaging dilakukan dengan membungkus folder di atas dengan algoritma zip. Kita bisa menggunakan aplikasi kompresi seperti WinZip ataupun WinRAR. Bila kita menggunakan WinRAR, harus diingat bahwa algoritma yang digunakan haruslah zip, bukan rarSetelah di-zip, rename extension file menjadi war agar dikenali oleh application server. warmerupakan singkatan dari Web Archive.Untuk menjalankan aplikasi di application server (misalnya Tomcat), berikut langkah-langkah deployment: masukkan file war ke folder deployment sesuai merek application server yang digunakan contoh: untuk Tomcat, folder deploymentnya adalah webapps Tomcat akan meng-extract file war tersebut Setelah deployment selesai (ditandai dengan file telah diextract dan tidak ada error di log) aplikasi bisa dibrowse di http://ip-server:port/nama-file-war/index.htmlBila aplikasi tidak lagi digunakan, kita bisa melakukan undeploy. Caranya: hapus file war dari folder deployment setelah folder aplikasi terhapus, undeploy berarti suksesAda beberapa hal yang harus diperhatikan dalam struktur folder di atas, yaitu: Folder WEB-INF File web.xmlFolder WEB-INFFolder ini adalah folder khusus. Dia tidak bisa dibrowse oleh user aplikasi. Maksudnya adalah, user aplikasi tidak bisa mengetik http://localhost:8080/belajar/WEB-INF di browser untuk menampilkan isi folder WEB-INF. Jadi bila kita memiliki file yang tidak boleh dilihat user (misalnya konfigurasi, logfile, file temporary, dan sebagainya), kita bisa letakkan file-file tersebut dalam folder WEB-INF.Di dalam folder ini biasanya ada dua folder khusus lain, yaitu classes : berisi file *.class hasil kompilasi dari source code *.java kita lib : berisi file *.jar, library tambahan yang kita gunakan seperti driver JDBC, JSON processor, pengolah tanggal, dan lainnyaFile web.xmlFile ini berisi konfigurasi dari aplikasi web kita. Di Java EE versi terbaru, file ini tidak harus ada. Tapi di Java EE versi terdahulu, dia wajib disertakan. Untuk amannya, agar aplikasi kita kompatibel dengan application server jadul, ada baiknya kita sertakan saja. Toh file ini juga akan kita buat kalau kita menggunakan framework seperti Spring MVC, JSF, Struts, dan sebagainya. Berikut isi file web.xml yang paling sederhana, yaitu hanya berisi root tag webappkosong.12345678

Nantinya, file ini bisa berisi konfigurasi: Servlet Filter Listener Welcome Page : halaman yang dibuka kalau user tidak menyebutkan apa-apa, misalnya http://aplikasi-saya.com/ Error Page : halaman error bila URL yang diminta tidak ada (404), user belum login (401), ijin akses tidak memadai (403), error aplikasi (500), dan sebagainya Session timeout : rentang waktu user tidak mengakses aplikasi hingga session-nya dinyatakan kadaluarsaAlur Eksekusi HTTPApa yang terjadi bila kita mengetik http://localhost:8080/aplikasi-web-sederhana/halo.php?nama=endy di browser?1 Browser akan mengakses port 8080 di localhost, yaitu komputer kita sendiri.2 Kita asumsikan bahwa Tomcat berjalan di port 8080, maka request ini akan diterima Tomcat3 Tomcat akan mencari aplikasi bernama aplikasi-web-sederhana. Biasanya aplikasi ini ditandai dengan adanya folder aplikasi-web-sederhana dalam folder /webapps. Folder ini akan terbentuk bila kita mendeploy file bernama aplikasi-web-sederhana.war seperti telah dijelaskan di atas.4 Tomcat akan mencari kode program yang bertanggung jawab menerima request halo.php. Biasanya penanggung jawab ini adalah servlet yang dideklarasikan dalam aplikasi-web-sederhana/WEB-INF/web.xml5 Bila penanggung jawab tidak ditemukan, Tomcat akan mengembalikan kode error 404, artinya tidak ditemukan. Bila penanggung jawab ada, maka Tomcat akan memberikan data-data request kepada penanggung jawab ini untuk ditangani. Data request yang tersedia diantaranya adalah request parameter, HTTP header, dan request body6 Servlet yang bertanggung jawab akan memproses request, kemudian menghasilkan response. Response dikirim ke browser yang mengaksesnya.Sebagai ilustrasi, untuk menangani request http://localhost:8080/aplikasi-web-sederhana/halo.php?nama=endy, kita harus membuat deklarasi servlet di web.xml sebagai berikut:123456789

halo com.muhardin.endy.training.web.HaloServlet

halo /halo.php

Kemudian membuat class HaloServlet dalam package com.muhardin.endy.training.web yang isinya sebagai berikut123456789101112131415161718192021

public class HaloServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) { try { String asal = request.getRemoteAddr(); String nama = request.getParameter("nama"); String output = ""; output += ""; output += "Halo "+nama+""; output += "Anda datang dari "+asal+""; output += ""; output += ""; // content type = html response.setContentType("text/html"); response.getWriter().print(output); } catch (IOException ex) { Logger.getLogger(HaloServlet.class.getName()).log(Level.SEVERE, null, ex); } }}

Pembaca yang teliti akan merasa heranLho kok ekstensi requestnya .php?Aplikasi web Java tidak peduli terhadap ekstensi request. Yang penting sesuai dengan mapping dalam web.xml. Jadi kita bisa pasang halo.php, halo.jsp, halo.html, halo.asp, bahkan halo.halo. Selama URL tersebut terdaftar dalam web.xml, maka request akan diproses dengan baik.Source code lengkap bisa diakses di siniKomponen Aplikasi Web JavaServletDigunakan untuk menerima HTTP request dan membuat HTTP responseCara membuat:7 Buat class yang extends HttpServletImplement method sesuai HTTP method yang akan kita gunakan. GET -> doGet(HttpServletRequest req, HttpServletResponse res) POST -> doPost(HttpServletRequest req, HttpServletResponse res) dstBuat mappingnya di web.xml8 Compile dan deploy ke application server9 Test browse ke http://localhost:8080/aplikasi-web-sederhana/halo.php?nama=endyHaloServlet.java123456789101112131415161718192021

public class HaloServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) { try { String asal = request.getRemoteAddr(); String nama = request.getParameter("nama"); String output = ""; output += ""; output += "Halo "+nama+""; output += "Anda datang dari "+asal+""; output += ""; output += ""; // content type = html response.setContentType("text/html"); response.getWriter().print(output); } catch (IOException ex) { Logger.getLogger(HaloServlet.class.getName()).log(Level.SEVERE, null, ex); } }}

web.xml123456789

halo com.muhardin.endy.training.web.HaloServlet

halo /halo.php

FilterDigunakan untuk : mencegat HTTP request sebelum ditangani servlet mencegat HTTP response sebelum dikirim ke requesterContoh penggunaan : memproteksi URL yang membutuhkan login (Spring Security) mendekorasi HTML dengan header/footer/sidebar (Sitemesh) kompresi responseContoh implementasi :Java (kode program)1234567891011121314151617

public class HaloFilter implements Filter{ public void init(FilterConfig fc) throws ServletException { System.out.println("Filter diinisialisasi"); } public void doFilter(ServletRequest request, ServletResponse response, FilterChain fc) throws IOException, ServletException { System.out.println("Mencegat request"); fc.doFilter(request, response); System.out.println("Mencegat response"); } public void destroy() { System.out.println("Filter di-destroy"); }}

web.xml (konfigurasi)123456789

haloFilter com.muhardin.endy.training.web.HaloFilter

haloFilter /*

ListenerDigunakan untuk merespon event dalam aplikasi, misalnya: aplikasi distart / deploy (context created) aplikasi distop / undeploy (context destroyed) session dibuat session timeout session dihapus (invalidation)Contoh implementasi:Java (kode program)12345678910111213141516171819

public class HaloListener implements ServletContextListener, HttpSessionListener{ public void contextInitialized(ServletContextEvent sce) { System.out.println("Aplikasi start"); } public void contextDestroyed(ServletContextEvent sce) { System.out.println("Aplikasi stop"); } public void sessionCreated(HttpSessionEvent hse) { System.out.println("Ada session baru"); } public void sessionDestroyed(HttpSessionEvent hse) { System.out.println("Session di-destroy"); }}

web.xml (konfigurasi)123

com.muhardin.endy.training.web.HaloListener

Demikianlah konsep dasar aplikasi web di Java. Untuk bisa memahami, tentu kita harus sering berlatih membuat kode program, tidak hanya membaca tutorial saja. Contoh kode program lainnya bisa dilihat di sini. Silahkan dipraktekkan dan dilihat hasilnya.


Top Related