4. Entwicklung und Verwendung von ASP -Komponenten:
1. Was sind die Komponenten?
Vorteile:
N ist leicht anzurufen und spart Code
Hohe Sicherheit
NSupport-Transaktionsverarbeitung, Mehrkomponentenvereinigung
Nast Running Speed
Nuse muss die Seite nicht ändern, um Komponenten zu aktualisieren und zu ändern, sodass sie eine gute Skalierbarkeit aufweist
l Nachteile:
Entwicklungs- und Debugging -Schwierigkeiten
2. Wie entwickle ich mit VB?
⑴. Öffnen Sie VB >> NewProject >> ActiveX DLL
⑵. Ändern Sie den Projektnamen zum Kurs
⑶. Ändern Sie den Namen des Klassenmoduls, um conn_db zu sein
⑷. Projekt >> Referenzen, Verweise auf die COM+ Service -Typ -Bibliothek und die Objektbibliothek von Microsoft Active Server Pages.
⑸. Ändern Sie den Klassencode wie folgt:
von www.knowsky.com
'Erstellen Sie eine Datenbankverbindung und geben Sie das Datenbankfeld aus
Dim -Antwort als Antwort
Dim Anfrage als Anfrage
Dim Server als Server
Dimapplicationas -Anwendung
DimSessionas -Sitzung
Private sub class_initialize ()
Dim Objcontext als ObjectContext
Setzen Sie objcontext = getObjectContext ()
Setzen Sie Antwort = objcontext (Antwort)
Setzen Sie Request = objcontext (Anfrage)
Setze Server = objcontext (Server)
Setzen Sie application = objcontext (application)
SET Session = ObjContext (Sitzung)
Ende sub
Sub conn_db ()
Setzen Sie conn = createObject (adodb.Connection)
conn.open curse_dsn, curse_user, curse_password
Setzen Sie rs = createObject (adodb.recordset)
rs.open auswählen * von user_info, conn, 1, 1
Wenn Rs.RecordCount> 0 dann
Für i = 1 bis rscordcount
Response.write <br> & rs (user_name) & <br>
Wenn rs.eof dann beenden für
Rs.Movenext
Nächste
Ende wenn
rs.close
Setzen Sie Rs = nichts
conn.close
Setzen Sie Conn = nichts
Ende sub
⑹. Fügen Sie einen neuen Klassen -Cutstr hinzu
⑺. Ändern Sie den Klassencode wie folgt:
'Die Zeichenfolge abfangen
Funktion Cutstr (STR, Länge)
Wenn Len (str)> Länge dann
cutstr = links (str, Länge) & ...
Anders
cutstr = str
Ende wenn
Endfunktion
⑻. Datei >> Speichern
⑼. Datei >> mach cours.dll
3. Registrierte Komponenten: MTS und Regsvr32.exe
Es gibt zwei Möglichkeiten, Komponenten zu registrieren: MTS und Verwendung von regsvr32.exe. MTS wird empfohlen, weil es die folgenden Vorteile hat:
N Dynamic Deinstallation Balance zur Verbesserung der Aufrüstung von Komponenten und Komponentenbasis.
N enthält die Möglichkeit, Ereignis- und Warteschlangenkomponenten zu veröffentlichen und einzureichen, was es einfacher macht, mit mehreren Komponenten zu kombinieren.
Damit die Komponente die MTS -Eigenschaften aufweist, muss die Komponente eine kleine Änderung vorgenommen werden. Bei der Entwicklung unter NT und 98 muss die Bibliothek von Microsoft Transaction Servertyp im Projekt referenziert werden, und bei der Entwicklung unter Windows 2000 muss die COM+ -Diensttyp -Bibliothek verwiesen werden.
⑴. Regsvr32 Registrierung:
Regsvr32.exe ist eine ausführbare Datei unter System32.
Verwenden Sie die Befehlszeile, um das Verzeichnis einzugeben, in dem sich die Komponenten -DLL -Datei befindet, und führen Sie RegSVR32 DLL_FILE_NAME aus.
Rennen Sie Regedit und den Kurs.Conn_DB und COURS.Cutstr -Elemente finden Sie unter hkey_classes_root, was darauf hinweist, dass die Komponentenregistrierung erfolgreich ist.
⑵. Registrieren Sie sich bei MTS:
①. Start >> Programme >> Verwaltungswerkzeuge >> Komponentendienste
②. Erweitern Sie das Verzeichnis in den folgenden Zustand:
③. Folgen Sie dem Assistenten, dem nächsten Schritt bis zum folgenden Dialogfeld. Klicken Sie auf eine leere Anwendung erstellen:
④. Benennen Sie im folgenden Dialogfeld den Anwendungskurs und die anderen Standardeinstellungen, bis er fertig ist
⑤. Erweitern Sie die Kursanwendung, klicken Sie mit der rechten Maustaste und erstellen Sie eine neue Komponente
⑥. Befolgen Sie die Eingabeaufforderungen und fahren Sie fort.
⑦. Wählen Sie die Komponenten aus, die wir entwickelt haben, im nächsten Schritt, bis sie fertig sind
⑧. Zu diesem Zeitpunkt können Sie feststellen, dass unter der Kursanwendung zwei zusätzliche Komponenten vorhanden sind:
4. Aufrufen von Komponenten in ASP
ASP_USE_COM.asp
<%
'ASP ruft COM -Komponente auf
setze cutstr_obj = server.createObject (cours.cutstr)
response.write cutstr_obj.cutstr (abcdefghijk, 3) & <br>
Setzen Sie cutstr_obj = nichts
setzen
conn_obj.conn_db ()
Setzen Sie conn_obj = nichts
%>
Wirkung:
ABC...
Ahyi
Tuth
Es bedeutet, dass der Anruf erfolgreich ist.
5. Komponenten deinstallieren
⑴.
HINWEIS: Geben Sie zuerst das Verzeichnis ein, in dem sich die Komponente DLL befindet, und verwenden Sie REGSVR32 –U DLL_FILE_NAME, um IIS einfach nach der Deinstallation neu zu starten.
⑵. Löschen Sie mithilfe von MTS -registrierten Komponenten zuerst die entsprechende Anwendung im Komponentendienst und führen Sie dann Schritt 1 aus, um die Komponenten vollständig zu deinstallieren.
6. Speicherort und Berechtigungseinstellungen der DLL -Komponenten und Berechtigungseinstellungen
⑴. Wir müssen nur die kompilierte DLL -Datei kopieren, und andere Dateien müssen nicht verarbeitet werden.
⑵. Stellen Sie DLL außerhalb der Website, z. B. im Verzeichnis System32, außerhalb der Website, um das Herunterladen zu verhindern
⑶. Die Dateirechte von DLL sind auf das Lesen des Systems eingestellt, und Internetnutzer durchqueren Ordner/Ausführen von Dateien
⑷. DLL entfernt alle Berechtigungen in IIS, z. B. Lesen, freiwilligen Zugriff auf Skripte usw.
Nach der obigen Verarbeitung kann die Sicherheit der DLL -Datei gewährleistet werden.
7. andere
Wie verwendet ich das ASP -Objekt in einer Komponente, um ASP -Code bequem in COM -Komponente zu portieren?
5. iis optimale Konfiguration
1. Registerkarte Website: IP, Port, virtueller Host, Verbindung, Protokoll
2. ISAPI -Filter: Fügen Sie PHP- und JSP -Unterstützung hinzu
3. Registerkarte "Home Directory Configuration
4. Weitere Registerkarten: benutzerdefinierte Fehler, HTTP -Header, Verzeichnissicherheit, Dokumentation
5. Die Vorteile und Nachteile der Dateikomprimierung
Vi
1. E -Mail senden (JMAIL; MS SMTP)
Senden Sie E -Mails mit Microsoft SMTP
⑴. Installieren Sie den Microsoft SMTP -Dienst
⑵. Einrichten des Microsoft SMTP -Dienstes
⑶. Codeabschnitt:
mail_smtp.asp
<%
Sub sendmail (from who, tOWHO, Subjekt, Körper)
Dim Mymail
Setzen Sie myMail = server.createObject (CDONTs.Newmail)
mymail.from = from who
mymail.to = toWho
myMail.subject = Subjekt
mymail.body = Körper
mymail.send
mymail = nichts setzen
Ende sub
%>
Diese Unterroutine akzeptiert 4 Parameter, die den folgenden Elementen entsprechen.
LDie E -Mail -Adresse des Absenders
LDie E -Mail -Adresse des E -Mail -Empfängers
Lemail -Subjekt
Lemail -Inhalt
Wie man verwendet:
<%
von who =…
Towho =…
Betreff =…
Körper =…
Wenn Towho <> dann
Sendmail von wem, towo, Subjekt, Körper
Ende wenn
%>
Senden Sie E -Mail mit JMAIL
Wenn Sie interessiert sind, können Sie es mit mir besprechen.
2. ZIP -Dateien unzip (wscript.shell und Winzip -Befehlszeile; Java -Komponenten)
⑴. Installieren Sie Winzip 8.1 oder höher
⑵. Installieren Sie die Befehlszeile der Winzip
⑶. Legen Sie die Dateirechte des Arbeitsverzeichnisses fest, das von Internetnutzern gelesen, geschrieben und geändert werden soll
⑷. Codeabschnitt:
UNZIP_A_ZIPFILE.asp
<%
'Starten Sie das Programm mit dem Shell -Objekt
'Zip_Path ist der Pfad zur spezifischen ZIP -Datei, wie z. B. c: /test.zip
'Pfad ist der Weg zum Speichern der unzippierten Datei
'OND ist ein Befehlszeilenparameter
Setzen Sie wshshell = server.createObject (wscript.shell)
Ausgabe = wshshell.run (Wzunzip -ond & zip_path & & path, 1, true)
'Löschen Sie die ZIP -Datei
Setzen Sie myFileObject = server.createObject (scripting.FilesystemObject)
myFileObject.deleteFile Zip_Path
»Beurteilen Sie, ob es erfolgreich ist, die Operation fortzusetzen
Wenn Ausgabe = 0 dann
'Erfolg
...
anders
'scheitern
...
Ende wenn
%>
3. Betreiben Sie die XML -Datei
Die Austauschzeit ist begrenzt. Besprechen wir sie also ausführlich, wenn Sie Zeit haben
4. Datei -Upload
⑴. Installieren Sie die Datei -Upload -Komponente ASP FileUp (Unterstützt mehrere Dateien -Uploads, Dateityp- und Größenurteil, Dateinamenänderung nach dem Hochladen usw.)
⑵. Starten Sie IIS neu, um die Upload -Komponente effektiv zu machen
⑶. Legen Sie die Dateirechte des Upload -Verzeichnisses fest, damit Internetnutzer lesen, schreiben und ändern können
⑷. Codeabschnitt
upload_file.htm
<style type = text/css>
<!-
.Input {Hintergrund-Color: #fffff; : Georgia;
A: Link {Farbe: #1B629C;
A: Hover {Farbe: #ff6600;
A: Besucht {Textdekoration: Keine}
->
</style>
<Center>
<Formular engTePe = MultiPart/Form-Data-Methode = post action = upload_file.asp name = upload>
<Eingabe type = Hidden name = CopyrightInfo value = http: //www.chinaasp.com>
Bitte wählen Sie eine Datei aus: <Eingabe type = Dateiname = Datei1 class = input> <br> <br>
Bitte wählen Sie eine Datei aus: <Eingabe type = Dateiname = Datei2 class = input> <br> <br>
</form>
<br> <br>
<a href = javaScript: document.Upload.submit ();> subieren </a>
</center>
upload_file.asp
<%
Bei der nächsten Fehleraufnahme als nächstes
'Definieren Sie die Funktion, die das Datei -Suffix erhält
Funktion getFileexteName (Dateiname)
pos = Instrrev (Dateiname ,.)
Wenn pos> 0 dann
getFilexteName = Mid (Dateiname, POS+1)
anders
getFileexteName =
Ende wenn
Endfunktion
'Definieren Sie die Funktion, um den korrekten Dateinamen zu erhalten
Funktion getFileName (Dateiname)
lens = len (Dateiname) -len (GetFilextName (Dateiname))-1
getFileName = links (Dateiname, Linse)
Endfunktion
'Erstellen Sie ein Objekt für die Datei -Upload -Komponente
set FileUp = server.createObject (Chinaasp.Upload)
'Lesen Sie die von der Benutzerschleife hochgeladene Datei und speichern Sie sie auf dem Server
Für jedes f in FileUp.files
'Wenn der Benutzer keine Datei ausgewählt oder die Dateigröße 10 m überschreitet, kehren Sie zu der Seite zurück, auf der die Datei ausgewählt ist, um sie hochzuladen
Wenn f.filename = oder f.fileSize> 10485500 dann Antwort
'Holen Sie sich den gespeicherten Weg
path = server.mappath (upload_file.asp)
Pfad = links (Pfad, Len (Pfad) -15)
'Speichern Sie die Datei
F.Saveas Path & GetFileName (F.FileName) &. & getFileextName (F.filename)
nächste
Antwort.Redirect Upload_file.htm
%>
5. Laufwerk/Verzeichnis/Dateioperationen
Die Austauschzeit ist begrenzt. Besprechen wir sie also ausführlich, wenn Sie Zeit haben
6. ASP -Schreib- und Debugging -Erlebnis: So wählen Sie Cookies und Sitzungen aus, die Anzahl der Cookies -Fallen, Ablauf und Puffereinstellungen von Seiten, So gewährleisten die Portabilität, wie Sie mit 500 Fehlern auf dem internen Server umgehen ...
1. Cookies und Sitzungsauswahl:
⑴. Häufige Merkmale
⑵. Der Unterschied:
①. Wie man arbeitet
②. Ablaufbedingungen
③. Auswirkungen auf die Serverleistung
2. Cookies Number Trap:
IIS kann nicht mehr als 20 allgemeine Kekse sparen und dann neue Kekse definieren.
Die Antwort ist, 2D -Cookies zu verwenden.
Beispiel:
Testen Sie die Grenze der Anzahl der 1D -Kekse:
test_cookies_1.asp
<%
für i = 1 bis 50
response.cookies (Cookies_ & i) = i
nächste
%>
test_cookies_2.asp
<%
für i = 1 bis 50
Antwort.Write Request.cookies (Cookies_ & i) & <br>
nächste
%>
Wirkung:
Besuchen Sie zuerst test_cookies_1.asp, dann test_cookies_2.asp, was haben Sie gefunden?
test_cookies_3.asp
<%
für i = 1 bis 50
response.cookies (Cookies_ & i) = i
nächste
für i = 1 bis 50
Antwort.Write Request.cookies (Cookies_ & i) & <br>
nächste
%>
Wirkung:
Keine Kekse sind verloren! ! ! !
Testen Sie die Grenze der Anzahl der 2D -Kekse:
test_cookies_4.asp
<%
für i = 1 bis 301
response.cookies (TUHT) (cookies_ & i) = i
nächste
%>
test_cookies_5.asp
<%
für i = 1 bis 301
Antwort.Write Request.cookies (TUHT) (cookies_ & i) & <br>
nächste
%>
Wirkung:
Verwenden Sie diese Methode, um 201*20 = 4020 Cookies zu verwenden! ! ! !
3. Seitenablauf- und Pufferungseinstellungen
<%
'Ablauf und Pufferung
response.buffer = true
response.cachecontrol = no-chache
response.expiresabsolute = jetzt ()-1
response.expires = 0
%>
Sie können auch Einstellungen in HTML vornehmen:
<meta content = no-cache http-äquiv = pragma>
<meta http-äquiv = abläuft content = 0>
4. Transplantabilität gewährleisten
⑴. Dateien eingeben
<!-#include File = top.asp->
⑵. Verwenden Sie Server.Mappath, um Dateipfade zu finden, und vermeiden Sie es, absolute Pfade direkt auf der Seite zu verwenden
⑶. Versuchen Sie, Komponenten zu verwenden, um die Geschäftslogik zu verkapulieren
5. Fehler beim Debuggen des internen Servers 500
⑴. Stellen Sie IIS fest, um bestimmte Fehlermeldungen anzuzeigen
⑵. Schritt für Schritt Debugging von oben nach unten
⑶. Drucken Sie die Werte einiger wichtiger Variablen aus und überprüfen Sie, ob sie erwartet werden
⑷. Urteilsfehler basierend auf Erfahrung
7. Word -Dokumente betreiben
⑴. Installieren Sie Office 2000, das für Word 2000 erforderlich ist
⑵. Stellen Sie die Internetsicherheit in IE fest: Alle ActiveX-Steuerelemente und Plug-Ins sind aktiviert
⑶. Legen Sie die Dateirechte des Arbeitsverzeichnisses fest, um das Internet und das System zu lesen/zu ändern/zu schreiben
⑷. Schreiben Sie den Vorlagenkurs.dot
⑸. Spezifischer Code:
Opr_doc_inc.asp
<%
Antwort.Write dim var_num & chr (13)
Antwort.Write var_num = 2 & chr (13)
Antwort.Write Dim Varstrings (2) & CHR (13)
Antwort.
Antwort.
Antwort.Write Dim Varwert (2) & CHR (13)
Antwort.
Antwort.
%>
Sub stattdessen (Wort)
Setzen Sie Myrange = Word.Activedocument.content
für i = 0 bis var_num - 1
Nennen Sie Myrange.find.execute (varstrings (i), falsch, falsch, falsch, falsch, falsch, falsch, falsch, falsch, falsch, falsch, varvalues (i), 2)
Nächste
Ende sub
Opr_doc.asp
<%
'Holen Sie sich den gespeicherten Weg
path = server.mappath (opr_doc.asp)
Pfad = links (Pfad, Len (Pfad) -11)
Dateinamen = Path & test.doc
W1 = Word.Activedocument
w2 = wapp.documents.open & chr (32) & chr (34) & fileNames & chr (34)
%>
<script Language = vbScript>
Bei der nächsten Fehleraufnahme als nächstes
'Erstellen Sie ein Word -Dokument mit einem angegebenen Dateinamen
Dunkeles Wort
Setzen Sie Word = createObject (Word.Application)
wenn err.number> 0 dann
In der Warnung ist ein Fehler aufgetreten. Bitte bestätigen Sie, ob die Datei vorliegt
anders
word.vissible = false
word.documents.open <%response.write path%> cours.dot
<%Antwort. Write W1%>
word.documents.close
Setzen Sie Wort = nichts
Ende wenn
<!-#include file = opr_doc_inc.asp->
Dim Wapp
Setzen Sie WAPP = CreateObject (Word.Application)
Wenn err.number> 0 dann
Ein Fehler in Alarm. Bitte bestätigen Sie, ob die Datei korrekt erstellt wurde.
anders
Wapp.visible = true
<%Antwort. Write W2%>
Rufen Sie stattdessen an (Wapp)
Setzen Sie Wapp = nichts
Ende wenn
</script>
Effekt: Überprüfen Sie, ob die DOC -Datei generiert wurde? Was ist der Unterschied zwischen dieser neu erstellten DOC -Datei und Vorlagendatei? Hat sich der Verfasser und das Datum geändert? Speichern Sie es und sehen Sie den Inhalt der neu generierten DOC -Datei.
Beigefügt:
1. Alle oben genannten Codes wurden getestet und unter Windows 2000 Server SP2+IIS 5.0+MS SQL Server 2000+Office 2000 übergeben
2. Datenbank konfigurieren: Datenbankname -Kurs, User Course_User, Kennwort COURS_PASSWORD, ODBC -Treiber ist Curs_dsn, Port ist 2433, Skripte, die die Tabellenstruktur beschreiben, befinden sich im freigegebenen Verzeichnis.
3. Bitte laden Sie die Befehlszeile von Software ASP FileUp, Jmail, Winzip 8.1 und Winzip herunter.
16. Datenbankskriptdatei:
Wenn existiert (auswählen * aus dbo.sysObjects wobei ID = Object_id (n '[dbo]. [output_1]') und ObjectProperty (ID, N'IsProcedure ') = 1)
Drop -Prozedur [DBO]. [Output_1]
GEHEN
Wenn existiert (auswählen * aus dbo.sysObjects wobei ID = Object_id (n '[dbo]. [return_1]') und ObjectProperty (id, n'iSprocedure ') = 1)
Drop -Prozedur [DBO]. [return_1]
GEHEN
Wenn existiert (aus dbo.sysObjects wobei id = object_id (n '[dbo]. [user_info_1]') und ObjectProperty (ID, N'iSprocedure ') = 1)
Drop -Prozedur [DBO]. [user_info_1]
GEHEN
Wenn existiert (auswählen * aus dbo.sysObjects wobei ID = Object_id (n '[dbo]. [user_info_2]') und ObjectProperty (ID, n'iSprocedure ') = 1)
Drop -Prozedur [DBO]. [user_info_2]
GEHEN
Wenn existiert (aus dbo.sysObjects wobei id = object_id (n '[dbo]. [user_info_3]')) und ObjectProperty (ID, n'iSprocedure ') = 1)
Drop -Prozedur [DBO]. [user_info_3]
GEHEN
Wenn existiert (auswählen * aus dbo.sysObjects wobei id = Object_id (n '[dbo]. [user_info]') und ObjectProperty (ID, n'isussertable ') = 1)
Droptabelle [DBO]. [User_info]
GEHEN
Tabelle erstellen [dbo]. [User_info] (
[id] [int] Identität (1, 1) nicht null,
[user_name] [varchar] (40) sammeln chinesische_prc_ci_as nicht null,
[Passwort] [varchar] (20) sammelt chinesische_prc_ci_as nicht null
) Auf [primär]
GEHEN
TABELLE ALTELLE [DBO]. [User_info] mit NoCeheck hinzufügen
Einschränkung [PK_USER_INFO] Primary Keyclustered
(
[user_name]
) Auf [primär]
GEHEN
Setzen Sie zitiert_identifier aus
GEHEN
Stellen Sie ANSI_NULLS aus
GEHEN
Prozedur erstellen [output_1]
@sid int output
ALS
Setzen Sie @Sid = 2
GEHEN
Setzen Sie zitiert_identifier aus
GEHEN
Setzen Sie ANSI_NULLS ein
GEHEN
Setzen Sie zitiert_identifier aus
GEHEN
Stellen Sie ANSI_NULLS aus
GEHEN
Prozedur erstellen [return_1]
(@User_name varchar (40),@Passwort varchar (20))
ALS
Wenn existiert (ID aus user_info auswählen, wobei user_name =@user_name und password =@password)
Rückkehr 1
anders
Rückkehr 0
GEHEN
Setzen Sie zitiert_identifier aus
GEHEN
Setzen Sie ANSI_NULLS ein
GEHEN
SET zitiert_identifier auf
GEHEN
Stellen Sie ANSI_NULLS aus
GEHEN
Prozedur erstellen [user_info_1]
(@User_name varchar (40),@Passwort varchar (20))
ALS
Wählen Sie ID aus user_info, wobei user_name =@user_name und password =@password
GEHEN
Setzen Sie zitiert_identifier aus
GEHEN
Setzen Sie ANSI_NULLS ein
GEHEN
Setzen Sie zitiert_identifier aus
GEHEN
Stellen Sie ANSI_NULLS aus
GEHEN
Prozedur erstellen [user_info_2]
(@User_name varchar (40),@Passwort varchar (20))
ALS
Setzen Sie XACT_ABORT ein
Transaktion beginnen
Löschen Sie von user_info wobei user_name =@user_name und password =@password
Transaktion begehen
Stellen Sie XACT_ABORT aus
GEHEN
Setzen Sie zitiert_identifier aus
GEHEN
Setzen Sie ANSI_NULLS ein
GEHEN
Setzen Sie zitiert_identifier aus
GEHEN
Stellen Sie ANSI_NULLS aus
GEHEN
Prozedur erstellen [user_info_3] als
Wählen Sie * aus user_info aus
GEHEN
Setzen Sie zitiert_identifier aus
GEHEN
Setzen Sie ANSI_NULLS ein
GEHEN