Rabu, 27 Mei 2015

JSP (Java Server Pages)

JSP bertujuan untuk menyederhanakan pembuatan dan manajemen halaman web yang bersifat dinamis, dengan cara memisahkan content dan presentasi. JSP adalah halaman yang menggabungkan HTML dengan scripting tag dan program java. Pada saat JSP dipanggil client melalui browser, JSP tersebut akan di kompile terlebih dahulu menjadi servlet, dan kemudian hasilnya dikembalikan ke client.

Kelebihan JSP

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

Kelemahan JSP

  1. Proses kompile terhadap halaman JSP mengakibatkan client harus menunggu lebih lama pada saat pertama kali di lakukan loading. Hal ini tentu saja menyebabkan kecepatan proses JSP secara menyeluruh berkurang.
Elemen JSP

Struktur halaman JSP adalah penambahan program Java dalam tag <% %> pada suatu halaman HTML untuk membangkitkan content yang bersifat dinamik.

JSP memiliki tiga komponen utama, yaitu :

  1. Directives : merupakan suatu petunjuk bagi web container tentang sesuatu yang harus dilakukan pada saat container melakukan compile halaman JSP.
  2. Scripting Elements : tag untuk menuliskan program Java.
  3. Action : special tag yang memberikan pengaruh pada halaman JSP pada saat runtime.

Directives

Sintaks :

<%@ namaDirective attribute1=”value1” attribute2 =”value2” %>

Directives terdiri dari tiga bagian, yaitu :

  1. Page Directive
  2. Include Directive
  3. Taglib Directive
Page Directive

Untuk menentukan dan memanipulasi atribut-atribut pada halaman JSP serta memberikan informasi ke container untuk atribut-atribut yang memerlukan proses tertentu.

Sintaks :

<%@ page ATTRIBUTE %>

Include Directive

Untuk menyisipkan isi file lain ke dalam file JSP

Sintaks :

<% include file=”namaFile” %>

Contoh :

<% include file=”myHeader.html” %>

Taglib Directive

Untuk penggunaan tag library atau tag tambahan.

Contoh :

<%@ taglib url=http://Latihan.com/tagKu prefix=”test” />

Scripting Elements

Terdiri dari tiga elemen, yaitu :

  1. Declarations
  2. Scriptlets
  3. Expression

Declarations

Declarations merupakan blok program Java yang digunakan untuk mendeklarasikan variable dan method yang akan digunakan dalam program. Variable yang dideklarasikan pada bagian ini akan berperan sebagai variable global pada servlet hasil kompile.

Sintaks :

<%! Deklarasi variable dan method %>

Contoh :

<%! int i = 10 ; double x = 5.0 ; %>

Scriptlets

Scriptlets merupakan blok program Java yang dieksekusi pada saat pemrosesan request. Scriptlets akan dijalankan sesuai dengan instruksi program yang diberikan.

Sintaks :

<% Sintaks Program Java %>

Contoh :

<% System.out.println(“Test Scriptlets”); %>

Expression

Expression merupakan cara untuk memperpendek penulisan scriptlets dan akan mengembalikan nilai String yang dikirim melalui output stream.

Sintaks :

<%= Ekspresi Java %>

Contoh :

<%

String oAnalisa=oAnalisaReview.getAnalisa(oIDK);

%>

JDBC - ODBC

JDBC adalah spesifikasi standar dari JavaSoft  API yang memungkinkan program Java untuk mengakses sistem database manajemen, juga menyediakan methods untuk melakukan query dan modifikasi data pada RDBMS seperti Oracle, SQL Server, MySQL, dll menggunakan Driver Manager. JDBC mirip dengan ODBC , tetapi JDBC digunakan untuk program Java. ODBC bersifat language independent.

KEGUNAAN
Membantu programmer untuk koneksi dengan data source.
• Membantu mengirimkan query serta update statements ke database
• Menerima dan memproses hasil yang diterima dari database sesuai dengan query yang diberikan.

4 KOMPONEN PENTING JDBC

1. JDBC-API

Menyediakan fasilitas untuk mengakses database relasional dari program berbahasa Java. Melalui komponen ini user dapat melakukan proses query dan perubahan data dalam database. JDBC-API memiliki package utama yang tersedia pada java.sql dan javax.sql.

2. JDBC Driver Manager

Merupakan komponen kelas utama yang mendefinisikan object yang mengkoneksikan aplikasi Java ke JDBC driver. Berfungsi untuk mengatur beberapa tipe JDBC database driver yang berbeda. 

3. JDBC Test Suite

Komponen ketiga ini, memastikan JDBC driver dapat menjalankan program user dan sangat berguna dalam melakukan testing sebuah aplikasi yang menggunakan teknologi JDBC.

4. JDBC-ODBC Bridge

Adalah database driver yang menggunakan ODBC driver untuk koneksi ke database serta memiliki fungsi utama untuk translasi dari JDBC method calls ke ODBC function calls dan mengimplementasikan JDBC untuk semua driver yang didukung oleh ODBC. Komponen ini dapat diimplementasikan dalam packagesun.jdbc.odbc.

10 ARSITEKTUR JDBC

JDBC memiliki 10 arsitektur, yaitu :

1. Database connection

2. SQL statements

3. Result set

4. Database metadata

5. Prepared statement

6. BLOBs (Binary Large Objects)

7. CLOBs (Character Large Objects)

8. Callable statements

9. Database driver

10. Driver manager

Tipe 1 – JDBC-ODBC Bridge

Fungsi

– Mengubah query dari JDBC ke ODBC query

– Client JDBC Driver  & ODBC Driver  Database

Keunggulan

– Semua database yang didukung oleh ODBC dapat diakses

Kelemahan

– Performance overhead

– ODBC driver harus diinstal di semua client

– Dibutuhkan client-side software

Tipe 2 – Java to Native API

Fungsi

– Konversi JDBC calls ke client API untuk database

– Client JDBC driver  Vendor Client DB Library  Database

Keunggulan

– Performa lebih baik daripada tipe 1

Kelemahan

– Vendor client library harus diinstal di client.

– Tidak dapat digunakan di internet karena membutuhkan client-side software.

– Tidak semua database memberikan client-side library

Tipe 3 – Java to Network Protocol or All-Java Driver

Fungsi

– Menggunakan pendekatan three-tier communication

– Vendor independent

– Client JDBC Driver, Middleware-Net Server & Any database

Keunggulan

– Tidak membutuhkan instalasi pada client-side

– Middleware server dapat memberikan fungsi tambahan dalam hal caching, load balancing, logging, auditing, dll.

– Dapat digunakan di internet

Kelemahan

– Membutuhkan program yang bersifat database-specific untuk middle tier

– Extra layer dapat menyebabkan time-bottleneck.

Tipe 4 – Java to Database Protocol

Fungsi

– Melakukan komunikasi langsung dengan database melalui koneksi socket.

– Driver berfungsi mengubah JDBC call ke database protocol langsung

– Diimplementasikan sepenuhnya dalam Java.

– Client Machine  Native Protocol JDBC Driver  Database Server. Contoh: Oracle Thin Driver

Keunggulan

– Performa cenderung meningkat. Tidak melakukan translasi ke ODBC, tidak menggunakan client API, tidak menggunakan middleware layer

Kelemahan

– Pada sisi client, driver untuk masing-masing database harus terinstal.

Berikut adalah beberapa konsep penting di dalam JDBC :

Transactions

– Secara default, semua transaksi pada JDBC bersifat auto-commit

Logging

– Digunakan untuk mengatur apakah dilakukan logging kejadian selama transaksi dilakukan.

Concurrency

– Memastikan transaksi terjadi sesuai urutan kronologis.

– Berhubungan dengan kemungkinan terjadinya multikoneksi yang mengakses data yang sama.

JDBC masih memiliki komponen penting lain, yaitu :

Package java.sql

Berisi beberapa class, interface yang digunakan dalam transaksi.

DriverManager

Menangani segala sesuatu yang berkaitan dengan driver yang dipakai.

DataSource

Alternatif dari DriverManager untuk melakukan koneksi database.

JDBC Connection Object

– Object untuk melakukan koneksi dengan database

– Membuat Statement, PreparedStatement, dan CallableStatement untuk eksekusi SQL.

– Melakukan commit dan rollback transaksi



Kamis, 14 Mei 2015

HTTP Request & Response

Sebelum dibahas lebih lanjut, harus diketahui apa itu request dan response. Request adalah client meminta sebuah dokumen kepada server. Dan response adalah server menanggapi permintaan client dan mengambil informasi dari database untuk ditampilkan/diberikan kepada client. 

HTTP request dan response merupakan sebuah proses komunikasi aplikasi web dengan perangkat lunak client melalui HTTP. HTTP, sebagai protokol yang berbicara menggunakan request dan response dan menjadikan aplikasi web bergantung kepada siklus ini untuk menghasilkan dokumen yang ingin diakses oleh pengguna.

Pada pengembangan web tradisional, umumnya digunakan sebuah web server seperti  apache atau glassfish sebagai penyalur konten statis seperti HTML, CSS, Javascript, maupun gambar. Untuk menambahkan aplikasi web yang dibutuhkan oleh penghubung antar web server yaitu CGI (Common Gateway Interface).

CGI diimplementasikan pada web server sebagai interface penghubung antara web server dengan program yang akan menghasilkan konten secara dinamis. Program-program CGI biasanya dikembangkan dalam bentuk script, meskipun dapat dikembangkan dalam bahasa apapun. Contoh dari bahasa pemrograman dan program yang hidup di dalam CGI adalah PHP.

Cara Kerja CGI dan Web Server
1. Client melakukan request kepada server untuk bisa mengakses dokumen yang diinginkan. 
2. Server menerima request dan melakukan response dengan cara mengambil dokumen melalui CGI (untuk konten dinamis seperti PHP).
3. Untuk konten statis seperti HTML, CSS, gambar atau audio, server dapat langsung menampilkannya ke client tanpa perantara (CGI).

Perbedaan Request Message dan Response Message
1. Request
Pada request message, terdapat host dan nama user-agentnya.

2. Response
Pada response message, terdapat tanggal pengirimian, nama server dan tanggal modifikasi terakhir. 

Minggu, 10 Mei 2015

Web Arsitektur (3-tier, n-tier, MVC)

Dasar arsitektur merupakan pertimbangan besarnya dari kebutuhan (requirements) dan batasan (constraint). Dasar arsitektur meliputi:
  • Kebutuhan fungsional
  • Kebutuhan kualitas
  • Integrasi dengan sistem yang telah ada
Ada 3 kategori arsitektur web, yaitu:
  • Aspek layering: Sistem software distrukturkan dalam beberapa tier (deretan bertingkat) untuk mengimplementasikan prinsip "pemisahan urusan (konsen)".
  • Aspek data: Dapat berupa structured (terstruktur) dan non-structured (tidak terstruktur).
Aspek data terstruktur (structured) berupa relational DB dan XML. Sedangkan non-structured berupa konten multimedia seperti gambar,video dan audio.

Komponen Arsitektur Aplikasi Web
  • Client: Biasanya browser dan dikendalikan oleh pengguna untuk mengoperasikan aplikasi web.
  • Firewall: Bagian dari software yang mengatur komunikasi jaringan antara jaringan tak-aman dan jaringan aman, difilter oleh aturan akses.
  • Proxy: Digunakan untuk menyimpan halaman-halaman web dalam suatu cache secara temporer.
  • Web server: Bagian dari software yang mendukung berbagai protokol web.
  • Database server: Menyediakan data dalam bentuk terstruktur.
  • Media server: Digunakan untuk content streaming dari data besar yang tidak terstruktur.
  • Content management sever: Menangani content untuk melayani aplikasi.
  • Application server: Melayani permintaan akses dari computer client.
Framework & Pattern
3-tier
--> Konsep pemrograman yang biasa disebut dengan konsep client, server dan programming.
Layer pada 3-tier:
  • Client layer: komponen yang berjalan pada komputer user dan sebagai interface user.
  • Server layer: komponen yang berfungsi sebagai penghubung antara client dengan database.
  • RDBMS layer: kumpulam dari database dan data resource manager.
Kelebihan 3-Tier:
  • Perubahan cukup dilakukan pada middle tier daripada pada aplikasi keseluruhan.
  • Kemampuan untuk bereaksi terhadap perubahan bisnis dengan cepat.
  • Biaya jangka panjang yang rendah.
Kekurangan 3-tier:
  • Lebih susah untuk merancang
  • Lebih susah untuk mengatur
  • Lebih mahal
N-Tier
--> arsitektur aplikasi yang terdiri dari banyak tier didalamnya.
Komponen yang ada pada n-tier:
  • Presentation layer: Layer yang berada pada tingkat paling atas (interface). Berfungsi sebagai penterjemah tugas dan hasil yang telah dikerjakan oleh layer sebelumnya.
  • Bisnis logic layer/application layer: koordinat dari aplikasi,memproses perintah, membuat keputusan logic dan evaluasi serta memperhitungkan performa. Fungsinya memindahkan dan memproses data antara 2 layer lainnya.
  • Data layer: tempat penyimpanan informasi dan mengolah data.
Keuntungan n-tier:
  • Dari segi skalabilitas, dapat dikembangkan tanpa perlu banyak mengubah inti dari program tersebut.
  • Dari segi portabilitas, dapat berjalan pada banyak sistem tanpa harus banyak mengubah program tersebut.
Kerugian n-tier:
  • Mahal.
  • Memerlukan adaptasi yang semakin luas ruang lingkupnya.
  • Memerlukan waktu yang relatif lama.
  • Penggunaan memori komputer yang lebih besar.
MVC
--> Metode untuk membuat sebuah aplikasi dengan memisahkan data(model) dari tampilan (view) dan cara memprosesnya (controller).
Model
  • Berhubungan langsung dengan database untuk memanipulasi data.
  • Dapat menangani validasi dari bagian controller, tapi tidak bisa berhubungan langsung dengan view.
View
  • Bagian yang menangani presentation logic.
  • Berfungsi untuk menerima dn merepresentasikan data.
Controller
  • Bagian yang menjembatani model dan view.
  • Berfungsi untuk menerima request dan data dari user kemudian menentukan apa yang akan diproses oleh aplikasi.
  • pengolah request user dikembalikan dalam bentuk view kepada user.
Jenis MVC pada website
  1. Server side MVC
  2. Mixed client slide and server slide MVC
  3. Rich internet application MVC
Keuntungan MVC
  • Kode lebih maintainable.
  • Mempermudah debugging
Kekurangan MVC
  • Adanya peningkatan kompleksifitas.

Kamis, 07 Mei 2015

Servlet



Servlet adalah program kecil yang ditulis dengan bahasa Java yang dibuat untuk berjalan diatas web server.
Servlet memiliki kemiripan dengan applet. Bedanya applet berjalan disisi klien (client-side) sedangakan Servlet berjalan di sisi server (server-side). 
Servlet diperkenalkan pertama kali oleh teknologi Java sebagai alternatif lain dari program CGI (Common Gateway Interface). CGI merupakan program yang dikembangkan untuk membuat halaman web menjadi lebih dinamis. CGI memungkinkan adanya interaksi antara user dengan web server, kemudian data di proses di web server. Program CGI banyak ditulis dalam bahasa Perl atau C++.

Proses Akses Servlet

Berikut alur proses yang terjadi ketika klien akses Servlet pada web server :
  1. Membaca data secara ekplist data yang dikirim oleh klien lewat browser. User input data pada form HTML pada halaman web, data juga bisa berasal dari sebuah applet atau lewat program klien HTTP.
  2. Membaca data secara implisit data HTTP request yang dikirim melalui browser. Dalam proses ini akan dibaca dua jenis data, pertama data yang diinput klien dan data yang dikirim oleh browser (seperti : cookies, media type) , proses ini berada di server dimana Servlet dieksekusi,
  3. Generate hasil permintaan (request). Proses ini mungkin memerlukan komunikasi dengan database, eksekusi sebuah RMI atau memanggil web service, invoke sebuah aplikasi, atau menjawab (response) secara langsung permintaan (request). Disini database tidak langsung "berbicara" dengan HTTP atau tidak langsung mengembalikan database dalam bentuk HTML, hal ini berlaku untuk semua aplikasi. Disini dibutuhkan suatu lapisan untuk meng-ekstrak data kedalam bentuk steram HTTP.
  4. Kirim data (dokumen) secara explicit ke client. Dokumen yang dikirim dapat dalam berbagai format , text (HTML), binary (image file), atau bahkan file hasil kompres (gzip file)
  5. Kirim data response HTTP secar implisit. Servlet atau JSP akan mengirim data ke client, ada dua jenis data yang dikirim, data yang berisi informasi yang diinginkan / diproses dan informasi HTTP ( cookies, catch parameter dan sebagainya).
Struktur Dasar Servlet
Package yang diperlukan untuk membuat class Servlet adalah package java.io.* (PrintWriter), javax.servlet.* (HttpServlet), dan javax.servlet.http.*(HttpServletRequest ,HttpServletResponse). 
Berikut struktur dasar class Servlet:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ServletTemplate extends HttpServlet {
public void doGet(HttpServletRequest request,
throws ServletException, IOException {
HttpServletResponse response)
// (e.g., cookies) and query data from HTML forms.
// Use "request" to read incoming HTTP headers
// code and headers (e.g. the content type, cookies).
// Use "response" to specify the HTTP response status PrintWriter out = response.getWriter();
}
// Use "out" to send content to browser.
}


Method Method HttpServletRequest
Method
Description
String getParameter(String name)
Mengembalikan nilai yang berkesesuaian dengan parameter yang dikirim ke servlet sebagai bagian dari proses request GET atau POST
Enumeration getParamterNames( )
Mengembalikan nama seluruh parameter yang dikirim ke servlet sebagai bagian dari request POST
String[] getParameterValues( )
Mengembalikan array of String yang berisi untuk nilai paramater tertentu yang dikirim ke Servlet
Cookie[] getCookies()
Mengembalikan array of Cookie yang merupakan object yang disimpan di client oleh server. Cookie dapat digunakan untuk mengidentifikasi secara unik setiap client oleh servlet
HttpSession getSession(boolean create)
Mengembalikan object HttpSession yang berkesesuaian dengan browsing session yang sedang berlangsung pada client. Object session ini digunakan untuk mengidentifikasi klien yang mengakses servlet secara unik.


Method Method HttpServletResponse
Method
Description
void addCookie (Cookie cookie)
Digunakan untuk menambahkan cookie pada header sebagai respons ke klien.
ServletOutputStream getOutputStream( )
Mendapatkan output stream berbasis byte yang memungkinkan binary data di kirim ke klien
PrintWriter getWriter( )
Mendapatkan output stream berbasis karakter yang memungkinkan data teks dikirim ke klien
void setContentType( String type)
Menspesifikasi tipe MIME pada respons ke browser. Tipe MIME membantu browser menentukan cara menampilkan data. Misalnya tipe MIME "text/html" mengindikasikan respons berupa dokumen HTML sehingga browser menampilkan halaman HTML

Servlet memiliki kelebihan-kelebihan sebagai berikut :
  • Efisien dan baik dalam performance.
Performance servlet dapat dikatakan efisien dan baik karena tidak ada proses pembuatan berulang untuk tiap request dari client. Setiap request ditangani oleh proses servlet container. Servlet tidak dibuat dan dihancurkan secara berulang-ulang, melainkan tetap tersimpan pada memori untuk menangani request yang datang selanjutnya.
  • Powerful
Servlet memiliki kemampuan yang lengkap antara lain mampu melakukan penanganan request, session, cookie, akses ke database dengan JDBC dan caching, serta library yang lengkap untuk pembuatan aplikasi web.
  • Aman

Servlet memiliki fasilitas security yang baik dan merupakan bagian dari teknologi Java yang sudah dari asalnya didesain dengan security yang baik.
  • Portabilitas

Teknologi Java servket dapat dijalankan di berbagai servlet container, application server, maupun sistem operasi.
  • Proses development yang lebih cepat

Dengan menggunakan servlet, kita dapat menggunakan library java yang lengkap dan menggunakan komponen atau bean yang sudah ada.
  • Tangguh

Servlet merupakan teknologi java yang memiliki penanganan memory yang baik dan garbage collection sehingga menjadi aplikasi web yang tangguh dan stabil.
  • Telah digunakan dan diakui di dunia

Servlet merupakan teknologi java yang telah digunakan di berbagai belahan dunia. Kita dapat menemukan berbagai komponen, solusi dan dukungan yang ditawarkan baik yang gratis (open source) maupun komersial.
  • Murah

Dikatakan murah karena JDK Java dapat didownload secara gratis. Servlet dan JSP container juga banyak yang gratis, misalnya Apache Tomcat.
Nah dalam prakteknya di dunia MVC, servlet dapat berperan sebagai controller

Cara Membuat Servlet.
  1. Pastikan aplikasi Netbeans sudah terinstal di laptop/PC anda.
  2. Buka aplikasi Netbeans pada laptop/PC anda.
  3. Buatlah project baru dengan memencet tombol file dari menu, lalu pilih new project. Maka akan muncul tampilan seperti gambar berikut.

   4.  Masukkan nama project.


    5. Pilih server.
 

    6. Klik finish.
    7. Tambahkan file servlet pada project yang telah dibuat, dengan cara klik         kanan package, new, lalu pilih servlet.
   
   8. Masukkan nama servlet. Klik finish.
      

Membuat Servlet Pertama

Berikut ini contoh program Servlet sederhana yang menampilkan teks "Salam dari Servlet !" ke dalam halaman web pada browser.

/**
 * File SalamServlet.java
 */
package app;

import java.io.*;
import java.util.Date;

import javax.servlet.*;
import javax.servlet.http.*;

// setiap servlet adalah turunan HttpServlet
public class SalamServlet extends HttpServlet
{
        // inilah 'main' dari Servlet
    public void doGet ( HttpServletRequest rq, HttpServletResponse resp )
    throws ServletException, IOException
    {
        // supaya browser type content data
        resp.setContentType ("text/html");

        // untuk character dan line oriented output
        PrintWriter out = resp.getWriter ( );

        // send salaam
        out.println("<h1>Assalamu'alaikum ...</h1>");

        Date date = new Date();
        out.println(date.toString());
    }

}
Simpan file ini dibawah direktori base_aplikasi/src/java/app


Compile Program Servlet

Proses kompilasi dan deploy aplikasi menggunakan tools ant (detail pada bab II), dengan konsole (shell command) di base direktori aplikasi anda, jalankan perintah :
base_aplikasi]$ ant
Sebelum di deploy Servlet kew servlet container (tomcat), edit terlebih dahulu file web.xml pada direktori (base_aplikasi/web/WEB-INF/web.xml), dengan menambahkan baris berikut:

<servlet>
        <servlet-name>firstServlet</servlet-name>
        <servlet-class>app.SalamServlet</servlet-class>
</servlet>
<servlet-mapping>
        <servlet-name<firstServlet>/servlet-name<
        <url-pattern</salam>/url-pattern<
</servlet-mapping>
Penjelasan baris kode pada file web.xml

<servlet>
<servlet-name>firstServlet</servlet-name>
<servlet-class>app.SalamServlet</servlet-class>
</servlet>
berarti : class hasil kompilasi SalamServlet.class yang terdapat dalam package app akan di mapping dengan nama servlet firstServlet

<servlet-mapping>
<servlet-name<firstServlet>/servlet-name<
<url-pattern</salamt>/url-pattern<
</servlet-mapping>
berarti : servlet dengan nama firstServlet mempunyai url /SalamServlet


Deploy Servlet ke Tomcat Web Server

base_aplikasi]$ ant install
Jika sudah pernah deploy aplikasi ke dalam servlet container (tomcat), jalankan perintah :

base_aplikasi]$ ant reload


Akses Servlet
Jika semua berjalan lancar anda bisa mengakses Servlet pertama anda lewat browser dengan url : http://localhost:8080/appweb/salam. 
appweb adalah nama project yang di deploy ke servlet container (tomcat).