4. Desarrollo y uso de componentes ASP:
1. ¿Cuáles son los componentes?
Ventajas:
n es fácil de llamar y guardar código
Alta seguridad
Procesamiento de transacciones NSupport, unión múltiple
Velocidad de carrera NAFT
NUSE No es necesario modificar la página para actualizar y modificar los componentes, por lo que tiene una buena escalabilidad
L Desventajas:
Dificultades de desarrollo y depuración
2. ¿Cómo desarrollar usando VB?
⑴. Abra VB >> NewProject >> ActiveX DLL
⑵. Modificar el nombre del proyecto al curso
⑶. Modificar el nombre del módulo de clase para ser conn_db
⑷. Proyecto >> Referencias, referencias a la biblioteca de tipo de servicio COM+ y la biblioteca de objetos de Microsoft Active Server Pages.
⑸. Modifique el código de clase de la siguiente manera:
de www.knowsky.com
'Crear una conexión de base de datos y emitir el campo de la base de datos
Respuesta oscura como respuesta
Solicitud de Dim Solicitud como solicitud
Servidor Dim como servidor
Aplicación dimapplicationas
Sesión de dimsessionas
Sub class_initialize () privado ()
Dim objContext como ObjectContext
Establecer objContext = getObjectContext ()
Establecer respuesta = objContext (respuesta)
Establecer solicitud = objContext (solicitud)
Establecer servidor = objContext (servidor)
Establecer aplicación = objContext (aplicación)
Establecer sesión = objContext (sesión)
Final
Sub Conn_db ()
Establecer conn = createObject (ADODB.Connection)
conn.open curso_dsn, curso_user, curso_password
Establecer rs = createObject (ADODB.RecordSet)
rs.open select * de User_info, Conn, 1, 1
Si Rs.RecordCount> 0 entonces
Para i = 1 a Rs.RecordCount
Response.write <br> & rs (user_name) y <br>
Si rs.Eof entonces salga por
Rs.Movenext
Próximo
Final si
rs.
Establecer RS = nada
Conn.clar
Establecer conn = nada
Final
⑹. Agregue un nuevo butstrS de clase
⑺. Modifique el código de clase de la siguiente manera:
'Interceptando la cadena
Función Cutstr (STR, Longitud)
Si len (str)> longitud entonces
Cutstr = izquierda (str, longitud) y ...
Demás
CUTST = STR
Final si
Función final
⑻. Archivo >> Guardar
⑼. Archivo >> hacer curso.dll
3. Componentes registrados: MTS y REGSVR32.exe
Hay dos formas de registrar componentes: MTS y usar regsvr32.exe. Se recomienda MTS porque tiene las siguientes ventajas:
n Balance de desinstalación dinámica para mejorar la capacidad de actualización de componentes y aplicaciones basadas en componentes.
N contiene la capacidad de publicar y enviar componentes de eventos y colas, lo que facilita la combinación con múltiples componentes.
Para hacer que el componente tenga las características de MTS, se debe hacer un pequeño cambio en el componente. Cuando se desarrolla en NT y 98, la biblioteca de tipo de servidor de transacciones de Microsoft debe ser referenciada en el proyecto, y cuando se desarrolla en Windows 2000, se debe hacer referencia a la biblioteca de tipo de servicio COM+.
⑴. Registro de regsvr32:
RegSVR32.Exe es un archivo ejecutable en System32.
Use la línea de comando para ingresar el directorio donde se encuentra el archivo DLL componente, y ejecute regsvr32 dll_file_name.
Ejecutar Regedit, y el curso.conn_db y el curso. Los elementos de Cutstr se encontrarán en HKEY_CLASSES_ROOT, lo que indica que el registro del componente es exitoso.
⑵. Regístrese con MTS:
①. Inicio >> Programas >> Herramientas administrativas >> Servicios de componentes
②. Expanda el directorio al siguiente estado:
③. Siga el asistente, siguiente paso hasta el siguiente cuadro de diálogo, haga clic en Crear una aplicación vacía:
④. En el siguiente cuadro de diálogo, nombre el curso de la aplicación y el otro predeterminado hasta que se complete
⑤. Expanda la aplicación del curso, haga clic con el botón derecho y cree un nuevo componente
⑥. Siga las indicaciones y continúe.
⑦. Seleccione los componentes que desarrollamos, siguiente paso hasta que estén terminados
⑧. En este momento, puede encontrar que hay dos componentes adicionales en la aplicación del curso:
4. Componentes de llamadas en ASP
ASP_USE_COM.ASP
<%
'ASP llama componente com
Establecer CutStr_obj = Server.CreateObject (curso.cutstr)
Response.write Cutstr_obj.cutstr (ABCDEFGHIJK, 3) y <br>
Establecer CUTSTR_OBJ = nada
Establecer conn_obj = server.createObject (curso.conn_db)
conn_obj.conn_db ()
establecer conn_obj = nada
%>
Efecto:
abecedario...
ahyi
tuth
Significa que la llamada es exitosa.
5. Desinstalar componentes
⑴.
Nota: Primero ingrese el directorio donde se encuentra el componente DLL, y luego use Regsvr32 –U DLL_FILE_NAME para desinstalar;
⑵. Usando los componentes registrados de MTS, primero elimine la aplicación correspondiente en el servicio de componentes y luego realice el paso 1 para desinstalar completamente los componentes.
6. Ubicación de almacenamiento de componentes de DLL y configuración de permiso
⑴. Solo necesitamos copiar el archivo DLL compilado, y no es necesario procesar otros archivos.
⑵. Coloque DLL fuera del sitio web, como en el directorio System32, para evitar la descarga
⑶. Los derechos de archivo de DLL están establecidos en la lectura del sistema, y los usuarios de Internet recorren las carpetas/ejecución de archivos
⑷. DLL elimina todos los permisos en IIS, como lectura, acceso voluntario a guiones, etc.
Después del procesamiento anterior, se puede garantizar la seguridad del archivo DLL.
7. otro
¿Cómo usar el objeto de ASP en un componente para puerto convenientemente el código ASP al componente COM?
5. Configuración óptima de IIS
1. Pestaña del sitio web: IP, puerto, host virtual, conexión, registro
2. Filtro ISAPI: agregue el soporte PHP y JSP
3. Pestaña de configuración del directorio de inicio: I es configuración de permiso (combinada con derechos de archivo), permiso de ejecución, protección de aplicaciones, mapeo, almacenamiento en búfer, ruta principal, información de error
4. Otras pestañas: errores personalizados, encabezados HTTP, seguridad del directorio, documentación
5. Los beneficios y desventajas de la compresión de archivos
VI.
1. Enviar correo electrónico (JMail; MS SMTP)
Enviar correos electrónicos con Microsoft SMTP
⑴. Instale el servicio Microsoft SMTP
⑵. Configuración del servicio Microsoft SMTP
⑶. Sección del Código:
mail_smtp.asp
<%
Sub Sendmail (Fromwho, Towho, sujeto, cuerpo)
Dim mymail
Establecer mymail = server.createObject (cdonts.newsil)
mymail.from = fromwho
mymail.to = towho
mymail.subject = sujeto
mymail.body = cuerpo
mymail.send
establecer mymail = nada
final
%>
Esta subrutina acepta 4 parámetros correspondientes a los siguientes elementos.
Lthe la dirección de correo electrónico del remitente
lthe la dirección de correo electrónico del destinatario del correo electrónico
sujeto de lema
Contenido de Lemail
Cómo usar:
<%
de quien = ...
TOWHO = ...
Sujeto = ...
Cuerpo = ...
Si Towho <> entonces
Sendmail de Who, Towho, sujeto, cuerpo
Final si
%>
Enviar correo electrónico usando JMail
Si está interesado, puede discutirlo conmigo.
2. Archivos de Zip Unzip (WScript.Shell y Winzip Command Line; Java Components)
⑴. Instale Winzip 8.1 o superior
⑵. Instale la línea de comandos de Winzip
⑶. Establezca los derechos de archivo del directorio de trabajo a leer, escribir y modificar por los usuarios de Internet
⑷. Sección del Código:
unzip_a_zipfile.asp
<%
'Inicie el programa con el objeto Shell
'ZIP_PATH es la ruta al archivo ZIP específico, como c: /test.zip
'La ruta es la ruta para almacenar el archivo descomprimido
'OND es un parámetro de línea de comandos
Establecer wshshell = server.createObject (wscript.shell)
Número = wshshell.run (wzunzip -ond & zip_path & & path, 1, verdadero)
'Eliminar el archivo zip
establecer myFileObject = server.CreateObject (scripting.filesystemObject)
myFileObject.DeleteFile Zip_Path
'Juzga si es exitoso continuar la operación
Si problema = 0 entonces
'éxito
...
demás
'fallar
...
final si
%>
3. Operar el archivo XML
El tiempo de intercambio es limitado, así que discutamos en detalle si tiene tiempo
4. Carga de archivo
⑴. Instale el componente de carga de archivo ASP FileUp (admite múltiples cargas de archivo, tipo de archivo y juicio de tamaño, cambio de nombre de archivo después de cargar, etc.)
⑵. Reiniciar IIS para que el componente de carga sea efectivo
⑶. Establezca los derechos de archivo del directorio de carga para que los usuarios de Internet puedan leer, escribir y modificar
⑷. Sección del código
upload_file.htm
<estilo type = text/css>
<!-
.Input {Color de fondo: #fffff; : Georgia;
a: enlace {color: #1b629c;
A: Hover {Color: #FF6600;
A: Visited {Text-Decoration: None}
->
</style>
<centro>
<form de formato = múltipart/form de método data = post accy = upload_file.asp name = upload>
<input type = Hidden name = CopyrightInfo value = http: //www.chinaasp.com>
Seleccione un archivo: <input type = file name = file1 class = input> <br> <br>
Seleccione un archivo: <input type = file name = file2 class = input> <br> <br>
</form>
<br> <br>
<a href = javaScript: document.upload.submit ();> enviar </a>
</Center>
cargue_file.asp
<%
En el currículum de error siguiente
'Defina la función que obtiene el sufijo de archivo
función getFileExtName (nombre de archivo)
pos = instrrev (nombre de archivo ,.)
Si pos> 0 entonces
getFileExtName = Mid (nombre de archivo, pos+1)
demás
getFileExtName =
final si
función final
'Defina la función para obtener el nombre correcto del archivo
función getFileName (nombre de archivo)
lente = len (nombre de archivo) -len (getFileExTname (nombre de archivo))-1
getFileName = izquierda (nombre de archivo, lente)
función final
'Cree un objeto para el componente de carga de archivos
Establecer fileUp = server.createObject (chinaasp.upload)
'Lea el archivo cargado por el bucle de usuario y guárdelo en el servidor
Para cada F en fileup.files
'Cuando el usuario no seleccione un archivo o el tamaño del archivo excede los 10 m, regrese a la página donde se selecciona el archivo para cargarlo
Si f.filename = o f.filesize> 10485500 luego responde.redirect upload_file.htm
'Obtenga el camino guardado
Path = server.mappath (upload_file.asp)
ruta = izquierda (ruta, len (ruta) -15)
'Guarde el archivo
F.Saveas Path & GetFilename (F.FileName) &. & GetFileExtname (F.FileName)
próximo
Response.Redirect upload_file.htm
%>
5. Operaciones de conducción/directorio/archivo
El tiempo de intercambio es limitado, así que discutamos en detalle si tiene tiempo
6. Experiencia de escritura y depuración de ASP: cómo seleccionar cookies y sesiones, el número de trampas de cookies, expiración de página y configuración de almacenamiento en búfer, cómo garantizar la portabilidad, cómo lidiar con 500 errores en el servidor interno ...
1. Cookies y opciones de sesión:
⑴. Características comunes
⑵. La diferencia:
①. Cómo trabajar
②. Condiciones de vencimiento
③. Impacto en el rendimiento del servidor
2. TRAP DEL NÚMERO DE COOKIES:
IIS puede ahorrar más de 20 cookies generales y luego definir nuevas cookies.
La respuesta es usar cookies 2D.
ejemplo:
Pruebe el límite del número de cookies 1D:
test_cookies_1.asp
<%
para i = 1 a 50
Response.cookies (Cookies_ & i) = I
próximo
%>
test_cookies_2.asp
<%
para i = 1 a 50
Response.Write Solic.Cookies (Cookies_ & i) & <br>
próximo
%>
Efecto:
Primero visite test_cookies_1.asp, luego test_cookies_2.asp, ¿qué encontró?
test_cookies_3.asp
<%
para i = 1 a 50
Response.cookies (Cookies_ & i) = I
próximo
para i = 1 a 50
Response.Write Solic.Cookies (Cookies_ & i) & <br>
próximo
%>
Efecto:
¡No se pierden galletas! ! ! !
Pruebe el límite del número de cookies 2D:
test_cookies_4.asp
<%
para i = 1 a 301
Response.cookies (tuht) (cookies_ & i) = i
próximo
%>
test_cookies_5.asp
<%
para i = 1 a 301
Response.Write Solic.Cookies (Tuht) (Cookies_ & i) & <br>
próximo
%>
Efecto:
¡Use este método para usar 201*20 = 4020 Cookies! ! ! !
3. Configuración de vencimiento y almacenamiento de la página
<%
'Vencimiento y amortiguación
Respuesta.Buffer = True
respuesta.cacheControl = no chache
Respuesta.ExpeesabSolute = Now ()-1
respuesta.expires = 0
%>
También puede hacer configuraciones en HTML:
<meta content = no-cache http-oquiv = pragma>
<meta http-equiv = expires content = 0>
4. Asegúrese de trasplantabilidad
⑴. Incluir archivos
<!-#include file = top.asp->
⑵. Use server.mappath para encontrar rutas de archivos, evite usar rutas absolutas directamente en la página
⑶. Intente usar componentes para encapsular la lógica comercial
5. Error de depuración del servidor interno 500
⑴. Establecer IIS para mostrar mensajes de error específicos
⑵. Depuración paso a paso, de arriba a abajo
⑶. Imprima los valores de algunas variables importantes y verifique si se esperan
⑷. Juzgar errores basados en la experiencia
7. Operar documentos de Word
⑴. Instale Office 2000, que se requiere para Word 2000
⑵. Establezca la seguridad de Internet en IE: todos los controles y complementos ActiveX están habilitados
⑶. Establezca los derechos de archivo del directorio de trabajo para leer/modificar/escribir Internet y el sistema
⑷. Curso de plantilla de escritura.
⑸. Código específico:
opr_doc_inc.asp
<%
Response.WRITE DIM VAR_NUM & CHR (13)
Response.Write var_num = 2 & chr (13)
Respuesta. Escribe Dim Varstrings (2) y CHR (13)
Response.Write Varstrings (0) = & Chr (34) & Drafter: & Chr (34) & Chr (13)
Response.Write Varstrings (1) = & chr (34) y fecha: & chr (34) y chr (13)
Respuesta. Escribe Dim VarValues (2) y CHR (13)
Respuesta
Response.Write VarValues (1) = & chr (34) & Date: & Date () & Chr (34) & Chr (13)
%>
Sub en su lugar (palabra)
Establecer myRange = word.activedOcument.content
para i = 0 a var_num - 1
Llame a myrange.find.execute (varstrings (i), falso, falso, falso, falso, falso, falso, falso, falso, falso, varvalues (i), 2)
Próximo
Final
opr_doc.asp
<%
'Obtenga el camino guardado
Path = Server.Mappath (OPR_DOC.ASP)
ruta = izquierda (ruta, len (ruta) -11)
nombres de archivo = ruta y test.doc
w1 = word.activedOcument.Saveas & chr (32) & chr (34) & filenames & chr (34)
w2 = wapp.documents.open & chr (32) & chr (34) & filenames & chr (34)
%>
<Script Language = VBScript>
En el currículum de error siguiente
'Cree un documento de Word con un nombre de archivo especificado
Palabra oscura
Establecer word = createObject (Word.Application)
Si err.number> 0 entonces
Se produjo un error en alerta, confirme si el archivo existe
demás
word.Visible = falso
word.documents.open <%Response.write ruta%> curso.dot
<%Respuesta. Escribe W1%>
word.documents.close
Establecer palabra = nada
final si
<!-#include file = opr_doc_inc.asp->
Dim Wapp
Establecer wapp = createObject (Word.Application)
Si err.number> 0 entonces
Se produjo un error en alerta.
demás
wapp.visible = True
<%Respuesta. Escribe W2%>
Llame en su lugar (WAPP)
establecer wapp = nada
final si
</script>
Efecto: ¿verifique si el archivo DOC ha sido generado? ¿Cuál es la diferencia entre este archivo DOC y el archivo de plantilla recién creados? ¿Ha cambiado el redactor y la fecha? Guarde y vea el contenido del archivo DOC recientemente generado.
Adjunto:
1. Todos los códigos anteriores se probaron y pasaron en Windows 2000 Server SP2+IIS 5.0+MS SQL Server 2000+Office 2000
2. Configurar la base de datos: curso de nombre de la base de datos, User Course_user, Password Course_Password, ODBC Driver es curso_dsn, el puerto es 2433, los scripts que describen la estructura de la tabla están en el directorio compartido.
3. Descargue el software ASP FileUp, JMail, Winzip 8.1 y Winzip Command Line usted mismo.
4. Archivo de script de base de datos:
Si existe (seleccione * de dbo.sySoBjects donde id = object_id (n '[dbo]. [output_1]') y objectProperty (id, n'Isprocedure ') = 1)
Procedimiento de caída [DBO]. [Output_1]
IR
Si existe (seleccione * de dbo.sysObjects donde id = object_id (n '[dbo]. [return_1]') y objectProperty (id, n'Isprocedure ') = 1)
Procedimiento de sueldo [DBO]. [Return_1]
IR
Si existe (seleccione * de dbo.sysObjects donde id = object_id (n '[dbo]. [user_info_1]') y objectProperty (id, n'Isprocedure ') = 1)
Procedimiento de soltar [DBO]. [User_info_1]
IR
Si existe (seleccione * de dbo.sysObjects donde id = object_id (n '[dbo]. [user_info_2]') y objectProperty (id, n'Isprocedure ') = 1)
Procedimiento de sueldo [DBO]. [User_info_2]
IR
Si existe (seleccione * de DBO.SySObjects donde id = Object_id (n '[dbo]. [User_info_3]') y ObjectProperty (id, n'Isprocedure ') = 1)
Procedimiento de sueldo [DBO]. [User_info_3]
IR
Si existe (seleccione * de dbo.sySoBjects donde id = object_id (n '[dbo]. [user_info]') y objectProperty (id, n'isusertable ') = 1)
Tabla de caída [DBO]. [USER_INFO]
IR
Crear tabla [dbo]. [User_info] (
[id] [int] identidad (1, 1) no nulo,
[user_name] [varchar] (40) Collate chino_prc_ci_as no nulo,
[contraseña] [varchar] (20) Collate chino_prc_ci_as no nulo
) En [primario]
IR
Tabla de alter [DBO]. [User_info] con ShoCheck Add
Restricción [PK_USER_INFO] PRIMARIA CLASCULADA
(
[nombre de usuario]
) En [primario]
IR
Establecer Quited_identifier OFF
IR
Establecer ansi_nulls
IR
Crear procedimiento [output_1]
@sid int salida
COMO
establecer @sid = 2
IR
Establecer Quited_identifier OFF
IR
Establecer ansi_nulls en
IR
Establecer Quited_identifier OFF
IR
Establecer ansi_nulls
IR
Crear procedimiento [return_1]
(@user_name varchar (40),@contraseña varchar (20))
COMO
Si existe (seleccione ID de User_info donde user_name =@user_name y contraseña =@contraseña)
Devolver 1
demás
regresar 0
IR
Establecer Quited_identifier OFF
IR
Establecer ansi_nulls en
IR
Establecer Quited_identifier en
IR
Establecer ansi_nulls
IR
Crear procedimiento [user_info_1]
(@user_name varchar (40),@contraseña varchar (20))
COMO
Seleccione ID de user_info donde user_name =@user_name y contraseña =@contraseña
IR
Establecer Quited_identifier OFF
IR
Establecer ansi_nulls en
IR
Establecer Quited_identifier OFF
IR
Establecer ansi_nulls
IR
Crear procedimiento [user_info_2]
(@user_name varchar (40),@contraseña varchar (20))
COMO
Establecer xact_abort en
Comenzar la transacción
Eliminar de user_info donde user_name =@user_name y contraseña =@contraseña
Transacción de compromiso
Establecer xact_abort
IR
Establecer Quited_identifier OFF
IR
Establecer ansi_nulls en
IR
Establecer Quited_identifier OFF
IR
Establecer ansi_nulls
IR
Crear procedimiento [user_info_3] como
Seleccionar * de user_info
IR
Establecer Quited_identifier OFF
IR
Establecer ansi_nulls en
IR