幾個(gè)經(jīng)典的ASP應(yīng)用
更新時(shí)間:2007年01月10日 00:00:00 作者:
1. 下面的代碼演示了如何在服務(wù)端獲取來自客戶端瀏覽器中某一個(gè)圖片的x,y坐標(biāo),注意input控件的類型是image類型。
<form>
<Input Name="ImageMap" Type="Image" Src="ImageMap.jpg" Alt="Click Anywhere">
</form>
<%ImageMap.x = <%=Request("ImageMap.x")
ImageMap.y = <%=Request("ImageMap.y")%>
2. 利用ADODB.Stream對(duì)象,在IE瀏覽器中下載服務(wù)端上的各類文件。
即直接提示用戶下載而不是由瀏覽器打開某些文件。注意,下面的代碼拷貝到ASP文件中后,不要再添加一些非ASP代碼在頁面中:如HTML和Javascript客戶端的代碼。
<%
'--------------------------------------------
Response.Buffer = True
Dim strFilePath, strFileSize, strFileName
Const adTypeBinary = 1
strFilePath = "文件路徑 "
strFileSize = ... 文件大小,可選
strFileName = "文件名"
Response.Clear
'*******************************************8
' 需要在你的服務(wù)器上安裝 MDAC 2.6 或MDAC2.7
'8*******************************************8
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strFilePath
strFileType = lcase(Right(strFileName, 4)) '文件擴(kuò)展名
' 通過文件擴(kuò)展名判斷 Content-Types
Select Case strFileType
Case ".asf"
ContentType = "video/x-ms-asf"
Case ".avi"
ContentType = "video/avi"
Case ".doc"
ContentType = "application/msword"
Case ".zip"
ContentType = "application/zip"
Case ".xls"
ContentType = "application/vnd.ms-excel"
Case ".gif"
ContentType = "../../image/gif"
Case ".jpg", "jpeg"
ContentType = "../../image/jpeg"
Case ".wav"
ContentType = "audio/wav"
Case ".mp3"
ContentType = "audio/mpeg3"
Case ".mpg", "mpeg"
ContentType = "video/mpeg"
Case ".rtf"
ContentType = "application/rtf"
Case ".htm", "html"
ContentType = "text/html"
Case ".asp"
ContentType = "text/asp"
Case Else
'Handle All Other Files
ContentType = "application/octet-stream"
End Select
Response.AddHeader "Content-Disposition", "attachment; filename= strFileName
Response.AddHeader "Content-Length", strFileSize
Response.Charset = "UTF-8" ' 客戶端瀏覽器的字符集UTF-8
Response.ContentType = ContentType
Response.BinaryWrite objStream.Read
Response.Flush
objStream.Close
Set objStream = Nothing
%>
3.提升ASP頁面的響應(yīng)速率
在你的ASP頁面的第一行加入:
<% ENABLESESSIONSTATE = False %>
這會(huì)關(guān)閉session對(duì)象,提升你的服務(wù)器響應(yīng)速率,比較常見的問題是一個(gè)html頁面包含了兩個(gè)框架頁面(至少有一個(gè)是ASP頁面,并使用了session),這將使得必須等待某一個(gè)框架頁(當(dāng)然這個(gè)框架頁中使用了session)加載完后,另一個(gè)框架頁面才會(huì)顯示。
如果你使用代理訪問, 默認(rèn)情況下,許多代理服務(wù)器不會(huì)動(dòng)態(tài)緩存ASP頁面內(nèi)容,加入下面的代碼:
<%
Response.CacheControl = "Public"
%>
這行代碼會(huì)將ASP頁面緩存在代理服務(wù)器上,從而加快客戶端請(qǐng)求動(dòng)態(tài)頁面的響應(yīng)速率,一些不經(jīng)常變化的ASP頁面將直接從代理服務(wù)器上取得。
4. 要知道瀏覽器(IE為例)不會(huì)解析回車和換行字符,如果你用Response.write方法寫一行包含了回車和換行字符的字符串到動(dòng)態(tài)頁面中,其結(jié)果可想而知,你需要做的是:
<%
Response.Write(Replace(body, vbCrLf,"<br>"))
%>
用<br>來代替回車和換行。注意:如果回車和換行字符出現(xiàn)在form中的input/textarea等控件中,可以不必這么做。
5. 用ASP代碼寫IIS日志
<%
Response.AppendToLog "數(shù)據(jù)庫正在被訪問"
%>
執(zhí)行這段代碼后,在你的IIS日志中可能會(huì)出現(xiàn)下面的字符串:
127.0.0.1, -, 01/01/00, 12:00:34, W3SVC1,WEBSERVER,
127.0.0.1, 161342, 485, 228, 200, 0, get, /somefile.asp, 數(shù)據(jù)庫正在被訪問
注意:由于日志文件中的內(nèi)容是按逗號(hào)分隔,所以寫入的日志內(nèi)容應(yīng)避免使用逗號(hào)。
6. 如何訪問遠(yuǎn)程計(jì)算機(jī)上MDB數(shù)據(jù)庫文件
如果你用ODBC連接(DSN方式或其它方式)到遠(yuǎn)程計(jì)算機(jī)的MDB文件,這將產(chǎn)生一個(gè)錯(cuò)誤:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
大致意思是該文件可能被其他用戶訪問或無足夠的權(quán)限訪問。
下面有兩種方式,避免這個(gè)錯(cuò)誤:
方式a. 使用DAO引擎訪問
Dim File, Conn, RS
Const ReadOnly = False
File = "\\server\share\file.mdb"
Set Conn = CreateObject("DAO.DBEngine.35").Workspaces(0).OpenDatabase(File,,ReadOnly)
Set RS = Conn.OpenRecordset(SQL)
方式b. ADO + Jet OLE DB provider方式
Dim Conn, RS
Set Conn = CreateObject("ADODB.Connection")
Conn.Provider = "Microsoft.Jet.OLEDB.4.0"
Conn.Open "\\server\share\file.mdb"
Set RS = Conn.Execute(SQL)
確定在運(yùn)行ASP頁面時(shí)有足夠的訪問權(quán)限以訪問遠(yuǎn)程計(jì)算機(jī)上的MDB文件,在訪問MDB文件前需要先
登錄到遠(yuǎn)程計(jì)算機(jī),添加下面的代碼
Set UM = CreateObject("UserManager.Server")
UM.LogonUser "帳號(hào)", "口令", "域"
...
open database
...
UM.RevertToSelf
<form>
<Input Name="ImageMap" Type="Image" Src="ImageMap.jpg" Alt="Click Anywhere">
</form>
<%ImageMap.x = <%=Request("ImageMap.x")
ImageMap.y = <%=Request("ImageMap.y")%>
2. 利用ADODB.Stream對(duì)象,在IE瀏覽器中下載服務(wù)端上的各類文件。
即直接提示用戶下載而不是由瀏覽器打開某些文件。注意,下面的代碼拷貝到ASP文件中后,不要再添加一些非ASP代碼在頁面中:如HTML和Javascript客戶端的代碼。
<%
'--------------------------------------------
Response.Buffer = True
Dim strFilePath, strFileSize, strFileName
Const adTypeBinary = 1
strFilePath = "文件路徑 "
strFileSize = ... 文件大小,可選
strFileName = "文件名"
Response.Clear
'*******************************************8
' 需要在你的服務(wù)器上安裝 MDAC 2.6 或MDAC2.7
'8*******************************************8
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strFilePath
strFileType = lcase(Right(strFileName, 4)) '文件擴(kuò)展名
' 通過文件擴(kuò)展名判斷 Content-Types
Select Case strFileType
Case ".asf"
ContentType = "video/x-ms-asf"
Case ".avi"
ContentType = "video/avi"
Case ".doc"
ContentType = "application/msword"
Case ".zip"
ContentType = "application/zip"
Case ".xls"
ContentType = "application/vnd.ms-excel"
Case ".gif"
ContentType = "../../image/gif"
Case ".jpg", "jpeg"
ContentType = "../../image/jpeg"
Case ".wav"
ContentType = "audio/wav"
Case ".mp3"
ContentType = "audio/mpeg3"
Case ".mpg", "mpeg"
ContentType = "video/mpeg"
Case ".rtf"
ContentType = "application/rtf"
Case ".htm", "html"
ContentType = "text/html"
Case ".asp"
ContentType = "text/asp"
Case Else
'Handle All Other Files
ContentType = "application/octet-stream"
End Select
Response.AddHeader "Content-Disposition", "attachment; filename= strFileName
Response.AddHeader "Content-Length", strFileSize
Response.Charset = "UTF-8" ' 客戶端瀏覽器的字符集UTF-8
Response.ContentType = ContentType
Response.BinaryWrite objStream.Read
Response.Flush
objStream.Close
Set objStream = Nothing
%>
3.提升ASP頁面的響應(yīng)速率
在你的ASP頁面的第一行加入:
<% ENABLESESSIONSTATE = False %>
這會(huì)關(guān)閉session對(duì)象,提升你的服務(wù)器響應(yīng)速率,比較常見的問題是一個(gè)html頁面包含了兩個(gè)框架頁面(至少有一個(gè)是ASP頁面,并使用了session),這將使得必須等待某一個(gè)框架頁(當(dāng)然這個(gè)框架頁中使用了session)加載完后,另一個(gè)框架頁面才會(huì)顯示。
如果你使用代理訪問, 默認(rèn)情況下,許多代理服務(wù)器不會(huì)動(dòng)態(tài)緩存ASP頁面內(nèi)容,加入下面的代碼:
<%
Response.CacheControl = "Public"
%>
這行代碼會(huì)將ASP頁面緩存在代理服務(wù)器上,從而加快客戶端請(qǐng)求動(dòng)態(tài)頁面的響應(yīng)速率,一些不經(jīng)常變化的ASP頁面將直接從代理服務(wù)器上取得。
4. 要知道瀏覽器(IE為例)不會(huì)解析回車和換行字符,如果你用Response.write方法寫一行包含了回車和換行字符的字符串到動(dòng)態(tài)頁面中,其結(jié)果可想而知,你需要做的是:
<%
Response.Write(Replace(body, vbCrLf,"<br>"))
%>
用<br>來代替回車和換行。注意:如果回車和換行字符出現(xiàn)在form中的input/textarea等控件中,可以不必這么做。
5. 用ASP代碼寫IIS日志
<%
Response.AppendToLog "數(shù)據(jù)庫正在被訪問"
%>
執(zhí)行這段代碼后,在你的IIS日志中可能會(huì)出現(xiàn)下面的字符串:
127.0.0.1, -, 01/01/00, 12:00:34, W3SVC1,WEBSERVER,
127.0.0.1, 161342, 485, 228, 200, 0, get, /somefile.asp, 數(shù)據(jù)庫正在被訪問
注意:由于日志文件中的內(nèi)容是按逗號(hào)分隔,所以寫入的日志內(nèi)容應(yīng)避免使用逗號(hào)。
6. 如何訪問遠(yuǎn)程計(jì)算機(jī)上MDB數(shù)據(jù)庫文件
如果你用ODBC連接(DSN方式或其它方式)到遠(yuǎn)程計(jì)算機(jī)的MDB文件,這將產(chǎn)生一個(gè)錯(cuò)誤:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
大致意思是該文件可能被其他用戶訪問或無足夠的權(quán)限訪問。
下面有兩種方式,避免這個(gè)錯(cuò)誤:
方式a. 使用DAO引擎訪問
Dim File, Conn, RS
Const ReadOnly = False
File = "\\server\share\file.mdb"
Set Conn = CreateObject("DAO.DBEngine.35").Workspaces(0).OpenDatabase(File,,ReadOnly)
Set RS = Conn.OpenRecordset(SQL)
方式b. ADO + Jet OLE DB provider方式
Dim Conn, RS
Set Conn = CreateObject("ADODB.Connection")
Conn.Provider = "Microsoft.Jet.OLEDB.4.0"
Conn.Open "\\server\share\file.mdb"
Set RS = Conn.Execute(SQL)
確定在運(yùn)行ASP頁面時(shí)有足夠的訪問權(quán)限以訪問遠(yuǎn)程計(jì)算機(jī)上的MDB文件,在訪問MDB文件前需要先
登錄到遠(yuǎn)程計(jì)算機(jī),添加下面的代碼
Set UM = CreateObject("UserManager.Server")
UM.LogonUser "帳號(hào)", "口令", "域"
...
open database
...
UM.RevertToSelf
相關(guān)文章
asp自動(dòng)補(bǔ)全html標(biāo)簽自動(dòng)閉合(正則表達(dá)式)
asp自動(dòng)補(bǔ)全html標(biāo)簽自動(dòng)閉合,方便asp截取帶有html標(biāo)簽的內(nèi)容,防止頁面變形2012-10-10asp在iis7報(bào)錯(cuò)行號(hào)不準(zhǔn)問題的解決方法
這篇文章主要介紹了asp在iis7報(bào)錯(cuò)行號(hào)不準(zhǔn)問題的解決方法,需要的朋友可以參考下2020-08-08FpHtmlEnCode 函數(shù)之標(biāo)題過濾特殊符號(hào)的代碼
FpHtmlEnCode 函數(shù)之標(biāo)題過濾特殊符號(hào)的代碼...2007-09-09asp ADO GetString函數(shù)與用GetString來提高ASP的速度
沒想到asp下有g(shù)etstring這個(gè)東西,看樣子不熟悉這塊啊,以后考慮用這個(gè),應(yīng)該不錯(cuò),另外還有g(shù)etrows等,都是asp下提高性能不錯(cuò)的函數(shù)。2007-12-12