亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > ASP > 正文

Asp深度揭密(下)

2024-05-04 11:07:46
字體:
來源:轉載
供稿:網友

四、asp組件的開發與使用:

1.    組件的特點?

l    優點:
n    調用方便,節省代碼
n    安全性高
n    支持事務處理,多組件聯合
n    運行速度快
n    升級、修改組件不需修改頁面,因此擴展性好
l    缺點:
n    開發及調試困難

2.    如何使用VB開發?

⑴.打開VB>>New PRoject>>ActiveX DLL

⑵.修改項目名稱為course



⑶.修改類模塊的名字為conn_db


⑷.Project>> References,引用COM+ Service Type Library和Microsoft Active Server Pages Object Library。

⑸.修改類代碼如下:

from www.knowsky.com

'建立數據庫連接并輸出數據庫字段
Dim Response As Response
Dim Request As Request
Dim Server As Server
Dim application As Application
Dim session As Session
    
Private Sub Class_Initialize()
Dim objContext As ObjectContext
Set objContext = GetObjectContext()
Set Response = objContext("Response")
Set Request = objContext("Request")
Set Server = objContext("Server")
Set Application = objContext("Application")
Set Session = objContext("Session")
End Sub

Sub conn_db()
Set 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

If rs.recordcount > 0 Then
For i = 1 To rs.recordcount
Response.write "<br>" & rs("user_name") & "<br>"
If rs.EOF Then Exit For
rs.movenext
Next
End If
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
End Sub

⑹.添加一新類cutstr

⑺.修改類代碼如下:

'截取字符串
Function cutstr(str, length)
If Len(str) > length Then
cutstr = Left(str, length) & "..."
Else
cutstr = str
End If
End Function

⑻.File>>Save

⑼.File>>make course.dll

3.    注冊組件:MTS和regsvr32.exe

    有兩種方式注冊組件:MTS和使用regsvr32.exe。MTS是值得推薦的,因為它具有下列優點:
n    動態卸載平衡,提高組件和基于組件的應用程序的升級性。
n    包含公布和提交事件和隊列組件的能力,使得更容易與多個組件聯合。

要想使組件具有MTS的特性,必須對組件做少許改動。在NT和98下開發時,必須在項目中引用Microsoft Transaction Server Type Library,在Windows 2000下開發,必須引用COM+ Service Type Library。

⑴.regsvr32注冊:

regsvr32.exe是system32下面的一個可執行文件,它將組件信息讀入注冊表,以便Asp調用。
使用命令行進入組件dll文件所在的目錄,執行“regsvr32 dll_file_name”即可。


運行regedit,在HKEY_CLASSES_ROOT下就會找到course.conn_db項和course.cutstr項,表明組件注冊成功。


⑵.使用MTS注冊:

①.開始>>程序>>管理工具>>組件服務

②.展開目錄至如下狀態:



③.按照向導,下一步,直到如下對話框,點擊“創建一個空的應用程序”:



④.在接下來的對話框中,為應用程序起名為“course”,其他默認,直至完成

⑤.展開course應用程序,右鍵,新建一個組件



⑥.按照提示,繼續,出現如下對話框時,選擇“導入已被注冊的組件”



⑦.選擇我們開發的組件,下一步,直至完成



⑧.這時候,可以發現course應用程序下已經多了兩個組件:



4.    在Asp中調用組件

asp_use_com.asp
<%
'asp調用com組件
set cutstr_obj=server.createobject("course.cutstr")
response.write cutstr_obj.cutstr("abcdefghijk",3)&"<br>"
set cutstr_obj=nothing

set conn_obj=server.createobject("course.conn_db")
conn_obj.conn_db()
set conn_obj=nothing
%>

效果:
abc...

ahyi

tuth

說明調用成功。

5.    卸載組件

⑴.使用regsvr32注冊的組件,使用-u開關卸載:



注意:先進入組件dll所在的目錄,然后使用“regsvr32 –u dll_file_name”卸載;卸載后重啟IIS即可。

⑵.使用MTS注冊的組件,先在“組件服務”中刪除對應的應用程序,然后再執行步驟 ⑴ 以徹底卸載組件。



6.    Dll組件存放位置和權限設定

⑴.我們只需要把編譯生成的Dll文件拷貝出來即可,其他的文件不用做處理
⑵.要把Dll放到Web站點之外,如system32目錄里,防止被下載
⑶.Dll的文件權設置為System讀取,Internet用戶遍歷文件夾/運行文件
⑷.Dll在IIS中去掉所有的權限,如讀取,腳本自愿訪問等
經過上述處理,可以確保Dll文件的安全。

7.    其他

如何在組件中使用Asp的對象以方便的將Asp代碼移植為COM組件?


五、IIS最優化配置

1.Web站點選項卡:ip、端口、虛擬主機、連接、日志
2.ISAPI篩選器:加入php和jsp支持
3.主目錄配置選項卡:I IS權限設定(結合文件權)、執行許可、應用程序保護、映射、緩沖、父路徑、出錯信息
4.其他選項卡:自定義錯誤、Http頭、目錄安全性、文檔
5.文件壓縮帶來的好處和壞處


六、其他

1.    發送郵件(jmail;Ms smtp)

使用Microsoft Smtp發送電子郵件
⑴.安裝Microsoft SMTP Service
⑵.設置Microsoft SMTP Service
⑶.代碼部分:
mail_smtp.asp
<%
sub sendmail(fromwho,towho,subject,body)
dim mymail
set mymail = server.createobject("cdonts.newmail")
mymail.from = fromwho
mymail.to = towho
mymail.subject = subject
mymail.body = body
mymail.send
set mymail = nothing
end sub
%>

該子程序接受4個與下列各條對應的參數。
l    郵件發送者的email地址
l    郵件接收者的email地址
l    郵件主題
l    郵件內容

使用方法:
<%
fromWho=…
toWho=…
Subject=…
Body=…

IF toWho <> "" THEN
sendMail fromWho, toWho, Subject, Body
END IF
%>

使用Jmail發送Email
略,有興趣可以和我探討,Jmail這個軟件我也有。

2.    解壓Zip文件(Wscript.Shell和Winzip command line;java組件)

⑴.安裝Winzip 8.1以上
⑵.安裝Winzip command line
⑶.將工作目錄的文件權設置為Internet用戶可以讀取、寫入和修改
⑷.代碼部分:
unzip_a_zipfile.asp
<%
'用shell對象啟動程序
'zip_path是具體zip文件的路徑,如c:/test.zip
'path是存放解壓后文件的路徑
'ond是命令行參數
set wshshell = server.createobject("wscript.shell")
issuccess = wshshell.run ("wzunzip -ond "&zip_path&" "&path,1,true)

'刪除zip文件
set myfileobject=server.createobject("scripting.filesystemobject")
myfileobject.deletefile zip_path

'判斷是否成功以繼續操作
if issuccess = 0 then 
   '成功
   ...
else
   '失敗
    ...
end if
%>

3.    操作xml文件

本次交流時間有限,有時間再做詳細探討

4.文件上傳

⑴.安裝文件上傳組件Asp fileup(支持多文件上傳,文件類型及大小判斷,文件上傳后改名等)
⑵.重起IIS以使上傳組件生效
⑶.設置上傳目錄的文件權為Internet用戶可以讀取、寫入和修改
⑷.代碼部分
upload_file.htm
<style type="text/CSS">
<!--
.input {background-color: #FFFFFF; border-bottom: black 1px solid;border-left: black 1px solid; border-right: black 1px solid;border-top: black 1px solid; color: #000000;font-family: Georgia; font-size: 9pt;color: midnightblue;}
a:link {color: #1B629C; text-decoration: none}
a:hover {color: #FF6600; text-decoration: underline}
a:visited {text-decoration: none}
-->
</style>

<center>
<form enctype="multipart/form-data" method="post" action="upload_file.asp" name="Upload">
<input type="hidden" name="CopyrightInfo" value="http://www.chinaasp.com">
請選擇文件:<input type="file" name="file1" class="input"><br><br>
請選擇文件:<input type="file" name="file2" class="input"><br><br>
</form>
<br><br>
<a href="Javascript:document.Upload.submit();"> 提 交 </a>
</center>


upload_file.asp
<%
on error resume next

'定義獲得文件后綴的函數
function getfileextname(filename)
pos=instrrev(filename,".")
if pos>0 then 
    getfileextname=mid(filename,pos+1)
else
    getfileextname=""
end if
end function

'定義獲取文件正名的函數
function getfilename(filename)
lens=len(filename)-len(getfileextname(filename))-1
getfilename=left(filename,lens)
end function

'創建文件上傳組件的對象
set fileup=server.createobject("chinaasp.upload")

'循環讀取用戶上傳的文件,并保存在服務器
for each f in fileup.files

'當用戶沒有選擇文件或文件大小超過10m時返回到選擇上傳文件的頁面
if f.filename="" or f.filesize>10485500 then response.redirect "upload_file.htm"

'獲取保存的路徑
path=server.mappath("upload_file.asp")
path=left(path,len(path)-15)

'保存文件
f.saveas path&getfilename(f.filename)&"."&getfileextname(f.filename)

next

response.redirect "upload_file.htm"
%>

5.驅動器/目錄/文件操作

本次交流時間有限,有時間再做詳細探討

6.    Asp編寫與調試經驗:cookies和session如何選擇、cookies數量陷阱、頁面過期和緩沖設定、移植性如何保證、如何應付內部服務器500錯誤……

1.Cookies和Session的選擇:
⑴.共同特點
⑵.不同之處:
①.工作方式
②.過期條件
③.對服務器的性能影響

2.Cookies數量陷阱:
IIS可以保存一般的cookies不超過20個,再定義新的Cookies以前的Cookies的值就丟失了,這樣對大型應用顯然局限性非常大,如何解決這個問題呢?
答案是使用二維Cookies。

例子:

    測試一維Cookies數量極限:
    test_cookies_1.asp
<%
for i=1 to 50
response.cookies("cookies_"&i)=i
next
%>


test_cookies_2.asp
    <%
for i=1 to 50
response.write request.cookies("cookies_"&i)&"<br>"
next
%>

效果:
先訪問test_cookies_1.asp,再訪問test_cookies_2.asp,,發現了什么?


test_cookies_3.asp
<%
for i=1 to 50
response.cookies("cookies_"&i)=i
next

for i=1 to 50
response.write request.cookies("cookies_"&i)&"<br>"
next
%>

效果:
沒有Cookies丟失?。。?!

測試二維Cookies數量極限:
test_cookies_4.asp
<%
for i=1 to 301
response.cookies("tuht")("cookies_"&i)=i
next
%>


test_cookies_5.asp
<%
for i=1 to 301
response.write request.cookies("tuht")("cookies_"&i)&"<br>"
next
%>

效果:
使用這種方式可以使用201*20=4020個Cookies?。。?!

3.頁面過期和緩沖設定
<%
'過期和緩沖處理
response.buffer=true
response.cachecontrol="no-chache"
response.expiresabsolute=now()-1
response.expires=0
%>
html中還可以做設定:
<meta content="no-cache" http-equiv="Pragma">
<meta HTTP-EQUIV="Expires" CONTENT="0">

4.移植性的保證
        ⑴.包含文件
        <!--#include file="top.asp" -->
        ⑵.使用server.mappath尋找文件路徑,避免在頁面中直接使用絕對路徑
        ⑶.盡量使用組件封裝業務邏輯

    5.調試內部服務器500的錯誤
        ⑴.設置IIS顯示具體的錯誤信息
⑵.分步調試,由上而下
    ⑶.打印某些重要的變量的值,檢查是否為我們預期
⑷.根據經驗來判斷錯誤

7.    操作Word文檔

⑴.安裝Office 2000,其中Word 2000必選
⑵.設置IE中Internet的安全性:ActiveX控件和插件全部啟用
⑶.設置工作目錄的文件權為Internet及System讀取/修改/寫入
⑷.編寫模版course.dot
⑸.具體代碼:
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) & "起草人:" & chr(34) & chr(13)
Response.write "varstrings(1)=" & chr(34) & "日期:" & chr(34) & chr(13)
Response.write "Dim varValues(2)" & chr(13)
Response.write "varValues(0)=" & chr(34) &"起草人:涂海濤"& chr(34) & chr(13)
Response.write "varValues(1)=" & chr(34) & "日期:"&date()& chr(34) & chr(13)
%>

Sub instead(word)
   Set myRange = word.ActiveDocument.Content
   for i=0 to Var_Num - 1 
       call myRange.Find.Execute(varStrings(i),false,false,false,false,false,false,false,false,varValues(i),2)
   Next
End Sub


opr_doc.asp
<%
'獲取保存的路徑
path=server.mappath("opr_doc.asp")
path=left(path,len(path)-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)
%>
<script language="vbscript">
On Error Resume Next
'生成指定文件名的Word文檔
Dim word
set word = CreateObject("Word.Application")
if Err.number > 0 Then
Alert "發生錯誤,請確認文件是否存在"
else
word.visible = False
word.documents.open "<%response.write path%>course.dot"
<%Response.write w1%>
word.documents.close
set word=nothing
end if

<!--#include file="opr_doc_inc.asp"-->

Dim wApp
Set wApp = CreateObject("Word.Application")
If Err.number > 0 Then
Alert "發生錯誤,請確認文件是否正確創建"
else
wApp.visible = True
<%Response.write w2%>
call instead(wApp)
set wApp=nothing
end if
</script>

效果:看看生成了doc文件嗎?這個新建的doc文件和模版文件有什么區別?起草人和日期發生了變化了嗎?保存一下,看看新生成的doc文件的內容。


附:
1.以上全部代碼在Windows 2000 Server SP2+IIS 5.0+MS SQL Server 2000+Office 2000下測試通過
2.配置數據庫:數據庫名course,用戶course_user,密碼course_password,ODBC驅動為course_dsn,端口為2433,描述表結構的腳本在共享目錄下。
3.Asp fileup、Jmail、Winzip 8.1、Winzip command line這幾個軟件請自行下載。
4.數據庫腳本文件:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[output_1]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[output_1]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[return_1]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[return_1]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[user_info_1]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[user_info_1]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[user_info_2]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[user_info_2]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[user_info_3]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[user_info_3]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[user_info]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[user_info]
GO

CREATE TABLE [dbo].[user_info] (
    [id] [int] IDENTITY (1, 1) NOT NULL ,
    [user_name] [varchar] (40) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [password] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL 
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[user_info] WITH NOCHECK ADD 
    CONSTRAINT [PK_user_info] PRIMARY KEY  CLUSTERED 
    (
        [user_name]
    )  ON [PRIMARY] 
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

CREATE PROCEDURE [output_1]
@sid int output
AS
set @sid=2
GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

CREATE PROCEDURE [return_1]
(@user_name varchar(40),@password varchar(20))
AS
if exists(select id from user_info where user_name=@user_name and password=@password)
return 1
else
return 0
GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

CREATE PROCEDURE [user_info_1]
(@user_name varchar(40),@password varchar(20))
AS
select id from user_info where user_name=@user_name and password=@password
GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

CREATE PROCEDURE [user_info_2]
(@user_name varchar(40),@password varchar(20))
AS
SET XACT_ABORT ON
BEGIN TRANSACTION
delete from user_info where user_name=@user_name and password=@password
COMMIT TRANSACTION
SET XACT_ABORT OFF
GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

CREATE PROCEDURE [user_info_3] AS
select * from user_info
GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品中文视频在线| 国产一区二区在线播放| 亚洲精品美女在线观看| 久久伊人精品一区二区三区| 亚洲日本中文字幕| 国产精品久久电影观看| 2020久久国产精品| 国产视频久久网| 色老头一区二区三区| 亚洲人成毛片在线播放| 亚洲国产精彩中文乱码av在线播放| 国产精品中文在线| 欧美成人精品在线播放| 午夜精品久久久久久久99黑人| 日韩69视频在线观看| 2023亚洲男人天堂| 欧美影院成年免费版| 97国产成人精品视频| 亚洲成人激情在线| 亚洲天堂久久av| 亚洲人成在线一二| 国产一区二区在线免费| 亚洲国内高清视频| 精品成人在线视频| 欧美大奶子在线| 8x海外华人永久免费日韩内陆视频| xxxxxxxxx欧美| 欧美性猛交xxxx富婆弯腰| 国产精品户外野外| 亚洲图片欧美日产| 成人xvideos免费视频| 高清欧美一区二区三区| 精品精品国产国产自在线| 亚洲自拍偷拍第一页| 国产亚洲欧洲高清| 57pao国产成人免费| 亚洲成人动漫在线播放| 亚洲视频第一页| 96国产粉嫩美女| 在线成人免费网站| 欧美日韩激情视频8区| 91精品国产高清久久久久久| 一本色道久久综合亚洲精品小说| 国产精品美乳在线观看| 国产一区二区三区视频| 欧美在线不卡区| 91精品综合久久久久久五月天| 精品国产一区av| 国产丝袜精品视频| 精品中文字幕在线2019| 亲爱的老师9免费观看全集电视剧| 91国偷自产一区二区三区的观看方式| 91欧美精品午夜性色福利在线| 精品视频偷偷看在线观看| 91在线免费视频| 91chinesevideo永久地址| 国产精品91久久久| 久久久噜噜噜久久中文字免| 成人国产精品av| 欧美精品免费播放| 国产精品video| 日韩天堂在线视频| 91在线免费观看网站| 亚洲欧美国产va在线影院| 日韩在线激情视频| 日韩一区二区三区国产| 欧美日韩国产在线看| 国产手机视频精品| 亚洲www永久成人夜色| 日本精品一区二区三区在线| 中文字幕日韩欧美在线| 久久噜噜噜精品国产亚洲综合| 亚洲第一av网站| 精品国产依人香蕉在线精品| 中文字幕久热精品在线视频| 少妇激情综合网| 久久免费国产视频| www.xxxx欧美| 日韩有码视频在线| 日产精品99久久久久久| 日韩电影中文字幕av| 神马国产精品影院av| 久久在精品线影院精品国产| 亚洲三级免费看| 欧美在线视频在线播放完整版免费观看| 亚洲欧美一区二区三区久久| 国产日韩欧美自拍| 亚洲三级 欧美三级| 亚洲毛片在线免费观看| 狠狠躁夜夜躁人人爽天天天天97| 97在线视频精品| 国产日韩欧美电影在线观看| 欧美性高跟鞋xxxxhd| 亚洲综合色激情五月| 日韩中文字幕久久| 成人精品视频久久久久| 久久影视电视剧免费网站清宫辞电视| 久久久久久久电影一区| 亚洲性猛交xxxxwww| 97碰在线观看| 欧美贵妇videos办公室| 欧美最猛性xxxxx免费| 亚洲成人久久久久| 亚洲国产精品女人久久久| 国产精品丝袜久久久久久不卡| 91精品久久久久久综合乱菊| xx视频.9999.com| 性色av香蕉一区二区| 欧美综合在线观看| 欧美成人一区二区三区电影| 国产视频自拍一区| 欧美日韩性视频在线| 国产成人jvid在线播放| 一区二区三区日韩在线| 日韩美女免费线视频| 亚洲www在线观看| 成人a在线观看| 自拍偷拍亚洲在线| 久久午夜a级毛片| 国产精品揄拍500视频| 欧美激情精品久久久久久久变态| 国产精品久久久| 在线播放国产一区中文字幕剧情欧美| 在线观看欧美成人| 亚洲欧美在线x视频| 中文字幕精品一区二区精品| 国产亚洲精品美女久久久久| 国产一区私人高清影院| 欧美高清激情视频| 国产精品免费久久久久影院| 精品久久在线播放| 色偷偷av亚洲男人的天堂| 97在线视频免费观看| 最新的欧美黄色| 亚洲国产欧美一区二区丝袜黑人| 日韩国产中文字幕| 国产在线999| 亚洲国产一区二区三区四区| 91夜夜揉人人捏人人添红杏| 亚洲黄色av女优在线观看| 性色av一区二区三区在线观看| 精品女厕一区二区三区| 97国产suv精品一区二区62| 国内精品一区二区三区四区| 7m精品福利视频导航| 色偷偷偷综合中文字幕;dd| 欧美自拍大量在线观看| 亚洲国产精彩中文乱码av在线播放| 精品久久久久久电影| 在线播放日韩欧美| 亚洲国产欧美一区二区丝袜黑人| 九九热这里只有精品免费看| 欧美一级免费视频| 日韩高清不卡av| 欧美丰满少妇xxxx| 91精品视频免费看| 日韩激情视频在线播放| 国产亚洲aⅴaaaaaa毛片| 国产午夜精品全部视频在线播放| 国产日韩欧美综合| 国产精品久久久av久久久| 国产精品wwwwww| 亚洲精品国精品久久99热| 奇米影视亚洲狠狠色|