4. Desenvolvimento e uso de componentes ASP:
1. Quais são os componentes?
Vantagens:
n é fácil de chamar e salva o código
Alta segurança
Processamento de transações NSupport, união multi-componente
Velocidade de execução do Nast
NUSE NÃO NECESSÁRIO DE MODIFICAR A PÁGINA PARA ATUALIZAR E MODIFICAR COMPONENTES, por isso tem boa escalabilidade
l Desvantagens:
Dificuldades de desenvolvimento e depuração
2. Como desenvolver usando VB?
⑴. VB aberto >> newProject >> DLL ActiveX
⑵. Modifique o nome do projeto no curso
⑶. Modifique o nome do módulo de classe para ser conn_db
⑷. Projeto >> Referências, referências à biblioteca do tipo COM+ de serviço e biblioteca de objetos do Microsoft Active Server Pages.
⑸. Modifique o código da classe da seguinte forma:
de www.knowsky.com
'Crie uma conexão de banco de dados e emitir o campo do banco de dados
Resposta fraca como resposta
Solicitação fraca como solicitação
Dim Server como servidor
DimapplicationAs Application
Sessão de Dimsessionas
Sub -classe privado_initialize ()
ObjContext Dim como ObjectContext
Set objContext = getObjectContext ()
Definir resposta = objContext (resposta)
Set solicitação = objContext (solicitação)
SET Server = ObjContext (servidor)
Definir aplicativo = objContext (aplicativo)
Set session = objContext (sessão)
Final sub
Subnn_db ()
Definir Conn = CreateObject (Adodb.Connection)
Conn.open Course_DSN, curso_user, curso_password
Set rs = createObject (adodb.recordset)
Rs.Open Select * de User_info, Conn, 1, 1
Se Rs.RecordCount> 0 então
Para i = 1 a Rs.RecordCount
Response.write <br> & rs (user_name) & <br>
Se rs.eof, então saia para
rs.movenext
Próximo
Final se
rs.close
Definir rs = nada
Conn.Close
Defina conn = nada
Final sub
⑹. Adicione uma nova classe Cutstr
⑺. Modifique o código da classe da seguinte forma:
'Interceptar a string
Função cutstr (str, comprimento)
Se Len (str)> Comprimento então
Cutstr = esquerda (str, comprimento) e ...
Outro
Cutstr = str
Final se
Função final
⑻. Arquivo >> Salvar
⑼. Arquivo >> Make Course.dll
3. Componentes registrados: MTS e Regsvr32.exe
Existem duas maneiras de registrar componentes: MTS e usando o RegSvr32.exe. O MTS é recomendado porque possui as seguintes vantagens:
n Dynamic Uninstall Balance para melhorar a atualização de componentes e aplicativos baseados em componentes.
n contém a capacidade de publicar e enviar componentes de eventos e filas, facilitando a combinação com vários componentes.
Para fazer com que o componente tenha as características do MTS, uma pequena mudança deve ser feita no componente. Ao desenvolver sob NT e 98, a biblioteca do tipo servidor de transações da Microsoft deve ser referenciada no projeto e, ao desenvolver no Windows 2000, a biblioteca do tipo de serviço COM+ deve ser referenciada.
⑴. RegSVR32 Registro:
Regsvr32.exe é um arquivo executável em System32.
Use a linha de comando para inserir o diretório em que o arquivo DLL do componente está localizado e execute regsvr32 dll_file_name.
Run Regedit e os itens de curso.conn_db e curso.cutstr serão encontrados no HKEY_CLASSES_ROOT, indicando que o registro do componente é bem -sucedido.
⑵. Registre -se no MTS:
①. Iniciar >> Programas >> Ferramentas Administrativas >> Serviços de componentes
②. Expanda o diretório para o seguinte estado:
③. Siga o assistente, próximo etapa até a seguinte caixa de diálogo, clique em Criar um aplicativo vazio:
④. Na caixa de diálogo a seguir, nomeie o curso do aplicativo e os outros padrões até que ele seja concluído
⑤. Expanda o aplicativo do curso, clique com o botão direito do mouse e crie um novo componente
⑥. Siga os prompts e continue.
⑦. Selecione os componentes que desenvolvemos, a próxima etapa até terminar
⑧. Neste momento, você pode descobrir que existem dois componentes adicionais no aplicativo do curso:
4. Chamando componentes no ASP
asp_use_com.asp
<%
'Asp chama o componente com
set cutstr_obj = server.createObject (curso.cutstr)
Response.write cutstr_obj.cutstr (abcdefghijk, 3) & <br>
Definir cutstr_obj = nada
Definir conn_obj = server.createObject (curso.conn_db)
conn_obj.conn_db ()
Definir conn_obj = nada
%>
Efeito:
abc...
Ahyi
Tuth
Isso significa que a chamada é bem -sucedida.
5. Desinstalar componentes
⑴.
NOTA: Primeiro, digite o diretório em que a DLL do componente está localizada e, em seguida, use o RegSvr32 –U DLL_FILE_NAME para desinstalar;
⑵. Usando componentes registrados MTS, primeiro exclua o aplicativo correspondente no serviço de componente e execute a Etapa 1 para desinstalar completamente os componentes.
6. Localização de armazenamento de componentes DLL e configurações de permissão
⑴. Só precisamos copiar o arquivo DLL compilado e outros arquivos não precisam ser processados.
⑵. Coloque a DLL fora do site, como no diretório System32, para impedir o download
⑶. Os direitos do arquivo da DLL estão definidos para a leitura do sistema e os usuários da Internet atravessam as pastas/execução de arquivos
⑷. A DLL remove todas as permissões no IIS, como leitura, acesso voluntário a scripts, etc.
Após o processamento acima, a segurança do arquivo DLL pode ser garantida.
7. outro
Como usar o objeto da ASP em um componente para portar convenientemente o código ASP para o componente COM?
5. IIS Configuração ideal
1. Guia do site: IP, porta, host virtual, conexão, log
2. Filtro ISAPI: Adicione suporte PHP e JSP
3. Guia Configuração do diretório residencial: I Is Configurações de permissão (combinado com direitos de arquivo), permissão de execução, proteção de aplicativos, mapeamento, buffer, caminho dos pais, informações de erro
4. Outras guias: erros personalizados, cabeçalhos HTTP, segurança do diretório, documentação
5. Os benefícios e desvantagens da compactação de arquivos
Vi
1. Enviar email (Jmail; Sra. SMTP)
Envie e -mails usando o Microsoft SMTP
⑴. Instale o serviço Microsoft SMTP
⑵. Configurando o serviço Microsoft SMTP
⑶. Seção de código:
Mail_smtp.asp
<%
Sub -sendmail (de quem, Towho, sujeito, corpo)
Dim Mymail
Definir mymail = server.createObject (CDONTS.Newmail)
mymail.From = de quem
mymail.to = Towho
mymail.subject = sujeito
mymail.body = corpo
mymail.send
Defina mymail = nada
final sub
%>
Esta sub -rotina aceita 4 parâmetros correspondentes aos seguintes itens.
LO endereço de e -mail do remetente
LO endereço de e -mail do destinatário de email
Assunto do LEMAIL
Conteúdo do limite
Como usar:
<%
de quem =…
Towho =…
Assunto =…
Corpo =…
Se Towho <> então
Sendmail de Who, Towho, sujeito, corpo
Final se
%>
Enviar e -mail usando o jmail
Se você estiver interessado, pode discutir isso comigo.
2. UNZIP ZIP FILS (WSCRIPT.SHELL e WINZIP LINHA DE COMANDO; COMPONENTES JAVA)
⑴. Instale o Winzip 8.1 ou acima
⑵. Instale a linha de comando winzip
⑶. Defina os direitos do arquivo do diretório de trabalho como lido, escrito e modificado por usuários da Internet
⑷. Seção de código:
unzip_a_zipfile.asp
<%
'Inicie o programa com o objeto Shell
'ZIP_PATH é o caminho para o arquivo zip específico, como c: /test.zip
'O caminho é o caminho para armazenar o arquivo desconfiado
'Ond é um parâmetro de linha de comando
set wshshell = server.createObject (wscript.shell)
edição = wshshell.run (wzunzip -ond & zip_path & path, 1, true)
'Exclua o arquivo zip
set myfileObject = server.createObject (scripting.filesystemoBject)
myFileObject.DeleteFile ZIP_PATH
'Julgue se é bem -sucedido continuar a operação
Se em questão = 0 então
'sucesso
...
outro
'falhar
...
final se
%>
3. Opere o arquivo XML
O tempo de troca é limitado, então vamos discutir em detalhes se você tiver tempo
4. Upload de arquivo
⑴. Instale o componente de upload do arquivo ASP FileUp (suporta vários uploads de arquivo, tipo de arquivo e julgamento de tamanho, alteração do nome do arquivo após o upload, etc.)
⑵. Reinicie o IIS para tornar o componente de upload eficaz
⑶. Defina os direitos do arquivo do diretório de upload para que os usuários da Internet possam ler, escrever e modificar
⑷. Seção de código
upload_file.htm
<tipo de estilo = texto/css>
<!-
.Input {Background-Color: #FFFFF; : Georgia;
A: Link {Color: #1B629C;
A: Hover {color: #ff6600;
A: Visitado {decoração de texto: nenhum}
->
</style>
<Center>
<form Enctype = Multipart/Form-Data Method = Post Action = upload_file.asp nome = upload>
<Tipo de entrada = Nome oculto = CopyrightInfo Value = http: //www.chinaasp.com>
Selecione um arquivo: <entrada de entrada = nome do arquivo = file1 class = input> <br> <br>
Selecione um arquivo: <entrada de entrada = nome do arquivo = file2 class = input> <br> <br>
</morm>
<br> <br>
<a href = javascript: document.upload.submit ();> envie </a>
</central>
upload_file.asp
<%
em erro de erro em seguida
'Defina a função que obtém o sufixo do arquivo
função getFileExtName (nome do arquivo)
POS = Instrrev (nome do arquivo,.)
Se pos> 0 então
getFileExtName = MID (nome do arquivo, POS+1)
outro
getFileExtName =
final se
Função final
'Defina a função para obter o nome correto do arquivo
função getFilename (nome do arquivo)
lente = len (nome do arquivo) -len (getFileExtName (nome do arquivo))-1
getFilename = esquerda (nome do arquivo, lente)
Função final
'Crie um objeto para o componente de upload de arquivo
set fileup = server.createObject (Chinaasp.upload)
'Leia o arquivo enviado pelo loop do usuário e salve -o no servidor
para cada f em fileup.files
'Quando o usuário não selecionar um arquivo ou o tamanho do arquivo exceder 10m, retorne à página em que o arquivo é selecionado para carregá -lo
Se f.Filename = ou F.Filesize> 10485500 Then Response.redirect upload_file.htm
'Pegue o caminho salvo
caminho = server.mappath (upload_file.asp)
caminho = esquerda (caminho, len (caminho) -15)
'Salve o arquivo
F.SAVeas Path & GetFileName (F.FileName) &. & GetFileExtName (F.Filename)
próximo
Response.Redirect upload_file.htm
%>
5. Operações de unidade/diretório/arquivo
O tempo de troca é limitado, então vamos discutir em detalhes se você tiver tempo
6. Experiência de redação e depuração ASP: como selecionar cookies e sessões, o número de armadilhas de cookies, a expiração da página e as configurações de buffer, como garantir a portabilidade, como lidar com 500 erros no servidor interno ...
1. Cookies e opções de sessão:
⑴. Características comuns
⑵. A diferença:
①. Como trabalhar
②. Condições de validade
③. Impacto no desempenho do servidor
2. Armadilha do número de cookies:
O IIS pode economizar mais de 20 cookies gerais e, em seguida, definir novos cookies.
A resposta é usar cookies 2D.
exemplo:
Teste o limite do 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 request.cookies (cookies_ & i) & <br>
próximo
%>
Efeito:
Primeiro visite test_cookies_1.asp, depois test_cookies_2.asp, o que você encontrou?
test_cookies_3.asp
<%
para i = 1 a 50
Response.cookies (Cookies_ & i) = i
próximo
para i = 1 a 50
Response.write request.cookies (cookies_ & i) & <br>
próximo
%>
Efeito:
Nenhum cookies está perdido! ! ! !
Teste o limite do 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 request.cookies (tuht) (cookies_ & i) & <br>
próximo
%>
Efeito:
Use este método para usar 201*20 = 4020 Cookies! ! ! !
3. Expiração de página e configurações de buffer
<%
'Expiração e buffer
Response.Buffer = true
Response.cacheControl = sem chache
Response.expiresabsolute = agora ()-1
Response.Expires = 0
%>
Você também pode fazer configurações no HTML:
<meta content = sem cache http-equiv = Pragma>
<meta http-equiv = expira o conteúdo = 0>
4. Garantir a transplantabilidade
⑴. Incluir arquivos
<!-#inclua arquivo = top.asp->
⑵. Use o Server.mappath para encontrar caminhos de arquivo, evite usar caminhos absolutos diretamente na página
⑶. Tente usar componentes para encapsular a lógica de negócios
5. Erro depuração do servidor interno 500
⑴. Defina o IIS para exibir mensagens de erro específicas
⑵. Depuração passo a passo, de cima para baixo
⑶. Imprima os valores de algumas variáveis importantes e verifique se são esperadas
⑷. Erros de julgamento com base na experiência
7. Operar documentos do Word
⑴. Instale o Office 2000, necessário para o Word 2000
⑵. Defina a segurança da Internet no IE: todos os controles e plug-ins do ActiveX estão ativados
⑶. Defina os direitos do arquivo do diretório de trabalho para ler/modificar/escrever a Internet e o sistema
⑷. Escreva o modelo de modelo.dot
⑸. Código específico:
OPR_DOC_INC.ASP
<%
Response.Write Dim var_num & Ch (13)
Response.Write var_num = 2 & ch (13)
Response.Write Dim Varstrings (2) e Chr (13)
Response.Write varstrings (0) = & ch (34) e redather: & chr (34) & ch (13)
Response.Write varstrings (1) = & ch (34) e data: & chr (34) & ch (13)
Response.Write Dim VarValues (2) & Ch (13)
Response.Write VarValues (0) = & Ch (34) e Redador: Tu Haitao & Ch (34) & Ch (13)
Response.Write VarValues (1) = & Ch (34) e Data: & Date () & Chr (34) & Ch (13)
%>
Sub em vez (palavra)
Set myRange = word.activedocument.content
para i = 0 para var_num - 1
Ligue para MyRange.find.execute (varstrings (i), falso, falso, falso, falso, falso, falso, falso, falso, falso, falso, falso, varvalues (i), 2)
Próximo
Final sub
OPR_DOC.ASP
<%
'Pegue o caminho salvo
caminho = server.mappath (opr_doc.asp)
caminho = esquerda (caminho, len (caminho) -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)
%>
<idioma de script = vBScript>
Em erro de erro em seguida
'Crie um documento do Word com um nome de arquivo especificado
Palavra escura
Set Word = CreateObject (Word.Application)
se err.number> 0 então
Ocorreu um erro em alerta, confirme se o arquivo existe
outro
word.visible = false
word.documents.open <%Response.Write Path%> curso.DOT
<%Response.Write W1%>
word.documents.close
Definir palavra = nada
final se
<!-#inclua arquivo = opr_doc_inc.asp->
Dim Wapp
Set wapp = createObject (word.application)
Se err.number> 0 então
Ocorreu um erro em alerta.
outro
wapp.visible = true
<%Response.Write W2%>
Ligue para (Wapp)
Definir wapp = nada
final se
</script>
Efeito: Verifique se o arquivo DOC foi gerado? Qual é a diferença entre este arquivo Doc e modelo de documento recém -criado? O redator e a data mudaram? Salve -o e veja o conteúdo do arquivo DOC recém -gerado.
Apegado:
1. Todos os códigos acima foram testados e passados no Windows 2000 Server SP2+IIS 5.0+MS SQL Server 2000+Office 2000
2. Configurar banco de dados: Nome do banco de dados Curso, User Course_User, Senha Course_Password, Driver ODBC é CUSTO_DSN, PORTA É 2433, Scripts descrevendo a estrutura da tabela estão no diretório compartilhado.
3. Faça o download do software ASP FileUp, Jmail, Winzip 8.1 e Winzip Command Line sozinho.
4. Arquivo de script de banco de dados:
Se existe (selecione * de dbo.sysObjects onde id = object_id (n '[dbo]. [output_1]') e objectProperty (id, n'isprocedure ') = 1)
Procedimento de queda [DBO]. [Output_1]
IR
se existe (selecione * de dbo.sysObjects onde id = object_id (n '[dbo]. [return_1]') e objectProperty (id, n'isprocedure ') = 1)
Procedimento de queda [DBO]. [Return_1]
IR
Se existe (selecione * de dbo.sysObjects onde id = object_id (n '[dbo]. [user_info_1]') e objectProperty (id, n'isprocedure ') = 1)
Procedimento de queda [DBO]. [User_info_1]
IR
Se existe (selecione * de dbo.sysObjects onde id = object_id (n '[dbo]. [user_info_2]') e objectProperty (id, n'isprocedure ') = 1)
Procedimento de soltar [DBO]. [User_info_2]
IR
Se existe (selecione * de dbo.sysObjects onde id = object_id (n '[dbo]. [user_info_3]') e objectProperty (id, n'isprocedure ') = 1)
Procedimento de soltar [DBO]. [User_info_3]
IR
Se existe (selecione * de dbo.sysObjects onde id = object_id (n '[dbo]. [user_info]') e objectProperty (id, n'isusertable ') = 1)
Tabela de soltar [DBO]. [User_info]
IR
Criar tabela [DBO]. [User_info] (
[id] [int] identidade (1, 1) não nula,
[user_name] [varchar] (40) colar chinês_prc_ci_as não nulo,
[senha] [varchar] (20) colar chinês_prc_ci_as não nulo
) Em [primário]
IR
ALTER TABLE [DBO].
Restrição [PK_USER_INFO] Primário Keyclustered
(
[nome de usuário]
) Em [primário]
IR
Defina o cotted_Identifier desligado
IR
Defina ANSI_NULLS OFF
IR
Criar procedimento [output_1]
@sid int Output
COMO
set @sid = 2
IR
Defina o cotted_Identifier desligado
IR
Defina ANSI_NULLS ON
IR
Defina o cotted_Identifier desligado
IR
Defina ANSI_NULLS OFF
IR
Criar procedimento [return_1]
(@User_Name Varchar (40),@senha varchar (20))
COMO
Se existe (selecione ID de user_info onde user_name =@user_name e senha =@senha)
retornar 1
outro
retornar 0
IR
Defina o cotted_Identifier desligado
IR
Defina ANSI_NULLS ON
IR
Definir Quoted_Identifier ON
IR
Defina ANSI_NULLS OFF
IR
Criar procedimento [user_info_1]
(@User_Name Varchar (40),@senha varchar (20))
COMO
Selecione ID de user_info onde user_name =@user_name e senha =@senha
IR
Defina o cotted_Identifier desligado
IR
Defina ANSI_NULLS ON
IR
Defina o cotted_Identifier desligado
IR
Defina ANSI_NULLS OFF
IR
Criar procedimento [user_info_2]
(@User_Name Varchar (40),@senha varchar (20))
COMO
Defina xact_abort ativado
Comece a transação
Exclua de user_info onde user_name =@user_name e senha =@senha
Cometer transação
Defina xact_abort off
IR
Defina o cotted_Identifier desligado
IR
Defina ANSI_NULLS ON
IR
Defina o cotted_Identifier desligado
IR
Defina ANSI_NULLS OFF
IR
Criar procedimento [user_info_3] como
Selecione * de user_info
IR
Defina o cotted_Identifier desligado
IR
Defina ANSI_NULLS ON
IR