Penulis: Cengkih Carneiro
Penerjemah: simmone
Pernyataan Hak Cipta: Situs web mana pun yang diberi wewenang oleh Matrix, saatmencetak ulang, pastikan untuk menunjukkan sumber asli dan informasi penulis artikel dan pernyataan ini dalam bentuk hyperlink
Alamat asli: http://www.javaworld.com/javaworld/jw-06-2005/jw-0620-dwr.html
Alamat berbahasa Mandarin: http://www.matrix.org.cn/resource/article/43/43926_DWR_AJAX.html
Kata kunci: javascript DWR :void(0);">AJAX
Ringkasan
Artikel ini menjelaskan penggunaan proyekopen source DWR (Direct Web Remoting) dan konsep javascript :void(0);">AJAX (Asynchronous JavaScript and XML ) untuk meningkatkan kegunaan aplikasi web. Penulis menunjukkan langkah demi langkah bagaimana DWR membuat javascript :void(0);">Aplikasi AJAX sederhana dan cepat. (1.600 kata; 20 Juni 2005)
javascript :void(0);">AJAX, atau Asynchronous JavaScript dan XML, menggambarkanteknologi pengembangan yang menggunakan campuran HTML (atau XHTML) dan cascading style sheet untuk mengekspresikan informasi guna membuat aplikasi Web interaktif; ModelObjek Dokumen (DOM ), JavaScript, secara dinamis menampilkan dan berinteraksi dengan informasi yang diungkapkan; dan, objek XMLHttpRequest bertukar dan memproses data secara asinkron dengan server Web.
Banyak contoh di Internet menunjukkan langkah-langkah yang diperlukan untuk berinteraksi dengan server menggunakan XMLHttpRequest di dalam file HTML. Saat menulis dan memelihara kode XMLHttpRequest secara manual, pengembang harus menghadapi banyak potensi masalah, terutama masalah seperti kompatibilitas implementasi DOM lintas-browser. Hal ini akan menyebabkan menghabiskan waktu berjam-jam untuk mengkode dan men-debug kode Javascript, yang jelas tidak ramah bagi pengembang.
Proyek DWR (Direct Web Remoting) adalah solusi sumber terbuka di bawah lisensi Apache untuk pengembang yang ingin menggunakan javascript :void(0);">AJAX dan XMLHttpRequest dengan cara yang sederhana. Ia memiliki seperangkat fungsi Javascript yangmenyederhanakan metode memanggil objek Java di server aplikasi dari halaman HTML. Ini memanipulasi berbagai jenis parameter sambil menjaga keterbacaan kode HTML.
DWR bukanlah penyisipan ke dalam desain, juga tidak memaksa objek untuk menggunakan struktur warisan apa pun. Ia bekerja dengan baik dengan aplikasi dalam kerangka servlet. Bagi pengembang yang tidak memiliki pengalaman pemrograman DHTML, DWR juga menyediakan perpustakaan JavaScript yang berisi tugas-tugas DHTML yang sering digunakan, seperti menyusun tabel, mengisi kotak drop-down pilihan dengan item, dan mengubah konten elemen HTML seperti <div> dan <span .>
Situs web DWR menyeluruh dan memiliki dokumentasi ekstensif, yang menjadi dasar artikel ini. Beberapa contoh diberikan untuk menunjukkan bagaimana DWR digunakan dan jenispekerjaan apa yang dapat diselesaikan dengan perpustakaannya.
Artikel ini memungkinkan pembaca untuk melihat bagaimana aplikasi web menggunakan DWR dibangun langkah demi langkah. Saya akan menunjukkan detail yang diperlukan untuk membuat contoh aplikasi sederhana ini, yang dapat diunduh dan diterapkan di lingkungan Anda untuk melihat cara kerja DWR.
CATATAN: Tidak sulit untuk menemukan informasi tentang javascript :void(0);">AJAX; ada beberapa artikel dan entri blog di web yang membahas topik ini, masing-masing mencoba menunjukkan dan mengomentari aspek konsep yang berbeda. Di bagian sumber daya Anda akan menemukan beberapa tautan menarik ke contoh dan artikel untuk mempelajari lebih lanjut tentang javascript :void(0);">AJAX.
Contoh Aplikasi <BR>Contoh aplikasi yang digunakan dalam artikel ini mensimulasikan mesin pencari sewa apartemen di Toronto. Pengguna dapat memilih serangkaian kriteria pencarian sebelum melakukan pencarian. Untuk meningkatkan interaktivitas, javascript :void(0);">AJAX digunakan dalam dua situasi berikut:
·Aplikasi memberi tahu pengguna berapa banyak hasil pencarian yang akan dikembalikan berdasarkan pilihannya. Nomor ini diperbarui secara real time - menggunakan javascript :void(0);">AJAX - ketika jumlah kamar tidur dan kamar mandi yang dipilih oleh pengguna, atau kisaran harga berubah. Ketika tidak ada atau terlalu banyak hasil pencarian yang sesuai dengan kriteria , pengguna tidak perlu mengklik tombol pencarian.
· Permintaan database dan pengambilan hasil dilakukan dengan javascript :void(0);">AJAX. Ketika pengguna menekan tombol tampilkan hasil, database melakukan pencarian. Dengan cara ini, aplikasi terlihat lebih responsif, dan keseluruhan halaman tidak perlu Overloaded untuk menampilkan hasil.
Basis Data <BR>Database yang kami gunakan adalah HSQL, yang merupakan mesin basis data Java SQL yang hanya menggunakan sedikit sumber daya dan dapat digabungkan dengan aplikasi Web tanpainstalasi dan konfigurasi. File SQL digunakan untuk membuat tabel dalam memori dan menambahkan beberapa catatan ketika konteks aplikasi web dimulai.
Aplikasi <BR> kelas Java berisi dua kelas utama yang disebut Apartemen dan ApartemenDAO. Kelas Apartment.java adalah kelas Java sederhana dengan properti dan metode pengambil/penyetel. ApartmentDAO.java adalah kelas akses data yang digunakan untuk menanyakan database dan mengembalikan informasi berdasarkan kriteria pencarian pengguna. Implementasi kelas ApartmentDAO sangatlah mudah; menggunakan panggilan koneksi database Java secara langsung untuk mendapatkan jumlah total apartemen dan daftar apartemen yang tersedia yang sesuai dengan permintaan pengguna.
Konfigurasi dan penggunaan DWR <BR>Menyiapkan penggunaan DWR sangatlah sederhana: salin file jar DWR ke direktori WEB-INF/lib aplikasi web, tambahkan deklarasi servlet di web.xml, dan buat file konfigurasi DWR. File jar terpisah diperlukan untuk distribusi DWR. Anda harus menambahkan servlet DWR ke bagian deskriptor penerapan di WEB-INF/web.xml aplikasi Anda.
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<nama-tampilan>Servlet DWR</nama-tampilan>
<deskripsi>Servlet Jarak Jauh Web Langsung</description>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<nama-param>debug</nama-param>
<nilai-param>benar</nilai-param>
</init-param>
</servlet>
<pemetaan-servlet>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</pemetaan-servlet>
Langkah opsional adalah menyetel DWR ke mode debug - seperti pada contoh di atas - dengan menyetel parameter debug ke true di bagian deskripsi servlet. Saat DWR dalam mode debug, Anda dapat melihat semua objek Java yang dapat diakses dari halaman HTML. Halaman web yang berisi daftar objek yang tersedia akan muncul di URL /WEBAPP/dwr, yang menampilkan metode publik dari objek tersebut. Metode yang tercantum dapat dipanggil dari halaman tersebut, sehingga memungkinkan Anda, untuk pertama kalinya, menjalankan metode pada objek di server. Gambar berikut menunjukkan tampilan halaman debug:
halaman debug
Sekarang Anda harus memberi tahu DWR objek apa yang akan menerima permintaan melalui objek XMLHttpRequest. Tugas ini diselesaikan dengan file konfigurasi bernama dwr.xml. Dalam file konfigurasi, Anda menentukan objek yang DWR izinkan Anda panggil dari halaman web. Secara desain, DWR mengizinkan akses ke semua metode publik dari kelas yang dipublikasikan, namun dalam kasus kami, kami hanya mengizinkan akses ke beberapa metode. Berikut adalah file konfigurasi untuk contoh kita:
<dwr>
<izinkan>
<konversi konverter="bean" match="dwr.sample.Apartment"/>
<buat pencipta="baru" javascript="ApartmentDAO" class="dwr.sample.ApartmentDAO">
<sertakan metode="findApartments"/>
<sertakan metode="countApartments"/>
</buat>
</izinkan>
</dwr>
File di atas mencapai kedua tujuan dalam contoh kita. Pertama, tag <convert> memberitahu DWR untuk mengubah tipe objek dwr.sample.Apartment menjadi array asosiatif, karena, untuk alasan keamanan, DWR tidak mengonversi kacang biasa secara default. Kedua, tag <create> memungkinkan DWR mengekspos kelas dwr.sample.ApartmentDAO untuk panggilan JavaScript; file JavaScript yang kami gunakan di halaman ditentukan oleh atribut javascript. Kita harus memperhatikan tag <include>, yang menentukan metode kelas dwr.sample.ApartmentDAO mana yang tersedia.
Setelah kode HTML/JSP <BR> dikonfigurasi, Anda dapat memulai aplikasi Web Anda. Saat ini, DWR akan siap memanggil metode yang diperlukan dari halaman sisi server HTML atau Java (JSP). Anda membuat file JavaScript. Di file search.jsp, kita harus menambahkan antarmuka JavaScript yang disediakan oleh DWR, serta mesin DWR, dan menambahkan tiga baris berikut kekode kita :
<script src='dwr/interface/ApartmentDAO.js'></ skrip>
<skrip src='dwr/engine.js'></skrip>
<script src='dwr/util.js'></script>
Kami memperhatikan bahwa ketika pengguna mengubah kriteria pencarian, ini adalah penerapan javascript pertama :void(0);">AJAX dalam program contoh; saat dia dilihat, jumlah apartemen yang tersedia diperbarui ketika kriteria berubah. Saya membuat dua fungsi JavaScript: Fungsi ApartmentDAO.countApartments() adalah bagian yang paling menarik adalah parameter pertama, fungsi loadTotal(), yang menentukan metode JavaScript itu DWR akan memanggil ketika menerima respons dari server. loadTotal kemudian dipanggil untuk menampilkan hasilnya di <div> halaman HTML. Fungsi JavaScript yang digunakan dalam skenario interaktif:
function updateTotal() {
$("resultTable").style.display = 'tidak ada';
var kamar tidur = document.getElementById("kamar tidur").value;
var kamar mandi = document.getElementById("kamar mandi").nilai;
var harga = document.getElementById("harga").nilai;
ApartmentDAO.countApartments(loadTotal, kamar tidur, kamar mandi, harga);
}
fungsi bebanTotal(data) {
document.getElementById("totalRecords").innerHTML = data;
}
Tentunya pengguna ingin melihat listing apartemen yang sesuai dengan kriteria pencariannya. Kemudian, ketika pengguna puas dengan kriteria pencariannya dan totalnya valid, dia menekan tombol yang menampilkan hasilnya, yang memanggil metode JavaScript updateResults():
fungsi pembaruanHasil() {
DWRUtil.removeAllRows("apartmentsbody");
var kamar tidur = document.getElementById("kamar tidur").value;
var kamar mandi = document.getElementById("kamar mandi").nilai;
var harga = document.getElementById("harga").nilai;
ApartmentDAO.findApartments(isiMeja, kamar tidur, kamar mandi, harga);
$("resultTable").style.display = '';
}
fungsi mengisiTabel(apartemen) {
DWRUtil.addRows("apartmentsbody", apartemen, [ getId, getAddress, getBedrooms, getBathrooms, getPrice ]);
}
Metode updateResults() menghapus bidang tabel yang menyimpan hasil pencarian, memperoleh parameter yang diperlukan dari antarmuka pengguna, dan meneruskan parameter ini ke objek ApartmentDAO yang dibuat oleh DWR. Kemudian query database akan dieksekusi dan fillTable() akan dipanggil, yang mem-parsing objek yang dikembalikan oleh DWR (apartemen) dan menampilkannya ke dalam halaman (badan apartemen).
Faktor Keamanan <BR>Untuk menjaga agar contoh tetap singkat, kelas ApartmentDAO dibuat sesederhana mungkin, namun kelas seperti itu biasanya memiliki serangkaian metode untuk memanipulasi data, seperti insert(), update() dan delete(). DWR memaparkan semua metode publik untuk dipanggil oleh semua halaman HTML. Demi alasan keamanan, tidak bijaksana mengekspos lapisan akses data Anda seperti ini. Pengembang dapat membuat fasad yang memusatkan komunikasi antara semua fungsi JavaScript dan komponen bisnis yang mendasarinya, sehingga membatasi paparan fungsionalitas yang berlebihan.
Kesimpulan <BR>Artikel ini hanyalah permulaan bagi Anda untuk menggunakan javascript yang didukung DWR :void(0);">AJAX dalam proyek Anda. DWR memungkinkan Anda untuk fokus pada cara meningkatkan model interaksi aplikasi Anda. , menghilangkan beban menulis dan men-debug kode JavaScript. Tantangan paling menarik dengan javascript :void(0);">AJAX adalah menentukan di mana dan bagaimana meningkatkan kegunaan. DWR bertanggung jawab untuk mengoperasikan komunikasi antara halaman Web dan objek Java Anda, sehingga membantu Anda untuk fokus sepenuhnya pada cara membuat antarmuka pengguna aplikasi Anda lebih ramah.
Saya mengucapkan terima kasih kepada Mircea Oancea dan Marcos Pereira yang telah membaca artikel ini dan memberikan masukan yang sangat berharga.
Sumber daya ·javaworld.com:javaworld.com
·Komunitas pengembang Matrix-Java: http://www.matrix.org.cn/
·onjava.com:onjava.com
·Unduh semua kode sumber program contoh: http://www.javaworld.com/javaworld/jw-06-2005/dwr/jw-0620-dwr.war
·DWR: http://www.getahead.ltd.uk/dwr/index.html
·HSQL: http://hsqldb.sourceforge.net/
·javascript :void(0);">Definisi AJAX: http://en.wikipedia.org/wiki/javascript :void(0);">AJAX
· "javascript :void(0);">AJAX: Jalur Baru Menuju Aplikasi Web": Jesse James Garrett (Adaptive Path, 2005.2): http://www.adaptivepath.com/publications/essays/archives/000385.php
· “Antarmuka web yang sangat dinamis” Drew McLellan (xml.com, 2005.2): http://www.xml.com/pub/a/2005/02/09/xml-http-request.html
·XMLHttpRequest & javascript :void(0);">Contoh kerja AJAX: http://www.fiftyfoureleven.com/resources/programming/xmlhttprequest/examples
· “Praktik XMLHttpRequest yang Dapat Digunakan” Thomas Baekdal (Baekdal.com, 2005.3): http://www.baekdal.com/articles/Usability/usable-XMLHttpRequest/
·"Pedoman Penggunaan XMLHttpRequest" Thomas Baekdal (Baekdal.com, 2005.2): http://www.baekdal.com/articles/Usability/XMLHttpRequest-guidelines/