- Login
帳號:
密碼:
ASP MENU
線上教學
   ASP 教學
VB.NET 教學
JSP 教學
JAVA 教學
完整 ASP 教學
程式下載
   ASP 程式下載
提供 ASP 程式
程式量身訂做
   收費標準
填寫需求表
討論交流專區
   程式討論區
電腦資訊交流
工作機會
   社會人就職情報
汎亞人力銀行
大台中人力銀行
大高雄人力銀行
相關連結
   ASP 虛擬空間
ASP 相關網站
聯絡我們
   意見信箱
加入會員程式討論區線上購物回首頁
ASP 教學
用ASP和SQL實現基於Web的事件日曆
本文介紹如何建立基於Web的日曆,同時為不熟悉Active Server Pages(ASP)、SQL和ADO的開發者提供建立Web站點的過程介紹,也為有經驗的開發者提供了Web站點可伸縮性方面的技巧。

隨著網絡應用的發展,基於Web的日曆越來越受到人們的重視,對於顯示諸如最後期限或日程安排之類的重要事件,或顯示誰在什麼時候休假,基於Web的日曆都是有用的。本文描述了如何使用IIS和SQL Server內的ASP建立一個非常簡單的基於Web的日曆,並允許你與其他人共享你的日程表或管理一組人員的日曆。

建立SQL服務器端
對Web日曆而言,我們在服務器端僅需保存表明事件性質的一個文本字符串即可,字符串最長為100個字符。設計源代碼如下:

Calendar.sql
-- 創建表
create table Schedule
(
idSchedule smallint identity primary key,
dtDate smalldatetime not null,
vcEvent varchar(100) not null
)
go
-- 存儲過程
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

設計ASP客戶端
下圖是Web日曆的主要用戶界面,用戶可以看到哪些事件是已安排的。另外,使用底部的鍊接可以在日曆中按月前後翻動。




ASP的實現代碼如下:

header.asp
<@ LANGUAGE="VBSCRIPT"
ENABLESESSIONSTATE = False %>
<%
' 目的:表頭包括用來啟動所有頁的文件
' 還包括全局函數
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 頁面與 SQL 數據庫相連接。首先我們要創建一個到數據庫的連接。為了獲得記錄集,我們要調用 Connection 對象的 Execute 方法,將希望執行的命令的文本字符串傳入,一旦有了記錄集,就可以在其中循環。header.asp 包含獲得數據連接的函數,這意味著如果數據源有變化,我們只有一個位置需要編輯連接信息(服務器、用戶和口令)。請注意,作為結果,我們必須在函數的末尾使用 set 命令傳出新連接。

優化性能
ASP使建立Web頁面變得十分容易,但如果想建立一個可以適應大量用戶的站點,你就需要仔細考慮編碼。下面筆者將為讀者介紹增強基於Web日曆可伸縮性的幾種方法,這些方法也可用於提高任何基於ASP的Web站點的性能。

1.SQL優化

提高站點性能的一個簡單方法是給 Schedule表的date字段添加一個索引,這樣,它會在給定日期之間進行查找,因而將加快 GetEvents的存儲過程。

對於小型站點,我們可以將 SQL 與 IIS 安裝在同一服務器上,一旦站點訪問量開始增長,我們可將 SQL 移動到其自身的服務器上,當訪問量進一步增長時,我們可以添加均指向同一 SQL 服務器的多個 IIS 服務器。如果 SQL 服務器的通信量過度增長時,還可以將數據分割到不同的服務器上,我們可以將奇數月份分配到一台服務器,將偶數月份分配到另一台服務器上,當然,這需要修改 header.asp 中的 GetDataConnection,以便它為你提供基於此月份的正確連接。

2.ASP 優化

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

<<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

當然,在 Events.asp 頁更改某個月份的事件時,你需要清空該月份的應用程序變量,以便反映這些事件的更改狀況。

安全性
有幾種方法可實現此站點上的安全性。對於 Intranet 站點,基於Windows NT的驗證是最容易設置的,其原因是你的用戶將很可能已經登錄到網絡。你可讓所有用戶查看 Event Calendar 頁,但是只有管理員能訪問Add/Remove Events 頁。

如果關心審計,你可以容易地修改 AddEvent 和 DeleteEvent 過程將其信息保存到審計表中。你還可以確保 IIS 為每個頁命中的查詢字符串和用戶進行日誌記錄,然後逐個分析日誌以確定何人於何時做了什麼,這是非常簡單的。

本文演示了建立基於 Web 日曆的基本過程,該程序雖然簡單,但是可以很容易地將其擴展為功能完備的站點。限於篇幅,筆者不再深入介紹,感興趣的讀者可到InfoCD第八期光盤中找到具體實現步驟。



頂端
本網頁最佳瀏覽模式為:瀏覽器 IE4.0 以上    解析度: 800 x 600
Copyright © 2000-2017 COOLASP All Rights Reserved