4. Développement et utilisation des composants ASP:
1 et 1 Quels sont les composants?
Avantages:
n est facile à appeler et enregistre le code
Sécurité élevée
Traitement des transactions NSUpport, syndicat multi-composantes
vitesse de course nfast
Nusez pas besoin de modifier la page pour mettre à niveau et modifier les composants, il a donc une bonne évolutivité
l Inconvénients:
Difficultés de développement et de débogage
2 Comment se développer en utilisant VB?
⑴. Ouvrir vb >> newproject >> activex dll
⑵. Modifiez le nom du projet au cours
⑶. Modifiez le nom du module de classe pour être Conn_db
⑷. Projet >> Références, références à la bibliothèque de types de services com + et à la bibliothèque d'objets Microsoft Active Server Pages.
⑸. Modifiez le code de classe comme suit:
de www.knowsky.com
«Créez une connexion de base de données et sortie le champ de base de données
Réponse faible comme réponse
Demande DIM comme demande
Serveur DIM comme serveur
Application DiMapplicationAs
Session DimSessionas
Private Sub class_Initialize ()
Dim objContext comme objetContext
Définir objContext = getObjectContext ()
Set Response = ObjContext (Response)
Définir la demande = objContext (demande)
Set server = objContext (serveur)
Définir l'application = objContext (application)
Set session = objContext (session)
Sub-Sub
Sub conn_db ()
Définir Conn = CreateObject (Adodb.Connection)
Conn.open Course_dsn, Course_User, Course_Password
Set rs = createObject (adodb.recordSet)
Rs.open select * from user_info, Conn, 1, 1
Si Rs.RecordCount> 0 alors
Pour i = 1 à Rs.recordCount
Réponse.write <br> & rs (user_name) & <br>
Si Rs.Eof, sortez pour
Rs.MovEnext
Suivant
Terminer si
Rs.Close
Définir RS = rien
Conn.Close
Définir Conn = Rien
Sub-Sub
⑹. Ajouter une nouvelle classe Cutstr
⑺. Modifiez le code de classe comme suit:
'Intercepter la chaîne
Fonction Cutstr (str, longueur)
Si Len (str)> longueur alors
Cutstr = gauche (str, longueur) & ...
Autre
Cutstr = str
Terminer si
Fonction finale
⑻. Fichier >> Enregistrer
⑼. Fichier >> Faire Course.dll
3 et 3 Composants enregistrés: MTS et REGSVR32.exe
Il existe deux façons d'enregistrer les composants: MTS et utiliser RegSVR32.Exe. MTS est recommandé car il présente les avantages suivants:
n Balance dynamique de désinstallation pour améliorer la moderniabilité des composants et des applications basées sur les composants.
N contient la possibilité de publier et de soumettre des composants d'événements et de file d'attente, ce qui facilite la combinaison avec plusieurs composants.
Pour faire en sorte que le composant ait les caractéristiques MTS, un petit changement doit être apporté à la composante. Lors du développement sous NT et 98, la bibliothèque de types de serveur de transaction Microsoft doit être référencée dans le projet et lors du développement sous Windows 2000, la bibliothèque de type de service COM + doit être référencée.
⑴. Enregistrement RegSVR32:
Regsvr32.exe est un fichier exécutable sous System32.
Utilisez la ligne de commande pour saisir le répertoire où se trouve le fichier DLL du composant et exécutez le REGSVR32 DLL_FILE_NAME.
Exécutez Regedit, et les éléments Cours.Conn_db et Course.cutstr seront trouvés sous HKEY_CLASSES_ROOT, indiquant que l'enregistrement des composants réussit.
⑵. Inscrivez-vous avec MTS:
①. Démarrer >> Programmes >> Outils administratifs >> Services de composants
②. Développez le répertoire à l'état suivant:
③. Suivez l'assistant, étape suivante jusqu'à la boîte de dialogue suivante, cliquez sur Créer une application vide:
④. Dans la boîte de dialogue suivante, nommez le cours d'application et les autres par défaut jusqu'à ce qu'il soit terminé
⑤. Développez l'application du cours, cliquez avec le bouton droit et créez un nouveau composant
⑥. Suivez les invites et continuez.
⑦. Sélectionnez les composants que nous avons développés, l'étape suivante jusqu'à ce qu'elles soient terminées
⑧. À l'heure actuelle, vous pouvez constater qu'il existe deux composants supplémentaires dans la demande de cours:
4 Appeler des composants dans ASP
asp_use_com.asp
<%
'ASP appelle le composant COM
set Cutstr_obj = server.createObject (Course.cutstr)
Response.Write Cutstr_obj.cutstr (ABCDEFGHIJK, 3) & <br>
Set Cutstr_obj = rien
Définir Conn_obj = Server.CreateObject (Course.Conn_DB)
Conn_obj.conn_db ()
Définir Conn_obj = rien
%>
Effet:
abc...
ahyi
bouchée
Cela signifie que l'appel réussit.
5 Désinstaller des composants
⑴.
Remarque: Entrez d'abord le répertoire où se trouve la DLL du composant, puis utilisez RegSVR32 –U DLL_FILE_NAME pour désinstaller;
⑵. À l'aide de composants enregistrés MTS, supprimez d'abord l'application correspondante dans le service des composants, puis effectuez l'étape 1 pour désinstaller complètement les composants.
6. Emplacement de stockage des composants DLL et paramètres d'autorisation
⑴. Nous avons juste besoin de copier le fichier DLL compilé et d'autres fichiers n'ont pas besoin d'être traités.
⑵. Mettez la DLL en dehors du site Web, comme dans le répertoire System32, pour éviter le téléchargement
⑶. Les droits de fichiers de DLL sont définis sur la lecture du système, et les internautes traversent les dossiers / exécutent des fichiers
⑷. DLL supprime toutes les autorisations dans IIS, comme la lecture, l'accès volontaire aux scripts, etc.
Après le traitement ci-dessus, la sécurité du fichier DLL peut être assurée.
7 autre
Comment utiliser l'objet d'ASP dans un composant pour porter pratiquement le code ASP au composant com?
5. IIS Configuration optimale
1 et 1 Onglet du site Web: IP, port, hôte virtuel, connexion, journal
2 Filtre ISAPI: Ajouter le support PHP et JSP
3 et 3 Onglet Configuration du répertoire domestique: I est paramètres d'autorisation (combinés avec les droits du fichier), autorisation d'exécution, protection des applications, mappage, tampon, chemin parent, informations d'erreur
4 Autres onglets: erreurs personnalisées, en-têtes HTTP, sécurité des répertoires, documentation
5 Les avantages et les inconvénients de la compression des fichiers
VI.
1 et 1 Envoyer un e-mail (Jmail; MS SMTP)
Envoyer des e-mails à l'aide de Microsoft SMTP
⑴. Installez le service Microsoft SMTP
⑵. Configuration du service Microsoft SMTP
⑶. Section de code:
mail_smtp.asp
<%
Sub Sendmail (de Who, Towho, Sujet, corps)
Mymail Dim
Définir MyMail = Server.CreateObject (CDONTS.NEWMAIL)
mymail.from = de qui
mymail.to = towho
Mymail.Subject = Sujet
mymail.body = corps
mymail.send
Définir Mymail = rien
Sub-Sub
%>
Ce sous-programme accepte 4 paramètres correspondant aux éléments suivants.
Adresse e-mail de l'expéditeur
Adresse e-mail du destinataire de l'e-mail
sujet de lemail
contenu lemail
Comment utiliser:
<%
à partir de qui =…
Towho =…
Sujet =…
Corps =…
Si Towho <> alors
sendmail de qui, towho, sujet, corps
Terminer si
%>
Envoyer un e-mail à l'aide de Jmail
Si vous êtes intéressé, vous pouvez en discuter avec moi.
2 UNZIP ZIP Files (WScript.Shell et Winzip Command Line; Java Components)
⑴. Installer Winzip 8.1 ou plus
⑵. Installez la ligne de commande Winzip
⑶. Définissez les droits de fichier du répertoire de travail à lire, écrits et modifiés par les utilisateurs d'Internet
⑷. Section de code:
unzip_a_zipfile.asp
<%
'Commencez le programme avec l'objet Shell
'zip_path est le chemin d'accès au fichier zip spécifique, tel que c: /test.zip
'Le chemin est le chemin pour stocker le fichier dézippé
'ond est un paramètre de ligne de commande
Définir wshshell = server.createObject (wscript.shell)
problème = wshshell.run (wzunzip -ond & zip_path & & path, 1, true)
'Supprimer le fichier zip
Définissez MyFileObject = Server.CreateObject (Scripting.FileSystemObject)
myFileObject.deleteFile zip_path
'Juger s'il réussit à poursuivre l'opération
Si problème = 0 alors
'succès
...
autre
'échouer
...
terminer si
%>
3 et 3 Faire du fichier XML
Le temps d'échange est limité, alors discutons en détail si vous avez le temps
4 Téléchargement de fichiers
⑴. Installez le fichier ASP du composant de téléchargement de fichiers (prend en charge plusieurs téléchargements de fichiers, type de fichier et jugement de taille, modification du nom de fichier après le téléchargement, etc.)
⑵. Redémarrer IIS pour rendre le composant de téléchargement efficace
⑶. Définissez les droits des fichiers du répertoire de téléchargement afin que les internautes puissent lire, écrire et modifier
⑷. Section de code
upload_file.htm
<style type = text / css>
<! -
.Input {Colorant en arrière-plan: #FFFFF; : Géorgie; taille de police: 9pt; couleur: MidnightBlue;}
A: lien {Couleur: # 1B629C;
A: Hover {Couleur: # FF6600;
A: Visité {text-décoration: Aucun}
->
</ style>
<Nenter>
<formulaire encType = multipart / form-data méthode = post-action = upload_file.asp name = upload>
<entrée type = name cachée = CopyrightInfo Value = http: //www.chinaasp.com>
Veuillez sélectionner un fichier: <entrée Type = fichier nom = file1 class = input> <br> <br>
Veuillez sélectionner un fichier: <entrée Type = File Name = File2 Class = Input> <br> <br>
</ form>
<br> <br>
<a href = javascript: document.upload.sumit ();> soumettre </a>
</ Center>
upload_file.asp
<%
sur l'erreur reprendre ensuite
«Définissez la fonction qui obtient le suffixe de fichier
fonction getFileExtName (nom de fichier)
pos = instrrev (nom de fichier ,.)
Si pos> 0 alors
getFileExtName = mid (nom de fichier, pos + 1)
autre
getFileExtName =
terminer si
fonction finale
«Définissez la fonction pour obtenir le nom correct du fichier
fonction getFileName (nom de fichier)
Lens = Len (nom de fichier) -len (getFileExtName (nom de fichier)) - 1
getFileName = Left (nom de fichier, objectif)
fonction finale
'Créer un objet pour le composant de téléchargement de fichiers
set fileup = server.createObject (chinaasp.upload)
'Lisez le fichier téléchargé par la boucle utilisateur et enregistrez-le sur le serveur
pour chaque F dans fileup.files
'Lorsque l'utilisateur ne sélectionne pas de fichier ou que la taille du fichier dépasse 10 m, revenez à la page où le fichier est sélectionné pour le télécharger
Si f.filename = ou f.filesize> 10485500 alors réponse.redirect upload_file.htm
'Obtenez le chemin enregistré
path = server.mappath (upload_file.asp)
chemin = gauche (chemin, len (chemin) -15)
'Enregistrer le fichier
F.Saveas Path & GetFilename (F.FileName) &. & GetFileExtName (F.FileName)
suivant
réponse.redirect upload_file.htm
%>
5 Opérations de lecteur / répertoire / fichier
Le temps d'échange est limité, alors discutons en détail si vous avez le temps
6. Expérience d'écriture et de débogage de l'ASP: comment sélectionner les cookies et les sessions, le nombre de pièges à cookies, l'expiration des pages et les paramètres de tampon, comment assurer la portabilité, comment gérer 500 erreurs dans le serveur interne ...
1 et 1 Cookies et choix de session:
⑴. Caractéristiques communes
⑵. La différence:
①. Comment travailler
②. Conditions d'expiration
③. Impact sur les performances du serveur
2 Cookies Number Trap:
IIS peut économiser plus de 20 cookies généraux, puis définir de nouveaux cookies.
La réponse est d'utiliser des cookies 2D.
exemple:
Testez la limite du nombre de cookies 1D:
test_cookies_1.asp
<%
pour i = 1 à 50
réponse.cookies (cookies_ & i) = i
suivant
%>
test_cookies_2.asp
<%
pour i = 1 à 50
réponse.write request.cookies (cookies_ & i) & <br>
suivant
%>
Effet:
Visitez d'abord test_cookies_1.asp, puis test_cookies_2.asp, qu'avez-vous trouvé?
test_cookies_3.asp
<%
pour i = 1 à 50
réponse.cookies (cookies_ & i) = i
suivant
pour i = 1 à 50
réponse.write request.cookies (cookies_ & i) & <br>
suivant
%>
Effet:
Aucun cookie n'est perdu! ! ! !
Testez la limite du nombre de cookies 2D:
test_cookies_4.asp
<%
pour i = 1 à 301
réponse.cookies (tuht) (cookies_ & i) = i
suivant
%>
test_cookies_5.asp
<%
pour i = 1 à 301
réponse.write request.cookies (tuht) (cookies_ & i) & <br>
suivant
%>
Effet:
Utilisez cette méthode pour utiliser 201 * 20 = 4020 cookies! ! ! !
3 et 3 Paramètres d'expiration et de tampon de la page
<%
'Expiration et tampon
réponse.buffer = true
réponse.cacheControl = No-chache
réponse.ExpiresAbsolute = Now () - 1
Response.expires = 0
%>
Vous pouvez également créer des paramètres dans HTML:
<Meta Content = No-Cache Http-Equiv = Pragma>
<méta http-equiv = expire contenu = 0>
4 Assurer la transplantabilité
⑴. Inclure les fichiers
<! - # include file = top.asp ->
⑵. Utilisez server.mappath pour trouver des chemins de fichier, évitez d'utiliser des chemins absolus directement dans la page
⑶. Essayez d'utiliser des composants pour encapsuler la logique commerciale
5 Erreur Débogage du serveur interne 500
⑴. Définir IIS pour afficher des messages d'erreur spécifiques
⑵. Débogage étape par étape, de haut en bas
⑶. Imprimez les valeurs de certaines variables importantes et vérifiez si elles sont attendues
⑷. Juger des erreurs basées sur l'expérience
7 Faire fonctionner des documents de mots
⑴. Installer Office 2000, qui est requis pour le mot 2000
⑵. Définir la sécurité Internet dans IE: Tous les contrôles et plug-ins ActiveX sont activés
⑶. Définissez les droits de fichier du répertoire de travail pour lire / modifier / écrire Internet et le système
⑷. Écrire un modèle de cours.dot
⑸. Code spécifique:
OPR_DOC_INC.ASP
<%
Réponse.write dim var_num & chr (13)
Réponse.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) & Date: & 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) & Date: & Date () & Chr (34) & Chr (13)
%>
Sub à la place (mot)
Définissez MyRange = Word.activeDocument.Content
pour i = 0 à var_num - 1
Appelez MyRange.Find.Execute (Varstrings (i), False, False, False, False, False, False, False, False, False, False, Varvalues (i), 2)
Suivant
Sub-Sub
OPR_DOC.ASP
<%
'Obtenez le chemin enregistré
path = server.mappath (opr_doc.asp)
chemin = gauche (chemin, len (chemin) -11)
filenames = path & test.doc
w1 = word.activecument.saveas & chr (32) & chr (34) & fileNames & chr (34)
w2 = wapp.documents.open & chr (32) & chr (34) & fileNames & chr (34)
%>
<Script Language = VBScript>
Sur l'erreur reprendre ensuite
«Créez un document Word avec un nom de fichier spécifié
Parole
set word = createObject (word.application)
Si err.number> 0 alors
Une erreur s'est produite en alerte, veuillez confirmer si le fichier existe
autre
word.visible = false
word.documents.open <% Response.Write Path%> Course.dot
<% Response.Write W1%>
word.documents.close
set word = rien
terminer si
<! - # Inclure File = OPR_DOC_INC.ASP ->
Tablier
Set wapp = createObject (word.application)
Si err.number> 0 alors
Une erreur s'est produite en alerte.
autre
wapp.visible = true
<% Response.Write W2%>
Appelez à la place (Wapp)
Set wapp = rien
terminer si
</cript>
Effet: vérifiez si le fichier DOC a été généré? Quelle est la différence entre ce fichier DOC et le fichier DOC nouvellement créé? Le rédacteur et la date ont-ils changé? Enregistrez-le et voyez le contenu du fichier DOC nouvellement généré.
Ci-joint:
1 et 1 Tous les codes ci-dessus ont été testés et passés sous Windows 2000 Server SP2 + IIS 5.0 + MS SQL Server 2000 + Office 2000
2 Configurer la base de données: cours de nom de base de données, cours utilisateur_user, mot de passe Course_password, le pilote ODBC est Course_DSN, le port est 2433, les scripts décrivant la structure de la table sont dans le répertoire partagé.
3 et 3 Veuillez télécharger la ligne de commande ASP FileUp, JMail, Winzip 8.1 et Winzip.
4. Fichier de script de base de données:
Si existe (sélectionnez * dans dbo.sysObjects où id = object_id (n '[dbo]. [output_1]') et ObjectProperty (id, n'isprocedure ') = 1)
Procédure de dépôt [DBO]. [Output_1]
ALLER
si existe (sélectionnez * dans dbo.sysobjects où id = object_id (n '[dbo]. [return_1]') et objectProperty (id, n'isprocedure ') = 1)
Procédure de dépôt [dbo]. [return_1]
ALLER
Si existe (sélectionnez * dans dbo.sysObjects où id = object_id (n '[dbo]. [user_info_1]') et objectProperty (id, n'isprocedure ') = 1)
procédure de dépression [dbo]. [user_info_1]
ALLER
Si existe (sélectionnez * dans dbo.sysObjects où id = object_id (n '[dbo]. [user_info_2]') et objectProperty (id, n'isprocedure ') = 1)
procédure de dépression [dbo]. [user_info_2]
ALLER
Si existe (sélectionnez * dans dbo.sysObjects où id = object_id (n '[dbo]. [user_info_3]') et objectProperty (id, n'isprocedure ') = 1)
procédure de dépression [dbo]. [user_info_3]
ALLER
Si existe (sélectionnez * dans dbo.sysObjects où id = object_id (n '[dbo]. [user_info]') et objectProperty (id, n'iSeuserable ') = 1)
Drop Table [DBO]. [User_Info]
ALLER
Créer une table [dbo]. [User_info] (
[id] [int] identité (1, 1) pas nul,
[user_name] [varchar] (40) Collate chinois_prc_ci_as pas null,
[Mot de passe] [Varchar] (20) Rassemblez chinois_prc_ci_as pas nul
) Sur [primaire]
ALLER
Alter table [dbo]. [User_info] avec nocheck add
Contrainte [pk_user_info] keycluster primaire
(
[nom d'utilisateur]
) Sur [primaire]
ALLER
Définir Cured_Identifier off
ALLER
Définir ANSI_NULLS
ALLER
Créer une procédure [Output_1]
@Sid int sorput
COMME
set @ sid = 2
ALLER
Définir Cured_Identifier off
ALLER
Définir ANSI_NULLS sur
ALLER
Définir Cured_Identifier off
ALLER
Définir ANSI_NULLS
ALLER
Créer une procédure [return_1]
(@user_name varchar (40), @ mot de passe varchar (20))
COMME
Si existe (sélectionnez ID dans user_info où user_name = @ user_name et mot de passe = @ mot de passe)
retour 1
autre
retour 0
ALLER
Définir Cured_Identifier off
ALLER
Définir ANSI_NULLS sur
ALLER
Set cité_odentifier sur
ALLER
Définir ANSI_NULLS
ALLER
Créer une procédure [user_info_1]
(@user_name varchar (40), @ mot de passe varchar (20))
COMME
Sélectionnez ID dans user_info où user_name = @ user_name et mot de passe = @ mot de passe
ALLER
Définir Cured_Identifier off
ALLER
Définir ANSI_NULLS sur
ALLER
Définir Cured_Identifier off
ALLER
Définir ANSI_NULLS
ALLER
Créer une procédure [user_info_2]
(@user_name varchar (40), @ mot de passe varchar (20))
COMME
Définir XACT_ABORT ON
Commencer la transaction
Supprimer de user_info où user_name = @ user_name et mot de passe = @ mot de passe
Engager une transaction
Définir XACT_ABORT
ALLER
Définir Cured_Identifier off
ALLER
Définir ANSI_NULLS sur
ALLER
Définir Cured_Identifier off
ALLER
Définir ANSI_NULLS
ALLER
Créer une procédure [user_info_3] comme
Sélectionner * dans user_info
ALLER
Définir Cured_Identifier off
ALLER
Définir ANSI_NULLS sur
ALLER