Java adalah bahasa pemrograman berorientasi objek yang dikembangkan oleh Sun Microsystems pada tahun 1990-an. Java dirancang untuk portabel dan dapat dijalankan pada berbagai sistem operasi. Program Java dikompilasi menjadi bytecode yang kemudian dijalankan oleh Java Virtual Machine, sehingga memungkinkan portabilitas kode sumber Java.
YouTube in Drupal is a 53.5 hour project to build a YouTube site in Drupal using various contributed modules. Key modules used include CCK, Views, Panels, FileField, Embedded Media Field, and jQuery Media to enable video uploads and playback. Additional functionality was added through Flags, Pathauto, and Forum modules. Initial setup took 6.5 hours with the bulk of time spent troubleshooting media playback issues and customizing the node display.
GSM encryption needs to be shown insecure
- GSM is constantly under attack through demonstrated weaknesses in its A5/1 cipher and lack of network authentication
- However, GSM is used for sensitive applications like banking and access control
- To rectify perceptions of GSM security, the presentation will demonstrate its practical weaknesses through cracking the A5/1 cipher
- The community has already done the computational work needed and the presentation will detail next steps for a public demonstration cracking GSM encryption to raise awareness of ongoing security issues.
O T O M A S I P E N G A W A S R U M A H D E N G A N M E N G G U N A K A N...Individual Consultants
Sistem ini merupakan robot pengawas rumah yang dikendalikan secara nirkabel melalui handphone. Robot mampu berkeliling ruangan sambil merekam video untuk ditayangkan ke pengguna melalui streaming. Robot dibangun dengan kaki empat dan sensor untuk mendeteksi halangan serta menjaga keseimbangan. Ia dikendalikan oleh dua mikrokontroler yang terhubung melalui sinyal DTMF dari handphone.
Ringkasan dokumen tersebut adalah:
1. Dokumen tersebut membahas tentang sistem penyadapan telepon seluler menggunakan teknologi GSM yang disebut Intruder in The Darkness untuk mendukung upaya penegakan hukum.
2. Sistem ini dirancang untuk melakukan scanning nomor telepon, man-in-the-middle attack, dan pelacakan lokasi telepon untuk mendapatkan informasi yang dibutuhkan oleh pihak berwenang.
3
Java adalah bahasa pemrograman berorientasi objek yang dikembangkan oleh Sun Microsystems pada tahun 1990-an. Java dirancang untuk portabel dan dapat dijalankan pada berbagai sistem operasi. Program Java dikompilasi menjadi bytecode yang kemudian dijalankan oleh Java Virtual Machine, sehingga memungkinkan portabilitas kode sumber Java.
YouTube in Drupal is a 53.5 hour project to build a YouTube site in Drupal using various contributed modules. Key modules used include CCK, Views, Panels, FileField, Embedded Media Field, and jQuery Media to enable video uploads and playback. Additional functionality was added through Flags, Pathauto, and Forum modules. Initial setup took 6.5 hours with the bulk of time spent troubleshooting media playback issues and customizing the node display.
GSM encryption needs to be shown insecure
- GSM is constantly under attack through demonstrated weaknesses in its A5/1 cipher and lack of network authentication
- However, GSM is used for sensitive applications like banking and access control
- To rectify perceptions of GSM security, the presentation will demonstrate its practical weaknesses through cracking the A5/1 cipher
- The community has already done the computational work needed and the presentation will detail next steps for a public demonstration cracking GSM encryption to raise awareness of ongoing security issues.
O T O M A S I P E N G A W A S R U M A H D E N G A N M E N G G U N A K A N...Individual Consultants
Sistem ini merupakan robot pengawas rumah yang dikendalikan secara nirkabel melalui handphone. Robot mampu berkeliling ruangan sambil merekam video untuk ditayangkan ke pengguna melalui streaming. Robot dibangun dengan kaki empat dan sensor untuk mendeteksi halangan serta menjaga keseimbangan. Ia dikendalikan oleh dua mikrokontroler yang terhubung melalui sinyal DTMF dari handphone.
Ringkasan dokumen tersebut adalah:
1. Dokumen tersebut membahas tentang sistem penyadapan telepon seluler menggunakan teknologi GSM yang disebut Intruder in The Darkness untuk mendukung upaya penegakan hukum.
2. Sistem ini dirancang untuk melakukan scanning nomor telepon, man-in-the-middle attack, dan pelacakan lokasi telepon untuk mendapatkan informasi yang dibutuhkan oleh pihak berwenang.
3
Teks tersebut membahas tentang studi kasus aplikasi seminar online yang dapat digunakan untuk mendaftarkan seminar dan mengelola data seminar dan peserta. Teks tersebut menjelaskan domain model, objek-objek yang dibutuhkan seperti user, seminar, dan pegawai. Kemudian membahas implementasi model MVC dengan membuat facade layer dan data access layer untuk berinteraksi dengan basis data. Use case tambah user baru dijelaskan dengan membuat method di facade class dan interface s
Bab 15 membahas tentang Design Pattern. Salah satu pattern yang dijelaskan adalah View Helper yang berfungsi untuk memisahkan logic bisnis dari presentasi dengan menyimpan logic tersebut dalam class helper yang dapat diakses oleh komponen presentasi. Pattern lainnya yang dijelaskan adalah Session Facade yang berfungsi untuk menyederhanakan akses ke objek-objek domain dalam sesi pengguna melalui objek facade.
Bab 10 membahas topik-topik lanjutan dalam JSF seperti FacesContext, validator, dan pembuatan komponen kustom. FacesContext menangani informasi kontekstual dalam JSF dan memberikan akses ke komponen tree dan lingkungan eksternal. JSF menyediakan beberapa validator standar dan memungkinkan pembuatan validator kustom melalui metode eksternal atau kelas validator terpisah. Komponen kustom dapat dibuat dengan mewarisi komponen dasar JSF.
Bab ini membahas tentang Java Server Faces (JSF), sebuah framework untuk membangun antarmuka pengguna untuk aplikasi web. JSF memisahkan presentasi dari logika bisnis dan menyediakan komponen antarmuka pengguna standar serupa dengan widget Swing. JSF bekerja dengan memisahkan komponen Model, View, dan Controller. Controller menangani permintaan dan menjalankan aksi yang diperlukan."
Dokumen tersebut membahas tentang Java Server Pages (JSP) sebagai teknologi untuk menghasilkan konten dinamis dan statis pada web. JSP memungkinkan pengembang untuk menggabungkan kode Java dan template HTML untuk menghasilkan halaman web dinamis. Dokumen ini menjelaskan syntax dasar JSP seperti scriptlets, ekspresi, dan deklarasi untuk menambahkan logika Java ke dalam halaman web.
Servlet memungkinkan pengembang Java untuk membangun aplikasi web dinamis. Bab ini membahas topik lanjutan tentang servlet seperti pengalihan respon, penggunaan objek request dan session, serta filters. Pengalihan respon dapat dilakukan menggunakan request dispatcher atau sendRedirect untuk memindahkan output ke komponen lain. Objek request dan session digunakan untuk menyimpan dan mengambil kembali data antar komponen dalam satu request atau sesi pengguna. Filters
Bab 9 membahas tentang optimisasi aplikasi mobile dengan menggunakan berbagai teknik seperti StringBuffer untuk menggantikan String, clipping area dalam menggambar, dan menunda inisialisasi besar hingga dibutuhkan. Teknik lainnya adalah menggunakan obfuscator dan memadatkan file JAR untuk mengurangi ukuran aplikasi serta menghindari pembuatan class dan interface yang tidak perlu.
Dokumen ini membahas tentang web service dan XML. Secara singkat, dokumen ini menjelaskan pengenalan XML dan bagian-bagiannya seperti element dan atribut, kemudian menjelaskan beberapa Java API untuk memproses XML seperti DOM, SAX, dan JAXP. Dokumen ini juga menjelaskan tentang web service standar seperti SOAP, WSDL, dan UDDI serta cara membuat web service client menggunakan J2ME.
Bab 7 dokumen tersebut membahas tentang security pada perangkat mobile. Ia menjelaskan konsep dasar kriptografi dan jenis-jenis layanan keamanan seperti autentikasi, kerahasiaan, integritas, dan non-repudiasi. Bab tersebut juga mendemonstrasikan cara membuat digest pesan, enkripsi simetris, dan menggunakan SATSA (Security and Trust Services API) untuk membuat digest dan enkripsi pesan.
Bab 5 membahas tentang persistence data pada MIDP dimana program dapat menyimpan data aplikasi secara lokal di dalam perangkat. MIDP menyediakan Record Management System yang memungkinkan MIDlets menyimpan dan mengakses data aplikasi menggunakan record store. Bab ini menjelaskan cara membuat, mengakses, dan memanipulasi record store dan isinya seperti menambahkan, memperbarui, dan menghapus record.
Teks tersebut membahas tentang studi kasus aplikasi seminar online yang dapat digunakan untuk mendaftarkan seminar dan mengelola data seminar dan peserta. Teks tersebut menjelaskan domain model, objek-objek yang dibutuhkan seperti user, seminar, dan pegawai. Kemudian membahas implementasi model MVC dengan membuat facade layer dan data access layer untuk berinteraksi dengan basis data. Use case tambah user baru dijelaskan dengan membuat method di facade class dan interface s
Bab 15 membahas tentang Design Pattern. Salah satu pattern yang dijelaskan adalah View Helper yang berfungsi untuk memisahkan logic bisnis dari presentasi dengan menyimpan logic tersebut dalam class helper yang dapat diakses oleh komponen presentasi. Pattern lainnya yang dijelaskan adalah Session Facade yang berfungsi untuk menyederhanakan akses ke objek-objek domain dalam sesi pengguna melalui objek facade.
Bab 10 membahas topik-topik lanjutan dalam JSF seperti FacesContext, validator, dan pembuatan komponen kustom. FacesContext menangani informasi kontekstual dalam JSF dan memberikan akses ke komponen tree dan lingkungan eksternal. JSF menyediakan beberapa validator standar dan memungkinkan pembuatan validator kustom melalui metode eksternal atau kelas validator terpisah. Komponen kustom dapat dibuat dengan mewarisi komponen dasar JSF.
Bab ini membahas tentang Java Server Faces (JSF), sebuah framework untuk membangun antarmuka pengguna untuk aplikasi web. JSF memisahkan presentasi dari logika bisnis dan menyediakan komponen antarmuka pengguna standar serupa dengan widget Swing. JSF bekerja dengan memisahkan komponen Model, View, dan Controller. Controller menangani permintaan dan menjalankan aksi yang diperlukan."
Dokumen tersebut membahas tentang Java Server Pages (JSP) sebagai teknologi untuk menghasilkan konten dinamis dan statis pada web. JSP memungkinkan pengembang untuk menggabungkan kode Java dan template HTML untuk menghasilkan halaman web dinamis. Dokumen ini menjelaskan syntax dasar JSP seperti scriptlets, ekspresi, dan deklarasi untuk menambahkan logika Java ke dalam halaman web.
Servlet memungkinkan pengembang Java untuk membangun aplikasi web dinamis. Bab ini membahas topik lanjutan tentang servlet seperti pengalihan respon, penggunaan objek request dan session, serta filters. Pengalihan respon dapat dilakukan menggunakan request dispatcher atau sendRedirect untuk memindahkan output ke komponen lain. Objek request dan session digunakan untuk menyimpan dan mengambil kembali data antar komponen dalam satu request atau sesi pengguna. Filters
Bab 9 membahas tentang optimisasi aplikasi mobile dengan menggunakan berbagai teknik seperti StringBuffer untuk menggantikan String, clipping area dalam menggambar, dan menunda inisialisasi besar hingga dibutuhkan. Teknik lainnya adalah menggunakan obfuscator dan memadatkan file JAR untuk mengurangi ukuran aplikasi serta menghindari pembuatan class dan interface yang tidak perlu.
Dokumen ini membahas tentang web service dan XML. Secara singkat, dokumen ini menjelaskan pengenalan XML dan bagian-bagiannya seperti element dan atribut, kemudian menjelaskan beberapa Java API untuk memproses XML seperti DOM, SAX, dan JAXP. Dokumen ini juga menjelaskan tentang web service standar seperti SOAP, WSDL, dan UDDI serta cara membuat web service client menggunakan J2ME.
Bab 7 dokumen tersebut membahas tentang security pada perangkat mobile. Ia menjelaskan konsep dasar kriptografi dan jenis-jenis layanan keamanan seperti autentikasi, kerahasiaan, integritas, dan non-repudiasi. Bab tersebut juga mendemonstrasikan cara membuat digest pesan, enkripsi simetris, dan menggunakan SATSA (Security and Trust Services API) untuk membuat digest dan enkripsi pesan.
Bab 5 membahas tentang persistence data pada MIDP dimana program dapat menyimpan data aplikasi secara lokal di dalam perangkat. MIDP menyediakan Record Management System yang memungkinkan MIDlets menyimpan dan mengakses data aplikasi menggunakan record store. Bab ini menjelaskan cara membuat, mengakses, dan memanipulasi record store dan isinya seperti menambahkan, memperbarui, dan menghapus record.
1. J.E.N.I
BAB 14
AJAX
14.1 PENDAHULUAN
Hingga saat ini, aplikasi web mengikuti alur arsitektur berikut : satu – satunya cara
dalam merepresentasikan content baru (sebagai contoh, dalam merespon interaksi
antara user dengan halaman pada aplikasi) dilakukan dengan cara mengirimkan
request kepada server dan menampilkan halaman baru pada user. Terdapat
teknologi client side scripting (JavaScript, VBScript, dan sebagainya) yang
memberikan gambaran pada user bahwa mereka telah membuka content baru
dengan sebuah click pada tombol. Namun, teknologi scripting tersebut hanya dapat
memodifikasi content yang terdapat pada sebuah halaman; teknologi tersebut juga
hanya dapat bekerja terhadap informasi yang telah dikirimkan pada client.
Bermacam solusi telah dibuat sebelumnya, yang bertujuan untuk mengubah
paradigma yang ada, namun beberapa diantaranya bersifat komersial (Microsoft
memiliki sebuah solusi yang hanya berfungsi dengan Internet Explorer), sulit untuk
diprogram, dan tidak dapat diakses dengan mudah.
Kemudian hadirlah AJAX sebagai penyelesaiannya.
14.2 AJAX
Menyerupai J2EE, AJAX adalah 2 hal yang digabungkan : merupakan sebuah
teknologi, sekaligus arsitektir pemrograman.
14.2.1 AJAX sebagai sebuah teknologi
AJAX adalah singkatan dari “Asynchronous JavaScript and XML”, yang dibuat dari
serangkaian teknologi dengan berbagai kemampuan : JavaScript, XML dan sebuah
method komunikasi asinkron antara client dan server.
3 teknologi yang saling berinteraksi : JavaScript menangkap isyarat, gerak serta
aksi. Sebagaimana pada situasi yang mungkin terjadi, JavaScript menggunakan jalur
komunikasi pada server (object JavaScript dengan nama XMLHttpRequest) untuk
memanggil method yang tersimpan pada server dan menggunakan XML sebagai
mekanisme pengiriman data. Jika JavaScript pada client telah menerima respon dari
server, maka JavaScript akan menggunakan kemampuan bawaannya untuk
memanipulasi struktur DOM halaman untuk menambahkan content yang didapat dari
server. Perubahan yang terjadi pada struktur DOM kemudian diterjemahkan oleh
browser pada client, sehingga meningkatkan efek interaktivitas pada user.
AJAX 1
2. J.E.N.I
14.2.2 AJAX sebagai sebuah Arsitektur
Pada awalnya AJAX dibuat sebagai sebuah rangkaian dari teknologi, namun
kemudian AJAX mengalami perkembangan. Sebagai contoh, adanya aplikasi web
yang tidak menggunakan XML dalam mentransfer data dari client ke server. Cara
tersebut dilakukan dengan menggunakan object XMLHttpRequest.
Berdasarkan realita di atas, beberapa pihak mendefinisikan sebagai paradigma baru
dalam pemrograman, disamping teknologi yang menyediakan fungsionalitas. Mari
kita bahas lebih mendalam tentang arsitektur AJAX.
Pengembang telah mengembangkan web programming sebelum hadirnya AJAX :
action dari user yang membutuhkan data dari server ditampilkan dalam halaman
yang digunakan, dimana data request dari user dikirimkan menuju server. Setelah
mengolah halaman tersebut, server menampilkan halaman baru bagi user yang
mengandung hasil dari proses sebelumnya.
Permasalah dari macam arsitektur tersebut adalah lambat dan cukup memakan
waktu, terutama bila dibandingkan dengan aplikasi desktop. Aplikasi desktop mampu
merespon cepat atas request dari user, aplikasi ini tidak memproses ulang masing –
masing komponen interface yang akan ditampilkan sebagai respon.
AJAX menggunakan arsitektur pemrograman tersebut pada aplikasi Web. Daripada
memberikan sebuah halaman penuh pada server dan mendapatkan pula sebuah
halaman penuh sebagai hasil operasi, AJAX mengijinkan kita untuk mengirimkan
request dalam ukuran yang lebih kecil pada server. Halaman yang terpakai hanya
termodifikasi untuk menampilkan hasil, bukan tergantikan dengan sebuah halaman
baru.
Faktor penting yang lain dari arsitektur AJAX adalah request dan response dijalankan
secara asinkron : AJAX tidak melarang user untuk melakukan proses lain pada
halaman yang dipakai. User dapat mengisi dan menggunakan area lain pada
halaman, sedangkan AJAX bekerja pada background.
Yang terakhir, AJAX mengijinkan user untuk berinteraksi dengan server sebagai
respon terhadap seluruh hal yang dilakukan oleh user. Arsitektur yang ada
sebelumnya hanya mengijinkan kita untuk berkomunikasi dengan server pada saat
user menekan tombol atau link yang akan mengirim data pada halaman. AJAX
memperbolehkan untuk me-request data baru dari server dalam bentuk mouseovers,
keypress dan even lain yang dikenali oleh JavaScript.
AJAX 2
3. J.E.N.I
14.2.3 Proses yang dilakukan oleh AJAX
Mari kita perhatikan contoh nyata yang menunjukkan bagaimana AJAX memperkaya
interaktivitas user dan bagaimana kita menggunakannya dalam aplikasi.
<html>
<head>
<title>Registration Form</title>
</head>
<body>
<H1> Welcome new user! </H1>
Please enter your information in the fields below
<form action="/submit">
Name : <input type="text" name="name"/> <br/>
Address : <input type="text" name="address"/> <br/>
City : <select name="city">
<option>Select One from List</option
<option value="Quezon City">Quezon City</option>
</select>
<br/>
Zip Code : <input type="text" name="zip" size="4"/> <br/>
<input type="submit" value="Submit"/>
</form>
</body>
</html>
AJAX 3
4. J.E.N.I
Contoh di atas adalah contoh sederhana dari form registrasi. Namun di sini terdapat
suatu permasalahan, tidak semua user mengetahui nomor zip code.
Kita gunakan contoh diatas sebagai titik awal perjalanan kita di AJAX. Akan
dikenalkan teknik penggunaan AJAX yang akan membuat halaman mengisikan
sendiri field zip code berdasarkan City yang dimasukkan oleh user.
14.2.4 Menyiapkan halaman form.
Pertama-tama, kita harus mempersiapkan HTML yang akan digunakan oleh user.
Jika kita akan menggunakan AJAX sebagai respon user input pada field City, perlu
ditambahkan sebuah event listener pada field City. Akan ditambahkan juga atribut id
pada elemen form – hal ini akan memudahkan pekerjaan kita.
Menggunakan event listener pada input field City merupakan hal yang mudah :
hanya perlu meregistrasikan fungsi JavaScript yang akan dipanggil pada events.
Dibawah ini adalah HTML form yang disempurnakan :
...
Address : <input type="text" name="address"/> <br/>
City : <select id=”city” name="city" onchange=”updateZip(this.value)”>
<option>Select One from List</option
<option value="Quezon City">Quezon City</option>
</select>
<br/>
Zip Code : <input id=”city” type="text" name="zip" size="4"/> <br/>
...
Dengan perubahan diatas, browser akan memanggil fungsi updateZip tiap kali user
memilih value dari daftar City.
14.2.5 Membuat sebuah instance object XMLHttpRequest
Sekarang saatnya menuliskan kode fungsi updateZip yang akan menangani
komunikasi terhadap server dan mengupdate value zip. Sebagaimana yang dibahas
sebelumnya, JavaScript mengijinkan server untuk berkomunikasi dengan
menggunakan sebuah object yang dikenal dengan XMLHttpRequest.
Permasalahan berikutnya adalah membuat object tersebut. Pembuatan object ini
tidak semudah menambahkan baris kode :
var xmlRequest = new XMLHttpRequest();
Kode diatas hanya dapat bekerja pada Mozilla, FireFox, Safari, Konqueror, NetScape
dan Opera, namun tidak pada Internet Explorer. IE adalah browser pertama yang
menggunakan fungsi semacam ini, namun dibuat dari proprietary object ActiveX
AJAX 4
5. J.E.N.I
(sebagai lawan dari JavaScript object). Terlebih lagi, method yang digunakan untuk
membuat XMLHttpRequest berbeda pada IE 5.0+ dibandingkan dengan versi-versi
sebelumnya.
Supaya dapat digunakan oleh browser-browser yang ada, gunakan kode berikut ini :
function createRequestObject() {
var xmlRequest;
try {
xmlRequest = new ActiveXObject(“Msxml2.XMLHTTP”);
} catch (error1) {
try {
xmlRequest = new ActiveXObject(“Microsoft.XMLHTTP”);
} catch (error2) {
if (typeof XMLHttpRequest != 'undefined') {
xmlRequest = new XMLHttpRequest();
}
}
}
return xmlRequest;
}
14.2.6 Menggunakan object XMLHttpRequest untuk
berkomunikasi dengan Server
Jika telah membuat instance object dari XMLHttpRequest, selanjutnya object
tersebut dapat digunakan untuk membuat fungsi updateZip. Pada dasarnya, kita
mengirimkan request kepada server berupa input City yang diberikan user. Sebagai
resource, kita dapat mengimplementasikan servlet.
<script type=”text/javascript”>
var xmlRequest;
function updateZip(cityValue) {
xmlRequest = createRequestObject();
xmlRequest.open(“GET”,
“http://ourServer/ourApplication/getZIPCode?city=” +
cityValue);
xmlRequest.send(null);
}
Terdapat beberapa cara untuk menampung respon dari server. Untuk menampung
respon sebagai String sederhana, gunakan atribut responseText. Untuk
menampungnya sebagai dokumen XML, gunakan atribut responseXML. Namun, value
dari atribut – atribut tersebut tidak dapat diakses secara langsung.
Ingat kembali akronim dari AJAX. A berarti Asynchronous yang berarti seluruh
method yang membuat request pada server tidak mengandung respon dari server
AJAX 5
6. J.E.N.I
langsung setelah eksekusi method. Respon dari server akan tiba dalam waktu yang
tidak dapat ditentukan.
14.2.7 Fungsi Callback
Untuk mengatasi situasi semacam ini, XMLHttpRequest mengijinkan kita untuk
menggunakan fungsi JavaScript sebagai Callback handler : callback adalah fungsi
yang akan digunakan oleh XMLHttpRequest setelah menerima respon dari server.
Dibawah ini adalah fungsi JavaScript yang digunakan untuk meregistrasi sebuah
fungsi dengan nama processServerData sebagai fungsi callback :
<script type=”text/javascript”>
var xmlRequest;
function updateZip(cityValue) {
xmlRequest = createRequestObject();
xmlRequest.onreadystatechange=processServerData;
xmlRequest.open(“GET”,
“http://ourServer/ourApplication/getZIPCode?city=” + cityValue);
xmlRequest.send(null);
}
Pada saat menuliskan kode fungsi callback, perhatikan bahwa event
onreadystatechange muncul tiap kali terdapat perubahan keadaan pada object
XMLHttpRequest. Pada contoh, kita hanya ingin menangani data setelah menerima
respon, maka dibuatlah statement kondisional untuk memeriksa apakah
XMLHttpRequest pada kondisi yang sesuai :
function processServerData() {
if (xmlRequest.readystate == 4) {
var data = xmlRequest.responseText;
document.getElementById(“zip”).value = data;
}
}
AJAX 6
7. J.E.N.I
Dibawah ini adalah kondisi – kondisi yang mungkin terjadi :
Value readystate Indikasi
0 Uninitialized. Method send() belum dipanggil.
1 Loading. Request sedang dikirim menuju server.
2 Loaded. Respon dari server telah diterima.
3 Interactive. Respon sedang diproses.
Completed. Respon telah diproses. Siap untuk
4
digunakan.
Hal lain yang perlu diperhatikan pada saat membuat fungsi callback adalah
kemungkinan error pada server. Kode yang kita gunakan diatas akan berjalan
sebagaimana fungsinya, diasumsikan jika tidak ada permasalahan dari sisi server,
namun kemungkinan kesalahan selalu akan terjadi.
XMLHttpRequest menyediakan cara untuk menentukan HTTP status code yang
diberikan oleh server. Jika kode menyatakan dalam kondisi 200, berarti request telah
berhasil diproses :
function processServerData() {
if (xmlRequest.readystate == 4) {
if (xmlRequest.status == 200) {
var data = xmlRequest.responseText;
document.getElementById(“zip”).value = data;
document.getElementById(“zipError”).innerHTML = “”;
} else {
document.getElementById(“zipError”).innerHTML = “Error in
retrieving ZIP code”;
}
}
}
AJAX 7
8. J.E.N.I
Potongan kode JavaScript diatas menggunakan cara yang sederhana namun sangat
bermanfaat untuk menampilkan pesan pada user : diasumsikan bahwa terdapat
elemen HTML (<div>) dengan id dari zipError. Proses yang sukses dilakukan dari sisi
server akan membiarkan elemen ini kosong. Sebaliknya, sebuah error pada server
akan menampilkan pesan kesalahan sesuai yang ditentukan pada kode.
Satu hal yang patut untuk diperhatikan, atribut innerHTML didukung oleh sebagian
besar, namun tidak seluruh browser. Alternatif lain yang lebih kompatibel bagi
browser adalah sebagai berikut :
function processServerData() {
if (xmlRequest.readystate == 4) {
var zipErrorDiv = document.getElementById(“zipError”);
if (xmlRequest.status == 200) {
var data = xmlRequest.responseText;
document.getElementById(“zip”).value = data;
zipErrorDiv.replaceChild(document.createTextNode(“”),
zipErrorDiv.childNodes[0]);
} else {
zipErrorDiv.replaceChild(document.createTextNode(“Error
in retrieving ZIP code”),
zipErrorDiv.childNodes[0]);
}
}
}
AJAX 8
9. J.E.N.I
Berikut ini adalah kode lengkap dari halaman yang telah dibuat :
<html>
<head>
<title>Registration Form</title>
<script type=”text/javascript”>
var xmlRequest;
function updateZip(cityValue) {
xmlRequest = createRequestObject();
xmlRequest.onreadystatechange=processServerData;
xmlRequest.open(“GET”,
“http://ourServer/ourApplication/getZIPCode?city=” + cityValue);
xmlRequest.send(null);
}
function processServerData() {
if (xmlRequest.readystate == 4) {
if (xmlRequest.status == 200) {
var data = xmlRequest.responseText;
document.getElementById(“zip”).value = data;
document.getElementById(“zipError”).innerHTML = “”;
} else {
document.getElementById(“zipError”).innerHTML = “Error in
retrieving ZIP code”;
}
}
}
function createRequestObject() {
var xmlRequest;
try {
xmlRequest = new ActiveXObject(“Msxml2.XMLHTTP”);
} catch (error1) {
try {
xmlRequest = new ActiveXObject(“Microsoft.XMLHTTP”);
} catch (error2) {
if (typeof XMLHttpRequest != 'undefined') {
xmlRequest = new XMLHttpRequest();
}
}
}
return xmlRequest;
}
</head>
<body>
<H1> Welcome new user! </H1>
Please enter your information in the fields below
<form action="/submit">
Name : <input type="text" name="name" id=”name”/> <br/>
Address : <input type="text" name="address" id=”address”/> <br/>
City : <select id=”city” name="city" onchange=”updateZip(this.value)”>
<option>Select One from List</option
<option value="Quezon City">Quezon City</option>
</select>
<br/>
Zip Code : <input type="text" name="zip" id=”zip” size="4"/> <div
id=”zipError”></div>
<br/>
<input type="submit" value="Submit"/>
</form>
</body>
</html>
AJAX 9
10. J.E.N.I
Berikut ini adalah contoh implementasi dari pemanggilan resource dari sisi server
oleh AJAX :
public ZIPRetrievalServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
String city = request.getParameter(“city”);
ZIPService service = new ZIPService();
String zipCode = service.getZipForCity(city);
response.setContentType(“text/html”);
PrintWriter out = response.getWriter();
out.println(zipCode);
out.close();
}
}
AJAX 10