Seri Kuliah ASP (8) Menggunakan Koleksi
Penulis:Eve Cole
Waktu Pembaruan:2009-05-30 19:59:11
Sebagian besar objek bawaan ASP mendukung koleksi. Koleksi adalah tempat penyimpanan string, angka, objek, dan nilai lainnya. Koleksi sangat mirip dengan array, kecuali bahwa koleksi secara otomatis diperluas dan dicari ketika item disimpan atau diambil. Berbeda dengan array, ketika suatu koleksi diubah, posisi item akan berpindah. Item dapat diakses berdasarkan nama, indeks, atau dengan menelusuri semua item dalam koleksi.
Mengakses item berdasarkan nama dan indeks Anda dapat mengakses item tertentu dalam koleksi dengan menggunakan nama item. Misalnya, koleksi Contents menampung semua variabel yang disimpan dalam objek Session. Juga memiliki semua objek yang dibuat oleh Server.CreateObject. Asumsikan bahwa informasi pengguna berikut disimpan di objek Sesi:
<%
Sesi.Isi("Nama Depan") = "Sam"
Sesi.Isi("Nama Belakang") = "Woo"
Sesi.Isi("Usia") = 29
%>
Item dapat diakses menggunakan nama yang terkait dengan item tersebut saat disimpan dalam koleksi. Misalnya, ekspresi berikut mengembalikan string "Sam":
<%= Sesi.Isi("Nama Depan") %>
Item juga dapat diakses dengan menggunakan indeks atau nomor yang terkait dengan item tersebut. Misalnya, ekspresi berikut mengambil informasi yang disimpan di slot penyimpanan kedua objek Sesi dan mengembalikan "Woo":
<%= Sesi.Isi(2) %>
Koleksi ASP diberi nomor mulai dari 1. Ketika item ditambahkan atau dihapus dari koleksi, indeks yang terkait dengan item tersebut akan berubah. Jadi tidak dapat diasumsikan bahwa indeks item tersebut tetap tidak berubah. Seperti yang akan dijelaskan pada topik berikut, akses menggunakan indeks umumnya digunakan untuk melintasi koleksi, atau untuk mengakses item dalam koleksi read-only.
Proyek diakses dengan menggunakan nama singkatannya. ASP mencari koleksi yang terkait dengan objek dalam urutan tertentu. Jika item dengan nama tertentu hanya muncul satu kali dalam kumpulan objek, Anda dapat menghilangkan nama koleksi tersebut:
<%= Sesi("Nama Depan") %>
Saat mengakses item yang disimpan dalam objek Aplikasi atau Sesi, biasanya aman untuk menghilangkan nama koleksi. Namun, untuk objek Permintaan, lebih baik menentukan nama koleksinya karena kemungkinan besar koleksi tersebut berisi nama duplikat.
Menjelajahi Koleksi Melintasi semua item koleksi untuk mempelajari tentang item yang disimpan dalam koleksi atau untuk memodifikasi item. Saat melintasi suatu koleksi, nama koleksi harus diberikan. Misalnya, Anda dapat menggunakan pernyataan For...Each di VBScript untuk mengakses item yang disimpan dalam objek Session:
<%
'Deklarasikan variabel penghitung.
Barang redup
'Untuk setiap item dalam koleksi, tampilkan nilainya.
Untuk Setiap Item dalam Sesi.Isi
Respon.Tulis Sesi.Isi(Item) & "<BR>"
Berikutnya
%>
Anda dapat menggunakan pernyataan For...Next di VBScript untuk melakukan iterasi melalui koleksi. Misalnya, untuk membuat daftar tiga item yang disimpan dalam Sesi pada contoh di atas, Anda akan menggunakan pernyataan berikut.
<%
'Deklarasikan variabel penghitung.
Barang redup
'Ulangi loop sampai nilai counter sama dengan 3.
Untuk Item = 1 hingga 3
Respon.Tulis Sesi.Isi(Item) & "<BR>"
Berikutnya
%>
Karena jumlah item yang disimpan dalam suatu koleksi umumnya tidak diketahui, ASP mendukung properti Count dari koleksi, yang mengembalikan jumlah item dalam koleksi. Anda dapat menggunakan properti Count untuk menentukan nilai akhir penghitung.
<%
'Deklarasikan variabel penghitung.
Barang redup
'Ulangi putaran ini sampai penghitungnya sama dengan jumlah item
'dalam koleksi.
Untuk Item = 1 hingga Session.Contents.Count
Respon.Tulis Sesi.Isi(Item) & "<BR>"
Berikutnya
%>
Anda dapat menggunakan pernyataan for dalam skrip untuk mengulang koleksi. Saat menggunakan properti Hitungan dalam pernyataan JScript for, untuk mencapai hasil yang lebih baik, Anda harus menetapkan nilai Hitungan ke variabel lokal dan menggunakan variabel tersebut untuk menetapkan nilai penghitung akhir. Dengan cara ini, mesin skrip tidak perlu mencari nilai Count setiap kali melakukan perulangan. Contoh berikut menunjukkan teknik ini:
<%
var item, angka;
numitems = Sesi.Isi.Hitungan;
untuk (item = 1; item <= angka; item++) {
Respons.Tulis(Sesi.Isi(item) + "<BR>")
}
%>
Microsoft JScript 3.0 memperkenalkan objek Enumerator. Anda dapat menggunakan objek ini untuk melintasi koleksi ASP. Metode atEnd menunjukkan apakah masih ada item dalam koleksi. Metode moveNext berpindah ke item berikutnya dalam koleksi.
<%
// Membuat objek Enumerator
var mycoll = enumerator baru(Sesi.Isi);
//Iterasi seluruh koleksi dan tampilkan setiap item
while (!mycoll.atEnd()) {
var x = mycoll.item();
Response.Write(Sesi.Isi(x) + "<BR>");
mycoll.moveNext();
}
%>
Skrip yang melakukan iterasi melalui kumpulan subkunci menyematkan nilai yang relevan dalam satu cookie untuk mengurangi jumlah cookie yang dikirim antara browser dan server Web. Oleh karena itu kumpulan Cookies dari objek Permintaan dan Respons dapat memiliki banyak nilai dalam satu item. Sub-item atau sub-kata kunci ini dapat diakses satu per satu. Hanya koleksi Request.Cookies dan Response.Cookies yang mendukung subkunci (Subkunci). Request.Cookies hanya mendukung operasi baca; Response.Cookies hanya mendukung operasi tulis.
Anda dapat menghitung semua cookie di koleksi Request.Cookie dan semua subkunci (Subkunci) di Cookie. Namun, mengulangi subkunci pada cookie tanpa subkunci tidak akan membuahkan hasil. Anda dapat menghindari hal ini dengan menggunakan sintaks .HasKeys untuk terlebih dahulu memeriksa apakah cookie berisi subkunci. Contoh di bawah menunjukkan teknik ini.
<%
'Deklarasikan variabel penghitung
Redupkan Cookie, Subkunci
'Tampilkan seluruh koleksi cookie.
Untuk Setiap Cookie di Request.Cookies
Respon.Tulis Cookie & "<BR>"
Jika Meminta.Cookies(Cookie).HasKeys Lalu
'Tampilkan subkunci
Untuk Setiap Subkunci dalam Permintaan.Cookies(Cookie)
Respon.Tulis Subkunci & "=" & Permintaan.Cookie(Cookie)(Subkunci) & "<BR>"
Berikutnya
Kalau tidak
Response.Tulis "Tidak ada subkunci dalam cookie ini <BR>"
Akhiri Jika
Berikutnya
%>
Ulangi kumpulan objek
Koleksi Sesi dan Aplikasi dapat menampung variabel kuantitatif atau contoh objek. Koleksi Contents menyimpan variabel kuantitas dan instance objek yang dihasilkan dengan memanggil Server.CreateObject. Koleksi StaticObjects menyimpan objek yang dibuat menggunakan elemen HTML <OBJECT> di file Global.asa.
Saat melakukan iterasi pada koleksi yang berisi objek, Anda dapat mengakses pengidentifikasi objek atau metode dan properti objek. Misalnya, aplikasi Anda menggunakan sejumlah objek untuk membuat akun pengguna, dan setiap objek memiliki metode inisialisasi. Anda dapat mengulangi koleksi StaticObjects untuk memanggil setiap metode inisialisasi:
<%
Untuk Setiap Objek di Session.StaticObjects
Sesi.StaticObjects(Objek).InitializeUser
Berikutnya
%>
Apa perbedaan koleksi ASP?
Meskipun koleksi ASP yang dibahas dalam topik ini sangat mirip dengan objek Koleksi Visual Basic, terdapat beberapa perbedaan. Koleksi ASP mendukung properti Hitung dan metode Item, namun tidak mendukung metode Tambah dan Hapus.