主頁(yè) > 知識(shí)庫(kù) > 用ASP和SQL實(shí)現(xiàn)基于Web的事件日歷

用ASP和SQL實(shí)現(xiàn)基于Web的事件日歷

熱門標(biāo)簽:服務(wù)器配置 銀行業(yè)務(wù) 團(tuán)購(gòu)網(wǎng)站 Linux服務(wù)器 阿里云 Mysql連接數(shù)設(shè)置 科大訊飛語(yǔ)音識(shí)別系統(tǒng) 電子圍欄
本文介紹如何建立基于Web的日歷,同時(shí)為不熟悉Active Server Pages(ASP)、SQL和ADO的開(kāi)發(fā)者提供建立Web站點(diǎn)的過(guò)程介紹,也為有經(jīng)驗(yàn)的開(kāi)發(fā)者提供了Web站點(diǎn)可伸縮性方面的技巧。 

隨著網(wǎng)絡(luò)應(yīng)用的發(fā)展,基于Web的日歷越來(lái)越受到人們的重視,對(duì)于顯示諸如最后期限或日程安排之類的重要事件,或顯示誰(shuí)在什么時(shí)候休假,基于Web的日歷都是有用的。本文描述了如何使用IIS和SQL Server內(nèi)的ASP建立一個(gè)非常簡(jiǎn)單的基于Web的日歷,并允許你與其他人共享你的日程表或管理一組人員的日歷。 

建立SQL服務(wù)器端 

對(duì)Web日歷而言,我們?cè)诜?wù)器端僅需保存表明事件性質(zhì)的一個(gè)文本字符串即可,字符串最長(zhǎng)為100個(gè)字符。設(shè)計(jì)源代碼如下: 

Calendar.sql
-- 創(chuàng)建表
create table Schedule
(
idSchedule smallint identity primary key,
dtDate smalldatetime not null,
vcEvent varchar(100) not null
)
go
-- 存儲(chǔ)過(guò)程
create procedure GetSchedule (@nMonth tinyint, @nYear smallint)
as
select idSchedule, convert(varchar, datepart(dd, dtDate)) 'nDay', vcEvent
from Schedule
where datepart(yy, dtDate) = @nYear and datepart(mm, dtDate) = @nMonth
order by datepart(dd, dtDate)
go
create procedure AddEvent (@vcDate varchar(20), @vcEvent varchar(100))
as
insert Schedule
select @vcDate, @vcEvent 
go
create procedure DeleteEvent (@idSchedule smallint)
as
delete Schedule where idSchedule = @idSchedule
go  


設(shè)計(jì)ASP客戶端 

下圖是Web日歷的主要用戶界面,用戶可以看到哪些事件是已安排的。另外,使用底部的鏈接可以在日歷中按月前后翻動(dòng)。 





ASP的實(shí)現(xiàn)代碼如下: 

header.asp
@ LANGUAGE="VBSCRIPT" 
ENABLESESSIONSTATE = False %>

' 目的:表頭包括用來(lái)啟動(dòng)所有頁(yè)的文件
' 還包括全局函數(shù)
Option Explicit
Response.Buffer = True
Response.Expires = 0
sub Doheader(strTitle)
%>
html>
   head>
   META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
   title>Event Calendar - %= strTitle %>/title>
   /head>
   body bgcolor="white" link="blue" alink="blue" vlink="blue">
   basefont face="Verdana, Arial">
   center>h1>Event Calendar/h1>
   h3>%= strTitle %>/h3>

end sub
function GetDataConnection()
dim oConn, strConn
Set oConn = Server.CreateObject("ADODB.Connection")
strConn = "Provider=SQLOLEDB; Data Source=adspm; Initial Catalog=TeamWeb; "
strConn = strConn  "User Id=TeamWeb; Password=x"
oConn.Open strConn
set GetDataConnection = oConn
end function 
%>  


利用ADO,我們可以很容易地將 ASP 頁(yè)面與 SQL 數(shù)據(jù)庫(kù)相連接。首先我們要?jiǎng)?chuàng)建一個(gè)到數(shù)據(jù)庫(kù)的連接。為了獲得記錄集,我們要調(diào)用 Connection 對(duì)象的Execute方法,將希望執(zhí)行的命令的文本字符串傳入,一旦有了記錄集,就可以在其中循環(huán)。header.asp 包含獲得數(shù)據(jù)連接的函數(shù),這意味著如果數(shù)據(jù)源有變化,我們只有一個(gè)位置需要編輯連接信息(服務(wù)器、用戶和口令)。請(qǐng)注意,作為結(jié)果,我們必須在函數(shù)的末尾使用set命令傳出新連接。 

優(yōu)化性能 

ASP使建立Web頁(yè)面變得十分容易,但如果想建立一個(gè)可以適應(yīng)大量用戶的站點(diǎn),你就需要仔細(xì)考慮編碼。下面筆者將為讀者介紹增強(qiáng)基于Web日歷可伸縮性的幾種方法,這些方法也可用于提高任何基于ASP的Web站點(diǎn)的性能。 

1.SQL優(yōu)化 

提高站點(diǎn)性能的一個(gè)簡(jiǎn)單方法是給 Schedule表的date字段添加一個(gè)索引,這樣,它會(huì)在給定日期之間進(jìn)行查找,因而將加快 GetEvents的存儲(chǔ)過(guò)程。 

對(duì)于小型站點(diǎn),我們可以將 SQL 與 IIS 安裝在同一服務(wù)器上,一旦站點(diǎn)訪問(wèn)量開(kāi)始增長(zhǎng),我們可將 SQL 移動(dòng)到其自身的服務(wù)器上,當(dāng)訪問(wèn)量進(jìn)一步增長(zhǎng)時(shí),我們可以添加均指向同一 SQL 服務(wù)器的多個(gè) IIS 服務(wù)器。如果 SQL 服務(wù)器的通信量過(guò)度增長(zhǎng)時(shí),還可以將數(shù)據(jù)分割到不同的服務(wù)器上,我們可以將奇數(shù)月份分配到一臺(tái)服務(wù)器,將偶數(shù)月份分配到另一臺(tái)服務(wù)器上,當(dāng)然,這需要修改 header.asp 中的 GetDataConnection,以便它為你提供基于此月份的正確連接。 

2.ASP 優(yōu)化 

ASP 解釋的主要優(yōu)化方法將是利用高速緩存頁(yè)面,以便無(wú)需每次讀取都對(duì)它們進(jìn)行解釋。做到這一點(diǎn)的最簡(jiǎn)單的方法是借助 ASP Application 對(duì)象。要做到這一點(diǎn),你只需將HTML保存到含有月份和年份名稱的應(yīng)用程序變量(例如 Calendar07-2000)中。然后,當(dāng)顯示 Event Calendar 頁(yè)時(shí),你首先檢查一下看看日歷是否已經(jīng)保存在應(yīng)用程序變量中,如果是,則只需檢索它,這種方式會(huì)大大加快網(wǎng)站的查詢過(guò)程。下面的代碼顯示了這個(gè)工作過(guò)程: 

do header>>
ShowCalendar(nMonth, nYear)
do Footer>>
sub ShowCalendar(nMonth, nYear)
if Application("Calendar"  nMonth  "-"  nYear) = "" then
Build Calendar>>
Application("Calendar"  nMonth  "-"  nYear) = Calendar>>
End if
Response.Write Application("Calendar"  nMonth  "-"  nYear) 
End sub  


當(dāng)然,在 Events.asp 頁(yè)更改某個(gè)月份的事件時(shí),你需要清空該月份的應(yīng)用程序變量,以便反映這些事件的更改狀況。 

安全性 

有幾種方法可實(shí)現(xiàn)此站點(diǎn)上的安全性。對(duì)于 Intranet 站點(diǎn),基于Windows NT的驗(yàn)證是最容易設(shè)置的,其原因是你的用戶將很可能已經(jīng)登錄到網(wǎng)絡(luò)。你可讓所有用戶查看 Event Calendar 頁(yè),但是只有管理員能訪問(wèn)Add/Remove Events 頁(yè)。

標(biāo)簽:蚌埠 大理 衡水 江蘇 廣元 衢州 萍鄉(xiāng) 棗莊

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《用ASP和SQL實(shí)現(xiàn)基于Web的事件日歷》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266