Anda di halaman 1dari 8

08: JSP Fundamentals JSP merupakan ekstensi dari servlet yang dibuat untuk memudahkan pembuatan web dengan

dynamic contents melalui komponen dan tag yang telah disediakan didalam javax.servlet.jsp dan javax.servlet.jsp.tagext. Proses pada JSP:

1. 2. 3. 4. 5.

Web browser akan melakukan page request dengan tipe .jsp Server yang memiliki web container akan mencari page dan membaca isi dari page. JSP akan diubah menjadi servlet agar dapat di-compile didalam web server. Setelah diubah menjadi servlet maka akan dilakukan kompilasi ke dalam bentuk .class. Web container akan melakukan invoke ke objek yang telah di-compile dengan cara mengeksekusi .class yang akan memproses request dan menghasilkan response. 6. Response yang dihasilkan oleh eksekusi objek akan dikembalikan ke web browser dari client. 7. Jika tidak ada perubahan pada file JSP maka web container akan langsung mengeksekusi objek yang telah dibuat. Implicit objects merupakan objek didalam JSP yang telah disediakan oleh container secara otomatis, sehingga objek tidak perlu dideklarasikan secara eksplisit. 1. Application: objek memiliki scope sebesar aplikasi itu sendiri, sehingga objek dapat dikenali oleh seluruh page JSP dan Servlet didalam aplikasi yang sama. 2. Config: objek memiliki scope sebesar page dan digunakan untuk initialization data passing. 3. Exception: memiliki page scope dan digunakan untuk mengakses data yang tereksepsi. 4. Out: page scope dan digunakan untuk menampilkan output stream. 5. Page: Sebagai reference untuk instance dari Java (??) 6. PageContext: menyembunyikan proses implementasi dari Servlet dan menyediakan akses ke implicit objects. 7. Response: menyediakan akses ke HttpServletResponse yang menghasilkan objek dan mengirimkannya ke _jspService sebagai parameter.

8. Request: untuk merepresentasikan objek yang diminta oleh user. (??) 9. Session: merepresentasikan informasi dari user yang mengakses aplikasi dan mengatur state dari aplikasi. Komponen pada JSP: Directives: memberikan pesan pada JSP Container bagaimana page ditampilkan, konfigurasi, beserta include file Java kedalam page. Page akan diproses pada translation time. Actions: page bekerja berdasarkan request secara spesifik dari client dan memberikan akses pada tasks yang sering digunakan seperti include konten dari page lain, melakukan forwarding dari satu page ke page lain, dan interaksi dengan JavaBean. Perbedaan dengan directives adalah, action diproses ketika runtime. Action yang dapat dilakukan diantara lain: o include: menambahkan file lain yang diproses disaat request time. o forward: memindahkan request ke page yang dituju dan menghentikan proses pada page pemanggil, namun page tetap berjalan pada page pemanggil. o plugin: penambahan plugin untuk fungsionalitas page. Contoh: applet. o param: penambahan parameter pada bagian include. o usebean: meng-include java bean beserta scope dan parameter. o setproperty: set property pada javabean instance. o Agetproperty: mengambil property dari javabean instance dan disimpan dalam bentuk string. Scripting Elements: JSP dapat menggabungakan tampilan data yang dinamik kedalam dokumen XHTML. Hal ini dilakukan dengan menyisipkan java code pada XHTML. Elemen yang terdapat didalam JSP: o Scriplets: blok yang mengandung kode Java dan akan terhubung dengan method _jspService didalam container. o Comments: terdapat tiga jenis: JSP (<%----%>), XHTML(<!---->), Java(//./*). Yang dapat tampil pada user adalah jenis XHTML saja. o Expressions: menampilkan data dan disimbolkan dengan (<%=%>), akan ditampilkan dalam bentuk String. o Declarations: mendeklarasikan variabel atau method sehingga dapat dikenal dalam satu page. (<%!%>) o Escape sequences: digunakan untuk menampilkan special character. Contoh: <\%. Tag Libraries: penggunaannya mirip dengan jsp:action namun terdapat perluasan penggunaan JSP tags, dimana prefix (jsp:) dapat diganti sesuai library yang akan digunakan user.

09: JSP Advance JSTL digunakan untuk menghilangkan Java code / scriptlets dalam suatu halaman JSP sehingga memudahkan non-programmer (misalnya designer) untuk membuat suatu view tanpa harus mempelajari bahasa pemrograman Java atau JSP Untuk menggunakan JSTL, sebelumnya kita harus meng-include library JSTL yang diperlukan ke dalam netbeans atau ke dalam folder WEB-INF\lib jika tidak memakai netbeans, lalu menambahkan taglib directive sebagai berikut ke dalam file JSP
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

Core JSTL Tags:


Tag <c:out > <c:set > <c:remove > <c:catch> <c:if> <c:choose> <c:when> <c:otherwise > <c:import> <c:forEach > <c:forTokens> <c:param> <c:redirect > <c:url> Description Like <%= ... >, but for expressions. Sets the result of an expression evaluation in a 'scope' Removes a scoped variable (from a particular scope, if specified). Catches any Throwable that occurs in its body and optionally exposes it. Simple conditional tag which evalutes its body if the supplied condition is true. Simple conditional tag that establishes a context for mutually exclusive conditional operations, marked by <when> and <otherwise> Subtag of <choose> that includes its body if its condition evalutes to 'true'. Subtag of <choose> that follows <when> tags and runs only if all of the prior conditions evaluated to 'false'. Retrieves an absolute or relative URL and exposes its contents to either the page, a String in 'var', or a Reader in 'varReader'. The basic iteration tag, accepting many different collection types and supporting subsetting and other functionality . Iterates over tokens, separated by the supplied delimeters. Adds a parameter to a containing 'import' tag's URL. Redirects to a new URL. Creates a URL with optional query parameters

10: JDBC Merupakan kepanjangan dari Java Data Base Connectivty dan terdapat pada java.sql package. Untuk melakukan koneksi antara web application dengan database diperlukan JDBC Driver , dan terdapat beberapa macam driver berdasarkan dari bagaimana database dibuat ataupun bagaimana cara komunikasi pada database dapat dilakukan. JDBC-to-ODBC Bridge Driver Native-API JDBC-Net Pure Java Driver Native-Protocol Pure Java Drivers

JDBC Drivers: MySQL: com.mysql.jdbc.Driver Url format: jdbc:mysql//hostname/databaseName Access: com.jdbc.odbc.JdbcOdbcDriver Url format: jdbc:odbc:databaseName Oracle: oracle.jdbc.driver.OracleDriver DB2: COM.ibm.db2.jdbc.net.DB2Driver

Tahapan dalam koneksi database dengan web application: 1. Melakukan register terhadap JDBC Driver yang sesuai dengan RDBMS yang akan digunakan. Hal ini dilakukan agar driver nantinya dapat di-load agar dapat dihubungkan. Class.forName(<jenis RDBMS>); 2. Setelah driver di-load, maka selanjutnya aplikasi akan meminta koneksi dengan RDBMS selayaknya kabel yang menghubungkan, maka akan dibuat objek connection dengan URL dari jenis RDBMS dan path menuju file database. Connection con = DriverManager.getConnection(<url>); 3. Setelah koneksi telah dibuat, maka yang dilakukan adalah bagaimana berhadapan dengan cara mengirimkan query dan data yang dikembalikan oleh database. Diperlukan objek statement untuk hal ini: Statement st = con.createStatement(); 4. Tiap SQL statement memiliki return value yang berbeda-beda, ada yang menghasilkan objek berupa barisan data yang dicari, banyaknya baris yang terupdate, ataupun tidak sama sekali. Sehingga, diperlukan method yang berbeda-beda.

Return value dari statement: SELECT (executeQuery(String sql)): mengembalikan kumpulan data dalam bentuk tabel isi data berupa ResultSet. INSERT, UPDATE, DELETE, CREATE, DROP (executeUpdate(String sql)): mengembalikan berapa banyak rows yang affected. Stored Procedure: return true jika hasil pertama adalah ResultSet.

ResultSet dapat dilihat sebagai objek berbentuk 2D array. Dengan adanya iterator berupa next() maka cursor dari tabel akan digeser. Getter yang dapat dipakai adalah getBlob(), getBigDecimal(), getDate, getBytes(), getLong(), getString(), getObject(), dll. Terdapat beberapa constants: Static Type Constant o TYPE_FORWARD_ONLY (1003): cursor hanya bergerak maju didalaman tabel ResultSet. o TYPE_SCROLL_INSENSITIVE(1004): cursor dapat bergerak maju-mundur dan tidak terpengaruh oleh update kecuali di-recall. o TYPE_SCROLL_SENSITIVE(1005): cursor dapat bergerak maju-mundur dan terpengaruh oleh update. Static Type Concurrency Constant o CONCUR_READ_ONLY(1007): ResultSet tidak dapat di-update (perubahan tidak akan berpengaruh pada database). o CONCUR_UPDATABLE(1008): ResultSet dapat di-update dan akan ada perubahan pada database.

PreparedStatement merupakan method didalam objek Statement yang digunakan untuk menghasilkan query yang dynamic dan value bergantung dari user. RowSet memberikan layanan beberapa set method yang menspesifikasi properties yang dipakai untuk membangun koneksi.

11: Session Tracking & Cookies Session dibutuhkan dalam akses website, hal ini dilakukan dengan cara: 1. Client melakukan request pertama kali ke server. Container pada server akan melakukan pembuatan objek session yang digunakan untuk menyimpan data-data yang diset untuk user dan state yang dimiliki oleh user serta menyimpan data-data yang dibuat oleh user. 2. Server akan mengirim page yang diminta lalu akan mengirimkan session ID kepada client. Session ID akan disimpan sebagai cookies pada client browser. 3. Ketika client akan melakukan request, maka session ID akan ikut dikirim ke server, dan server akan mengasosiasikan client dengan request lain yang sebelumnya dilakukan oleh user yang sama. Session dibutuhkan sebagai media untuk menyimpan informasi/data dari setiap koneksi yang dibuat oleh client, karena protokol HTTP bersifat stateless (tidak memiliki hubungan pada tiap koneksi) sehingga web server tidak dapat mengasosiasikan request sebelumnya. Method getSession()
HttpSession session = request.getSession();

Description Mengembalikan objek HttpSession ke hasil request, jika tidak ada maka akan dibuat. Membuat atribut baru pada objek session dengan nama objek yang dapat diset. Mengembalikan value dari nama atribut dalam bentuk objek yang nantinya di-cast sesuai kebutuhan. Menghapus atribut dalam objek session. Mengembalikan seluruh nama atribut pada objek Session dalam bentuk java.util.Enumeration dan nantinya akan dicast. Mengembalikan session id dari associated client. Mengecek apakah client sudah mengetahui adanya session atau mematikan cookies. True jika seperti itu. Default 1800s, Jika tidak ada request selama kurun waktu maka session akan dihapus. -1 untuk interval sampai browser ditutup. Menghapus session dan unbind seluruh objek dari session.

setAttribute(String name, Object)


session.setAttribute(productName, productName);

getAttribute(String name)
session.getAttribute(productName);

removeAttribute(String name)
session.removeAttribute(productName);

getAttributeNames()
Enumeration names=session.getAttributeNames(); while(names.hasMoreElements()) { println((String) names.nextElement()); }

getId()
String sessionId = session.getId();

isNew()
session.isNew();

setMaxInactiveInterval(int sec)
session.setMaxInterval(24*60*60);

invalidate()
session.invalidate();

Cara diatas merupakan cara yang dapat digunakan apabila cookies pada browser dari client diperbolehkan. Dapat dilakukan cara lain yaitu dengan cara encoding session ID dari user dan menaruhnya di URL. URL encoding dapat dibuat dengan menggunakan method encodeURL(String url). Thread-safe access pada objek session diperlukan ketika adanya banyak request untuk mengambil shared resource dari client yang sama melalui threads. Hal ini dapat dicegah dengan menggunakan keyword synchronize untuk memberikan hak akses secara eksklusif kepada salah satu thread untuk memakai resource tersebut. Cookies merupakan data berukuran kecil yang digunakan untuk menyimpan informasi dari hasil aktivitas user pada suatu website. Tiap cookies bekerja untuk masing-masing darimana cookies tersebut berasal, dikarenakan pada awalnya cookies akan disiapkan oleh server dan akan dikirim ke client. Ketika client akan mengirimkan request, cookies akan ikut dikirim. Cookies digunakan untuk: Skip login & form fill-in Customize pages Focus advertising Description Menghasilkan objek cookie dengan nama atribut beserta value. Mengatur seberapa lama cookies dapat dipakai, -1 untuk per-session. Direktori penyimpanan cookies agar dapat diakses (/) Mengembalikan nama dari cookies.

Method Cookie (String name, String value)


Cookie userCookie = new Cookie (userId, userId);

setMaxAge (int second)


userCookie.setMaxAge(24*60*60);

setPath (String path)


userCookie.setPath(/);

getName()
session.removeAttribute(productName);

getValue()
Enumeration names=session.getAttributeNames(); while(names.hasMoreElements()) { println((String) names.nextElement()); }

Mengembalikan string nilai dari cookies.

addCookie(Cookie c)
response.addCookie(userCookie);

Menambahkan cookies dalam objek response.

getCookies()
Cookie[] cookies = request.getCookies(); String cookieName = userCookie; String cookieValue = ; for (i=0; i<cookies.length; i++) Cookie cookie = cookies[i]; if(cookieName.equals(cookie.getName()) cookieValue = cookie.getValue()

Mengembalikan objek array yang dikirim melalui request.

12: Design Pattern Design pattern merupakan sebuah pola perancangan/pemisahan bagian dari bagaimana cara kerja sistem. Pattern ini biasanya berupa template ataupun deskripsi yang menjelaskan bagaimana sistem dapat bekerja dan dapat dipakai untuk berbagai situasi. Contoh: MVC (Model-View-Controller) yang memisahkan representasi informasi dengan interaksi user. Framework merupakan generic web application yang mengimplementasikan design pattern, dan logika dari sistem akan kita tentukan sendiri, selain itu terdapat juga beberapa API yang disediakan oleh framework untuk membantu kerja pembuatan sistem. Contoh: CodeIgniter yang mengimplementasikan MVC architectural pattern. MVC Pemisahan bagian dalam struktur aplikasi web: o Model: yang bertugas untuk melakukan komunikasi dengan database dan application data. Akan memberitahu o View: merepresentasikan output yang dihasilkan melalui proses dari Model untuk dilihat oleh user. o Controller: mengontrol berjalannya aplikasi dengan cara mengatur apa yang akan dilakukan apabila ada input yang diberikan oleh user dan mengatur tampilan yang akan ditampilkan melalui view. Pengaturan ini mencakup bagaimana merubah input tersebut agar dapat dilakukan operasi pada Model, dll.

Layers Membagi sistem menjadi tiga bagian: o Client tier: sebagai bagian yang mempresentasikan aplikasi yang akan digunakan, dan dilihat melalui browser. o Middle tier: sebagai intermediary antara information tier dan client tier. o Information tier: melakukan pengaturan kerja back-end dari aplikasi, seperti penyimpanan pada database. Creational Pattern Behavioral Pattern Structural Pattern

Anda mungkin juga menyukai