4. Pengembangan dan penggunaan komponen ASP:
1. Apa komponennya?
Keuntungan:
n mudah dihubungi dan menyimpan kode
Keamanan tinggi
Pemrosesan Transaksi NSupport, Union Multi-Komponen
NFast Running Speed
nuse tidak perlu memodifikasi halaman untuk meningkatkan dan memodifikasi komponen, jadi memiliki skalabilitas yang baik
L Kekurangan:
Kesulitan pengembangan dan debugging
2. Bagaimana cara mengembangkan menggunakan VB?
⑴. Buka VB >> NewProject >> ActiveX DLL
⑵. Ubah Nama Proyek ke Kursus
⑶. Ubah nama modul kelas menjadi conn_db
⑷. Project >> Referensi, Referensi ke Perpustakaan Jenis Layanan dan Library Microsoft Active Server Pages Library Objek.
⑸. Ubah kode kelas sebagai berikut:
dari www.knowsky.com
'Buat koneksi database dan output bidang database
Respons redup sebagai respons
Permintaan redup sebagai permintaan
Server redup sebagai server
Aplikasi DimapplicationAs
Sesi Dimsessiessionas
Private sub class_initialize ()
Dim ObjContext sebagai ObjectContext
Set ObjContext = getObjectContext ()
Setel respons = objcontext (respons)
Setel permintaan = objcontext (permintaan)
Set server = objcontext (server)
Setel Application = ObjContext (Aplikasi)
Set sesi = objcontext (sesi)
Akhir sub
Sub conn_db ()
Set Conn = CreateObject (ADODB.Connection)
conn.open course_dsn, course_user, course_password
Set RS = CreateObject (ADODB.Recordset)
rs.open pilih * dari user_info, conn, 1, 1
Jika Rs.RecordCount> 0 lalu
Untuk i = 1 hingga rs.recordcount
Response.write <br> & rs (user_name) & <br>
Jika rs.eof maka keluar untuk
rs.movenext
Berikutnya
Akhiri jika
rs.close
Setel RS = Tidak Ada
Conn.Close
Setel Conn = Tidak Ada
Akhir sub
⑹. Tambahkan Cutstr kelas baru
⑺. Ubah kode kelas sebagai berikut:
'Mencegat string
Fungsi cutstr (str, length)
Jika len (str)> panjang lalu
cutstr = kiri (str, panjang) & ...
Kalau tidak
cutstr = str
Akhiri jika
Fungsi akhir
⑻. File >> simpan
⑼. File >> buat course.dll
3. Komponen Terdaftar: MTS dan REGSVR32.EXE
Ada dua cara untuk mendaftarkan komponen: MTS dan menggunakan regsvr32.exe. MTS direkomendasikan karena memiliki keunggulan berikut:
n Saldo uninstall dinamis untuk meningkatkan kemampuan peningkatan komponen dan aplikasi berbasis komponen.
N berisi kemampuan untuk mempublikasikan dan mengirimkan komponen acara dan antrian, membuatnya lebih mudah untuk digabungkan dengan banyak komponen.
Untuk membuat komponen memiliki karakteristik MTS, sedikit perubahan harus dilakukan pada komponen. Saat mengembangkan di bawah NT dan 98, pustaka tipe server Microsoft Transaction harus direferensikan dalam proyek, dan ketika berkembang di bawah Windows 2000, pustaka tipe layanan COM+ harus direferensikan.
⑴. Registrasi REGSVR32:
REGSVR32.EXE adalah file yang dapat dieksekusi di bawah System32.
Gunakan baris perintah untuk masuk ke direktori di mana file komponen DLL berada, dan jalankan regsvr32 dll_file_name.
Jalankan Regedit, dan item kursus.conn_db dan kursus.cutstr akan ditemukan di bawah HKEY_Classes_root, menunjukkan bahwa pendaftaran komponen berhasil.
⑵. Daftar dengan MTS:
①. Mulai >> Program >> Alat Administratif >> Layanan Komponen
②. Perluas direktori ke keadaan berikut:
③. Ikuti Wizard, Langkah Berikutnya hingga Kotak Dialog berikut, klik Buat Aplikasi Kosong:
④. Di kotak dialog berikut, beri nama kursus aplikasi, dan default lainnya sampai selesai
⑤. Perluas aplikasi kursus, klik kanan, dan buat komponen baru
⑥. Ikuti petunjuknya dan lanjutkan. Saat kotak dialog berikut muncul, pilih Impor Komponen Terdaftar.
⑦. Pilih komponen yang kami kembangkan, langkah selanjutnya sampai selesai
⑧. Saat ini, Anda dapat menemukan bahwa ada dua komponen tambahan di bawah aplikasi kursus:
4. Memanggil komponen di ASP
asp_use_com.asp
<%
'ASP memanggil komponen com
Setel cutstr_obj = server.createObject (course.cutstr)
response.write cutstr_obj.cutstr (abcdefghijk, 3) & <br>
atur cutstr_obj = tidak ada
Set Conn_obj = Server.CreateObject (course.conn_db)
conn_obj.conn_db ()
atur conn_obj = tidak ada
%>
Memengaruhi:
ABC ...
ahyi
tuth
Itu berarti panggilan itu berhasil.
5. Menghapus komponen
⑴. Gunakan REGSVR32 untuk menghapus komponen menggunakan sakelar -u:
Catatan: Pertama -tama masukkan direktori di mana komponen DLL berada, dan kemudian gunakan REGSVR32 –U DLL_FILE_NAME untuk menghapus instalasi;
⑵. Menggunakan komponen terdaftar MTS, hapus aplikasi yang sesuai di layanan komponen, dan kemudian lakukan langkah 1 untuk sepenuhnya menghapus komponen.
6. Lokasi Penyimpanan Komponen DLL dan Pengaturan Izin
⑴. Kami hanya perlu menyalin file DLL yang dikompilasi, dan file lain tidak perlu diproses.
⑵. Letakkan DLL di luar situs web, seperti di direktori System32, untuk mencegah pengunduhan
⑶. Hak File DLL diatur ke Bacaan Sistem, dan Pengguna Internet melintasi folder/menjalankan file
⑷. DLL menghapus semua izin di IIS, seperti membaca, akses sukarela ke skrip, dll.
Setelah pemrosesan di atas, keamanan file DLL dapat dipastikan.
7. lainnya
Bagaimana cara menggunakan objek ASP dalam komponen untuk dengan mudah port kode ASP ke komponen com?
5. Konfigurasi optimal IIS
1. Tab Situs Web: IP, port, host virtual, koneksi, log
2. Filter isapi: tambahkan dukungan php dan jsp
3. Tab Konfigurasi Direktori Home: Saya adalah pengaturan izin (dikombinasikan dengan hak file), izin eksekusi, perlindungan aplikasi, pemetaan, buffering, jalur induk, informasi kesalahan
4. Tab Lain: Kesalahan Kustom, Header HTTP, Keamanan Direktori, Dokumentasi
5. Manfaat dan Kerugian Kompresi File
Vi
1. Kirim Email (JMail; MS SMTP)
Kirim Email Menggunakan Microsoft SMTP
⑴. Instal Layanan Microsoft SMTP
⑵. Menyiapkan Layanan Microsoft SMTP
⑶. Bagian Kode:
mail_smtp.asp
<%
Sub Sendmail (dari Who, Towho, Subjek, Tubuh)
redup mymail
set mymail = server.createObject (cdonts.newmail)
mymail.from = fromwho
mymail.to = towho
mymail.subject = subjek
mymail.body = tubuh
mymail.send
Setel mymail = tidak ada
akhir sub
%>
Subrutin ini menerima 4 parameter yang sesuai dengan item berikut.
LTH Alamat Email Pengirim
LTH Alamat Email dari Penerima Email
subjek lemail
konten lemail
Bagaimana menggunakan:
<%
dari Who =…
towho =…
Subjek =…
Tubuh =…
Jika towho <> lalu
Sendmail dari siapa, towho, subjek, tubuh
Akhiri jika
%>
Kirim Email Menggunakan Jmail
Jika Anda tertarik, Anda dapat mendiskusikannya dengan saya.
2. Unzip Zip Files (WScript.Shell dan Winzip Command Line; Java Components)
⑴. Instal Winzip 8.1 atau lebih
⑵. Instal Baris Perintah Winzip
⑶. Tetapkan hak file direktori kerja untuk dibaca, ditulis dan dimodifikasi oleh pengguna internet
⑷. Bagian Kode:
unzip_a_zipfile.asp
<%
'Mulai program dengan objek shell
'Zip_path adalah jalur ke file zip spesifik, seperti c: /test.zip
'Path adalah jalur untuk menyimpan file yang belum di -zip
'ond adalah parameter baris perintah
set wshshell = server.createObject (wscript.shell)
masalah = wshshell.run (wzunzip -ond & zip_path & & path, 1, true)
'Hapus file zip
Set MyFileObject = Server.CreateObject (Scripting.FilesystemObject)
myfileObject.deleteFile zip_path
'Menilai apakah berhasil melanjutkan operasi
Jika masalah = 0 lalu
'kesuksesan
...
kalau tidak
'gagal
...
akhiri jika
%>
3. Operasikan file XML
Waktu pertukaran terbatas, jadi mari kita bahas secara rinci jika Anda punya waktu
4. Unggahan file
⑴. Instal File Upload Component ASP FileUp (mendukung beberapa unggahan file, jenis file dan penilaian ukuran, perubahan nama file setelah mengunggah, dll.)
⑵. Restart IIS untuk membuat komponen unggah menjadi efektif
⑶. Tetapkan hak file direktori unggahan sehingga pengguna internet dapat membaca, menulis dan memodifikasi
⑷. Bagian Kode
unggah_file.htm
<Tipe Gaya = Teks/CSS>
<!-
.input {latar belakang-warna: #FFFFF; : Georgia;
A: Link {Color: #1B629C;
A: Hover {Color: #FF6600;
A: Dikunjungi {Text-Decoration: None}
->
</tyle>
<senter>
<form enctype = multipart/metode-data metode = post action = unggah_file.asp name = unggah>
<input type = hidden name = copyrightInfo value = http: //www.chinaasp.com>
Pilih file: <input type = file name = file1 class = input> <br> <br>
Pilih file: <input type = file name = file2 class = input> <br> <br>
</form>
<br> <br>
<a href = javascript: document.upload.submit ();> kirim </a>
</penter>
unggah_file.asp
<%
pada kesalahan resume berikutnya
'Tentukan fungsi yang memperoleh sufiks file
fungsi getFileExtName (nama file)
POS = instrrev (nama file,.)
Jika pos> 0 lalu
getFileExtName = mid (nama file, pos+1)
kalau tidak
getFileExtName =
akhiri jika
fungsi akhir
'Tentukan fungsi untuk mendapatkan nama file yang benar
fungsi getFileName (nama file)
lensa = len (nama file) -len (getFileExtName (nama file))-1
getFileName = kiri (nama file, lensa)
fungsi akhir
'Buat objek untuk komponen unggah file
Setel fileup = server.CreateObject (oudiasp.upload)
'Baca file yang diunggah oleh loop pengguna dan simpan di server
untuk setiap f di fileup.files
'Ketika pengguna tidak memilih file atau ukuran file melebihi 10m, kembalikan ke halaman tempat file dipilih untuk mengunggahnya
Jika f.filename = atau f.filesize> 10485500 maka response.redirect unggah_file.htm
'Dapatkan jalan yang disimpan
path = server.mappath (unggah_file.asp)
jalur = kiri (jalur, len (jalur) -15)
'Simpan file
F.Saveas Path & GetFileName (F.FileName) &. & GetFileExtName (F.FileName)
Berikutnya
response.redirect unggah_file.htm
%>
5. Operasi Drive/Direktori/File
Waktu pertukaran terbatas, jadi mari kita bahas secara rinci jika Anda punya waktu
6. Asp Writing and Debugging Experience: Cara memilih cookie dan sesi, jumlah cookie jebakan, pengaturan kedaluwarsa halaman dan penyangga, cara memastikan portabilitas, cara menangani 500 kesalahan di server internal ...
1. Cookie dan Pilihan Sesi:
⑴. Fitur umum
⑵. Perbedaannya:
①. Bagaimana bekerja
②. Kondisi kedaluwarsa
③. Dampak pada kinerja server
2. Cookies Number Trap:
IIS dapat menyimpan tidak lebih dari 20 cookie umum, dan kemudian mendefinisikan cookie baru.
Jawabannya adalah menggunakan cookie 2D.
contoh:
Uji batas jumlah cookie 1D:
test_cookies_1.asp
<%
untuk i = 1 hingga 50
response.cookies (cookies_ & i) = i
Berikutnya
%>
test_cookies_2.asp
<%
untuk i = 1 hingga 50
response.write request.cookies (cookies_ & i) & <br>
Berikutnya
%>
Memengaruhi:
Kunjungi pertama test_cookies_1.asp, lalu test_cookies_2.asp, apa yang Anda temukan?
test_cookies_3.asp
<%
untuk i = 1 hingga 50
response.cookies (cookies_ & i) = i
Berikutnya
untuk i = 1 hingga 50
response.write request.cookies (cookies_ & i) & <br>
Berikutnya
%>
Memengaruhi:
Tidak ada kue yang hilang! Lai Lai Lai
Uji batas jumlah cookie 2D:
test_cookies_4.asp
<%
untuk i = 1 hingga 301
response.cookies (tuht) (cookies_ & i) = i
Berikutnya
%>
test_cookies_5.asp
<%
untuk i = 1 hingga 301
response.write request.cookies (tuht) (cookies_ & i) & <br>
Berikutnya
%>
Memengaruhi:
Gunakan metode ini untuk menggunakan 201*20 = 4020 cookie! Lai Lai Lai
3. Pengaturan kedaluwarsa dan penyangga halaman
<%
'Kedaluwarsa dan buffering
response.buffer = true
response.cachecontrol = no chache
Response.ExpiresAbsolute = Now ()-1
response.expires = 0
%>
Anda juga dapat membuat pengaturan di HTML:
<meta content = no-cache http-equiv = pragma>
<meta http-equiv = kedaluwarsa konten = 0>
4. Pastikan transplantasi
⑴. Sertakan file
<!-#Sertakan file = top.asp->
⑵. Gunakan server.mappath untuk menemukan jalur file, hindari menggunakan jalur absolut secara langsung di halaman
⑶. Coba gunakan komponen untuk merangkum logika bisnis
5. Kesalahan Debugging Internal Server 500
⑴. Atur IIS untuk menampilkan pesan kesalahan tertentu
⑵. Debugging langkah demi langkah, dari atas ke bawah
⑶. Cetak nilai beberapa variabel penting dan periksa apakah itu diharapkan
⑷. Menilai kesalahan berdasarkan pengalaman
7. Mengoperasikan dokumen kata
⑴. Instal Office 2000, yang diperlukan untuk kata 2000
⑵. Atur Keamanan Internet di IE: Semua Kontrol ActiveX dan Plug-In diaktifkan
⑶. Tetapkan hak file direktori kerja untuk membaca/memodifikasi/menulis internet dan sistem
⑷. Tulis Template Course.dot
⑸. Kode Khusus:
opr_doc_inc.asp
<%
Response.write dim var_num & chr (13)
Response.write var_num = 2 & chr (13)
Response.Write Dim Varstrings (2) & Chr (13)
Response.Write Varstrings (0) = & Chr (34) & Drafter: & Chr (34) & Chr (13)
Response.write varstrings (1) = & chr (34) & tanggal: & chr (34) & chr (13)
Response.Write Dim VarValues (2) & Chr (13)
Response.write varvalues (0) = & chr (34) & drafter: tu haitao & chr (34) & chr (13)
Response.write varvalues (1) = & chr (34) & tanggal: & date () & chr (34) & chr (13)
%>
Sub sebagai gantinya (kata)
Atur myrange = word.activedocument.content
untuk i = 0 ke var_num - 1
Panggil myrange.find.execute (varstrings (i), false, false, false, false, false, false, false, false, false, false, varvalues (i), 2)
Berikutnya
Akhir sub
opr_doc.asp
<%
'Dapatkan jalan yang disimpan
path = server.mappath (opr_doc.asp)
path = kiri (jalur, len (jalur) -11)
FileNames = path & test.doc
W1 = Word.ActiveDocument.Saveas & Chr (32) & Chr (34) & FileNames & Chr (34)
w2 = wapp.documents.open & chr (32) & chr (34) & filenames & chr (34)
%>
<bahasa skrip = vbscript>
Pada kesalahan resume berikutnya
'Buat dokumen Word dengan nama file yang ditentukan
Kata redup
Set Word = CreateObject (Word.Application)
Jika err.number> 0 lalu
Terjadi kesalahan dalam peringatan, harap konfirmasi apakah ada file
kalau tidak
word.visible = false
word.documents.open <%response.write path%> course.dot
<%Response.write w1%>
word.documents.close
atur kata = tidak ada
akhiri jika
<!-#Sertakan file = opr_doc_inc.asp->
Redup wapp
Set Wapp = CreateObject (Word.Application)
Jika err.number> 0 lalu
Terjadi kesalahan dalam peringatan.
kalau tidak
wapp.visible = true
<%Response.write w2%>
hubungi sebagai gantinya (wapp)
atur wapp = tidak ada
akhiri jika
</script>
Efek: Periksa apakah file dokumen telah dihasilkan? Apa perbedaan antara file dokumen dan templat yang baru dibuat ini? Apakah drafter dan tanggalnya berubah? Simpan dan lihat isi file DOC yang baru dihasilkan.
Terlampir:
1. Semua kode di atas diuji dan diteruskan di bawah Windows 2000 Server SP2+IIS 5.0+MS SQL Server 2000+Office 2000
2. Konfigurasikan Basis Data: Kursus Nama Basis Data, User Course_User, Kata sandi course_password, driver ODBC adalah course_dsn, port adalah 2433, skrip yang menjelaskan struktur tabel ada di direktori bersama.
3. Silakan unduh perangkat lunak ASP Fileup, JMail, Winzip 8.1, dan Winzip Command Line sendiri.
4. File skrip database:
jika ada (pilih * dari dbo.sysObjects di mana id = object_id (n '[dbo]. [output_1]') dan objekProperty (id, n'isprocedure ') = 1)
Jatuhkan Prosedur [DBO]. [Output_1]
PERGI
jika ada (pilih * dari dbo.sysObjects di mana id = object_id (n '[dbo]. [return_1]') dan objekProperty (id, n'isprocedure ') = 1)
Jatuhkan Prosedur [DBO]. [Return_1]
PERGI
jika ada (pilih * dari dbo.sysObjects di mana id = object_id (n '[dbo]. [user_info_1]') dan objekProperty (id, n'isprocedure ') = 1)
Jatuhkan Prosedur [DBO]. [USER_INFO_1]
PERGI
Jika ada (pilih * dari dbo.sysObjects di mana id = object_id (n '[dbo]. [user_info_2]') dan objekProperty (id, n'isprocedure ') = 1)
lepas prosedur [dbo]. [user_info_2]
PERGI
Jika ada (pilih * dari dbo.sysObjects di mana id = object_id (n '[dbo]. [user_info_3]') dan objekProperty (id, n'isprocedure ') = 1)
Jatuhkan Prosedur [DBO]. [USER_INFO_3]
PERGI
jika ada (pilih * dari dbo.sysObjects di mana id = object_id (n '[dbo]. [user_info]') dan objekProperty (id, n'isuserable ') = 1)
Drop Table [dbo]. [user_info]
PERGI
Buat tabel [dbo]. [User_info] (
[id] [int] identitas (1, 1) tidak nol,
[user_name] [varchar] (40) rekan cina_prc_ci_as not null,
[Kata sandi] [varchar] (20) rekan cina_prc_ci_as bukan nol
) Pada [primer]
PERGI
Ubah tabel [dbo]. [User_info] dengan nocheck add
Batasan [pk_user_info] Keyclustered utama
(
[nama belakang]
) Pada [primer]
PERGI
Set Quoted_Identifier Off
PERGI
Atur Ansi_nulls Off
PERGI
Buat Prosedur [output_1]
@sid int output
SEBAGAI
set @sid = 2
PERGI
Set Quoted_Identifier Off
PERGI
Atur ansi_nulls
PERGI
Set Quoted_Identifier Off
PERGI
Atur Ansi_nulls Off
PERGI
Buat Prosedur [return_1]
(@user_name varchar (40),@kata sandi varchar (20))
SEBAGAI
Jika ada (pilih ID dari user_info di mana user_name =@user_name dan kata sandi =@kata sandi)
kembali 1
kalau tidak
kembali 0
PERGI
Set Quoted_Identifier Off
PERGI
Atur ansi_nulls
PERGI
Set Quoted_Identifier di
PERGI
Atur Ansi_nulls Off
PERGI
Buat Prosedur [user_info_1]
(@user_name varchar (40),@kata sandi varchar (20))
SEBAGAI
Pilih ID dari user_info di mana user_name =@user_name dan kata sandi =@kata sandi
PERGI
Set Quoted_Identifier Off
PERGI
Atur ansi_nulls
PERGI
Set Quoted_Identifier Off
PERGI
Atur Ansi_nulls Off
PERGI
Buat Prosedur [user_info_2]
(@user_name varchar (40),@kata sandi varchar (20))
SEBAGAI
Atur XACT_ABORT ON
Mulailah transaksi
Hapus dari user_info di mana user_name =@user_name dan kata sandi =@kata sandi
Melakukan transaksi
Atur Xact_abort
PERGI
Set Quoted_Identifier Off
PERGI
Atur ansi_nulls
PERGI
Set Quoted_Identifier Off
PERGI
Atur Ansi_nulls Off
PERGI
Buat Prosedur [user_info_3] sebagai
Pilih * dari user_info
PERGI
Set Quoted_Identifier Off
PERGI
Atur ansi_nulls
PERGI