PIBJ 5 Penyimpanan object sementara : bukan ke dalam file atau database, tetapi mengirimkan data yang sedang dimanipulasi ke bagian lain dalam aplikasi kita. Tempat penyimpanan object : □ Page □ HTTP servlet request □ Cookies □ Session □ Application Cara menyimpan dan mengambil data : Menyimpan public void setAttribute (String key, Object value) ex : ctx.setAttribute("biodata", bio) Mengambil public object getAttribute (String key) ex: ctx.getAttribute("biodata") Return type adalah type object, perlu di-casting sesuai dengan type object yang kita inginkan ex: (biodata) ctx.getAttribute("biodata") Menghapus removeAttribute (String key) ex: ctx.removeAttribute ("biodata") Editor yang dipergunakan : netbeans Untuk membuat project baru (berupa web application), langkah-langkah : 1. Buka netbeans IDE 2. Pada toolbar menu yang ada pilih file-new project, seperti pada gambar dibawah 3. Muncul window seperti dibawah 4. Seperti pada gambar diatas, pada kolom categories, pilih java web, sedang pada kolom projects pilih web application lalu klik tombol next 5. 6. 7. 8. Ketika kita membuat project baru (web) dengan netbeans, otomatis netbeans akan menciptakan direktori-direktori seperti berikut index,jsp merupakan file yang secara default akan dibuka pertama kali ketika web kita run. Coba 1. Request Context 1. Buat project baru pada netbeans 2. Pada index.jsp , buat form untuk menginput biodata, seperti listing dibawah 3. Buat class java yang berfungsi membuat object biodata yang berisi nama, alamat dan telepon. Jangan lupa constructor, setter dan getter nya 4. Listing untuk biodata.java 5. Buat sebuah servlet dengan nama apapun, asal url-pattern nya bernama “simpan” 6. 7. 8. Fungsi dari servlet ini adalah mengambil inputan dari file index.jsp, mengkonversinya menjadi object biodata kemudian menyimpan object tersebut ke dalam context. 9. Rubah listing code yang ada pada method processRequest menjadi seperti listing dibawah 10. Seperti keterangan pada comment no 4 pada gambar diatas, request pada servlet simpan ini akan diteruskan ke servlet view mempergunakan request dispatcher. Buat servlet baru (seperti pada langkah no 5-7) dengan url pattern=view yang fungsinya membaca object biodata. 11. Rubah listing code pada method processRequest menjadi seperti pada gambar dibawah 2. Application Context (Servlet Context) Langkah-langkah yang dilakukan pada intinya sama dengan request context, perbedaannya adalah tempat penyimpanan objectnya. Object pada application context disimpan pada context application, sekali disimpan, data tersebut dapat diakses oleh seluruh komponen aplikasi, tanpa memperhatikan request atau session user. Rubah listing code yang ada pada method processRequest pada servlet simpan menjadi seperti gambar dibawah Untuk servlet view 3. Cookies Karena aplikasi web bersifat stateless (server tidak akan mengingat apakah user telah membuat request sebelumnya). Agar server bisa mengingat state dari seorang user, maka diperlukan cookies atau session. Pada cookies, state diingat disisi client (browser), sedang session mengingat pada sisi server. Cookie hanya bisa menyimpan string, tidak dapat menyimpan object yang kompleks. Mengirimkan cookie Langkah-langkahnya : 1. Menciptakan cookie : Cookie c = new Cookie (“key”, “value”); // mendefinisikan cookie Ex: Cookie c = new Cookie("userID", "a1234"); 2. Mengeset umur dari cookie c.setMaxAge(60); // dalam detik 3. Menyimpan cookie ke dalam respon header mempergunakan response.addCookie. jika langkah ini terlewati maka tidak ada cookie yang dikirimkan Ex: response.addCookie(c); Membaca cookie dari client Langkah-langkahnya : 1. Memanggil request.getCookies yang mengembalikan array dari object cookies Ex : Cookie[] cookies = request.getCookies(); 2. Looping sepanjang array, panggil method getName pada array hingga mendapatkan nama cookie yang sesuai. Panggil method getValue jika ada nama yang sesuai Ex : if (cookies != null) { for(int i=0; i<cookies.length; i++) { Cookie cookie = cookies[i]; if (cookieName.equals(cookie.getName())) { doSomethingWith(cookie.getValue()); } } } Listing code untuk index.jsp Listing untuk method processRequest pada servlet simpan Listing untuk method processRequest pada servlet lihat 4. Session Data yang disimpan pada context session dapat diakses oleh semua bagian aplikasi untuk satu sesi user tersebut. Karena tergantung oleh sesi user, maka antar user satu dengan yang lain data yang diakses nilainya bisa jadi berbeda. Untuk mempergunakan session dalam servlet : 1. Mengakses object session terkait dengan request saat ini Ex : HttpSession session = request.getSession (“true”); 2. Menyimpan informasi kedalam session session.setAttribute(“nama session”,value); 3. Mengakses informasi terkait dengan sesi session.getAttribute(“nama session”);// return type nya adalah object, sehingga perlu di casting 4. Membuang/menghapus session session.removeAttribute(“nama session”); // untuk menghapus session dengan nama tertentu session.invalidate(); // untuk menghapus semua session pada web application session.logout();// melog-out user dari web server dan meng-invalidate semua session terkait dengan user tersebut, hanya bisa dijalankan dari server yang mendukung servlet 2.4 dan JSP 2.0. Listing code untuk index.jsp Listing untuk method processRequest pada servlet simpan Listing untuk method processRequest pada servlet simpan Tugas Buatkan web sederhana dengan uraian sebagai berikut : Halaman pertama adalah login (nama, password, submit) User login dengan nama admin, halaman berikutnya yang muncul adalah halaman untuk admin User login dengan nama user1, halaman berikutnya yang muncul adalah halaman untuk user1 User login dengan nama lain, halaman berikutnya yang muncul adalah halaman untuk guest Buatkan fungsi logout Setelah logout, user yang login tidak bisa membypass web yang anda buat (user tidak bisa langsung mengakses halaman ke dua tanpa proses login terlebih dahulu).