· Khái niệm: ActiveX Server Component (trước đây được gọi là Automation Server) được thiết kế để chạy trên Web server như là một phần của ứng dụng trên Web. Component chứa đựng những đặc trưng chung mà chúng ta không cần phải tạo lại những đặc trưng này.Component thường được gọi từ những file .asp. Tuy nhiên, chúng ta có thể gọi những component này từ các source khác nhau như là: một ứng dụng ISAPI, một server component hoặc một ngôn ngữ tương thích OLE (OLE-compatible language).
Bạn đang xem trước 20 trang tài liệu Tìm hiểu về ngôn ngữ HTML, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
uøy choïn, trong ñoù baïn coù theå khai baùo caùc script ñaùp öùng bieán coá, caùc ñoái töôïng coù taàm vöïc möùc application (öùng duïng) hay session. Ñaây khoâng phaûi laø moät file ñöôïc nhìn thaáy bôûi caùc user, traùi laïi noù chöùa nhöõng thoâng tin ñöôïc söû duïng bôûi öùng duïng moät caùch toaøn cuïc. File naøy phaûi ñöôïc ñaët teân laø Global.asa vaø ñöôïc ñaët trong thö muïc goác cuûa öùng duïng. Moãi öùng duïng chæ coù moät file Global.asa duy nhaát. Moät file Global.asa coù theå chöùa caùc thaønh phaàn sau: Application events, Session events, ñònh nghóa caùc ñoái töôïng.
Neáu baïn vieát nhöõng script khoâng ñöôïc bao bôûi tag , hoaëc ñònh nghóa caùc ñoái töôïng khoâng coù taàm vöïc application hay session thì server seõ traû veà loãi. Server boû qua nhöõng script coù chöùa nhöõng thaønh phaàn HTML maø caùc bieán coá application vaø session khoâng theå xöû lyùù nhö trong moät file HTML thoâng thöôøng.
Nhöõng script trong file Global.asa coù theå ñöôïc vieát bôûi baát cöù ngoân ngöõ naøo coù hoå trôï script. Neáu caùc ñoaïn script ñöôïc vieát bôûi cuøng moät ngoân ngöõ thì coù theå keát hôïp chuùng trong moät tag duy nhaát.
Khi baïn thay ñoåi file Global.asa vaø ghi laïi noù thì server hoaøn taát vieäc xöû lyù nhöõng yeâu caàu öùng duïng hieän thôøi tröôùc khi noù bieân dòch laïi file Global.asa, trong khoaûng thôøi gian naøy server töø choái caùc yeâu caàu khaùc vaø ra thoâng baùo: "The request cannot be processed while the application is being restarted". Sau khi nhöõng request hieän taïi ñöôïc xöû lyù xong, server xoùa boû taát caû caùc session ñang chaïy, goïi bieán coá Session_OnEnd töông öùng vôùi moãi session maø noù xoùa, tieáp theo goïi bieán coá Application_OnEnd. File Global.asa ñöôïc bieân dòch laïi. Request cuûa user tieáp theo seõ khôûi ñoäng öùng duïng trôû laïi (goïi bieán coá Application_OnStart vaø Session_OnStart).
Tuy nhieân khi löu laïi nhöõng file ñöôïc include trong Global.asa thì khoâng gaây neân bieán coá naøy, muoán khôûi ñoäng laïi öùng duïng phaûi löu laïi file Global.asa.Nhöõng thuû tuïc ñònh nghóa trong Global.asa chæ coù theå goïi töø caùc script trong caùc bieán coá: Application_OnStart, Application_OnEnd, Session_OnStart, Session_OnEnd. Caùc thuû tuïc naøy khoâng theå goïi töø caùc trang ASP trong öùng duïng döïa treân ASP.
Ñeå "share" caùc thuû tuïc giöõa caùc file ASP khaùc nhau trong moät öùng duïng, caàn ñònh nghóa chuùng trong moät file rieâng roài duøng leänh Include ñeå cheøn chuùng vaøo trong trang ASP coù goïi thuû tuïc ñoù. Nhöõng file include thöôøng coù phaàn môû roäng laø .inc.
Caùc ví duï veà file Global.asa trong phaàn naøy duøng VBScript nhö laø ngoân ngöõ Script chính, maëc duø nhö ñaõ noùi caùc script coù theå vieát baèng nhieàu ngoân ngöõ khaùc (ví duï Jscript…).
2. Khai Baùo Ñoái Töôïng Vaø Caùc Bieán Coá:
° Bieán coá Application :
Application_OnStart: Xaûy ra tröôùc khi session ñaàu tieân ñöôïc taïo, nghóa laø tröôùc bieán coá Session_OnStart, khi coù yeâu caàu ñaàu tieân ñeán moät trang ASP cuûa öùng duïng. Chæ coù caùc ñoái töôïng Application hay Server Build-in laø coù theå söû duïng. Caùc tham khaûo ñeán ñoái töôïng Session, Request, Response seõ gaây ra loãi.
Cuù phaùp:
Sub Application_OnStart
…
End Sub
- Tham soá ScriptLanguage: chæ ñònh ngoân ngöõ Script duøng ñeå vieát cript.Thöôøng söû duïng bieán coá naøy ñeå khôûi ñoäng moät soá bieán toaøn cuïc, thoâng tin heä thoáng.
Application_OnEnd: Xaûy ra tröôùc khi ñoùng öùng duïng, sau khi bieán coá Session_OnEnd cuoái cuøng xaûy ra. Chæ coù caùc ñoái töôïng Application hay Server Build-in laø coù theå söû duïng.
Cuù phaùp:
Sub Application_OnEnd
…
End Sub
- Tham soá: ScriptLanguage chæ ñònh ngoân ngöõ Script duøng ñeå vieát script.Thöôøng söû duïng bieán coá naøy ñeå xoùa, caäp nhaät laïi caùc thoâng tin heä thoáng.
° Bieán coá Session: Web server töï ñoäng taïo moät session cho moät ngöôøi sö duïng khi moät trang Web trong öùng duïng ñöôïc yeâu caàu. Server seõ xoùa boû moät session khi noù Time-out hoaëc method Abandon ñöôïc goïi.
Nhöõng bieán coá Session : Session_OnStart, Session_OnEnd.
Session_OnStart: Xaûy ra khi server taïo moät session môùi. Baïn phaûi khai baùo caùc bieán coù taàm vöïc session trong bieán coá. Ta coù theå tham khaûo taát caû nhöõng ñoái töôïng Build-In trong bieán coá naøy.
Cuù phaùp:
Sub Session_OnStart
…
End Sub
- Tham soá: ScriptLanguage chæ ñònh ngoân ngöõ Script duøng ñeå vieát script.Ta coù theå goïi phöông thöùc Redirect trong bieán coá Session_OnStart, chaúng haïn ñeå baûo ñaûm raèng NSD luoân baét ñaàu töø moät trang duy nhaát. Khi NSD muoán môû ngay moät trang khaùc nhau trang ñöôïc chæ ñònh thì redirect sang ñaõ chæ ñònh. Tuy nhieân caàn chuù yù laø nhöõng Browser khoâng hoå trôï cookies thì noù seõ khoâng löu laïi sessionID cuûa noù neân baát cöù khi naøo môû moät trang môùi thì server laïi taïo moät session môùi.
Ví duï:
Sub Session_OnStart
Application.Lock
Application("AccessNumber")=Application("AccessNumber")+1
Application.Unlock
End Sub
Session_OnEnd: Xaûy ra khi moät session ñöôïc ñoùng hoaëc TimeOut. Duøng bieán coá naøy ñeå xoùa caùc bieán ñaõ ñaët trong quaù trình söû duïng cuûa User
Cuù phaùp:
Sub Session_OnEnd
…
End Sub
° Khai baùo caùc :
Baïn coù theå taïo caùc ñoái töôïng coù taàm vöïc session hay application trong file Global.asa. ñoái töôïng naøy thöïc söï ñöôïc taïo ra khi server xöû lyù moät script coù tham khaûo ñeán noù.
Cuù phaùp:
….
Tham soá:
Scope: chæ ñònh taàm vöïc cuûa ñoái töôïng, laø "session" hay "application"
Identifier: teân instance cuûa ñoái töôïng.
ProgID: moät danh ñònh ñöôïc keát hôïp vôùi danh ñònh class. ProgID hay ClassID phaûi ñöôïc chæ ñònh trong khai baùo
ClassID: danh ñònh duy nhaát cho moät ñoái töôïng lôùp OLE. ProgID hay ClassID phaûi ñöôïc chæ ñònh trong khai baùo .
Vd:
CLASSCID=”Clsid:79176FBO-B7F2-11EF-00AA006D2776”ID=”spnTest” CODEBASE =”http:// activeX.microsoft.com/controls/mspert10.cab”>
V. CAÙC ÑOÁI TÖÔÏNG (OBJECT) TRONG ASP:
Khi vieát caùc script ta thöôøng coù nhu caàu thöïc hieän moät soá taùc vuï naøo ñoù theo moät qui taéc cô baûn naøo ñoù. Khi ñoù thöôøng xuaát hieän nhöõng coâng vieäc laëp ñi laëp laïi nhieàu laàn, töø ñoù xuaát hieän nhu caàu taïo ra caùc ñoái töôïng coù khaû naêng thöïc hieän nhöõng coâng vieäc cô baûn ñoù. Moãi ñoái töôïng laø moät keát hôïp giöõa laäp trình vaø döõ lieäu maø coù theå xöû lyù nhö moät ñôn vò thoáng nhaát.
Ñoái vôùi phaàn lôùn caùc ñoái töôïng, ñeå söû duïng ñöôïc noù ta phaûi taïo ra caùc instance cho noù. Tuy nhieân ASP coù saün naêm ñoái töôïng maø ta coù theå duøng ñöôïc maø khoâng caàn phaûi taïo caùc instance. Chuùng ñöôïc goïi laø caùc build-in object, bao goàm :
° Request : Laø ñoái töôïng chöùa caùc thoâng tin ôû Web browser göûi yeâu caàu tôùi Web server.
° Response : Laø ñoái töôïng chöùa thoâng tin töø server göûi veà cho Web browser.
° Server : Laø moâi tröôøng maùy server nôi ASP ñang chaïy, chöùa caùc thoâng tin vaø taùc vuï veà heä thoáng.
°Apllication : Ñaïi dieän cho öùng duïng Web cuûa ASP, chöùa script hieän haønh.
° Session : laø moät bieán ñaïi dieän cho user.
1. Ñoái töôïng Request:
Ñònh nghóa:
Vôùi ñoái töôïng Request, Caùc öùng duïng ASP coù theå laáy deã daøng caùc thoâng tin gôûi tôùi töø user.
Ví duï khi user submit thoâng tin töø moät form.
Ñoái töôïng Request cho pheùp truy xuaát tôùi baát kyø thoâng tin naøo do user gôûi tôùi baèng giao thöùc HTTP nhö:
Caùc thoâng tin chuaån naèm trong caùc bieán Server
Caùc tham soá gôûi tôùi baèng phöông thöùc POST
Caùc tham soá gôûi tôùi baèng phöông thöùc GET
Caùc Cookies .
Caùc Client Certificates.
Cuù phaùp toång quaùt: Request.(CollectionName)(Variable)
Ñoái töôïng Request: Coù 5 Collection .
Client Certificate: Nhaän Certtification Fields töø Request cuûa Web Browser. Neáu Web Browser söû duïng http:// ñeå connect vôùi server, browser seõ gôûi certification fields.
Query String: Nhaän giaù trò cuûa caùc bieán trong HTML query string. Ñaây laø giaù trò ñöôïc gôûi leân theo sau daáu chaám hoûi(?) trong HTML Request.
Form: Nhaän caùc giaù trò cuûa caùc phaàn töû treân form söû duïng phöông thöùc POST.
Cookies: Cho pheùp nhaän nhöõng giaù trò cuûa cookies trong moät HTML Request.
Server Variable: nhaän caùc giaù trò cuûa caùc bieán moâi tröôøng.
° Moät ví duï laáy thoâng tin töø form:
HTML form laø caùch thöùc thoâng thöôøng ñeå trao ñoåi thoâng tin giöõa Web Server vaø user. HTML form cung caáp nhieàu caùch nhaäp thoâng tin cuûa user nhö thoâng qua: textboxes, Radio button, Check boxes… vaø hai phöông thöùc gôûi thoâng tin laø POST vaø GET.
ÖÙng duïng Asp coù theå söû duïng form ñeå taïo ra söï lieân laïc döõ lieäu giöõa caùc trang theo moät trong 3 caùch:
File .html chöùa caùc form vaø gôûi giaù trò cuûa noù tôùi moät file . asp.
File .asp coù theå taïo form vaø gôûi giaù trò cuûa noù tôùi moät file .asp.
File .asp coù theå taïo form vaø gôûi thoâng tin tôùi ngay chính noù.
Khi laáy thoâng tin töø form ñoái töôïng Request coù theå laáy caùc loaïi thoâng tin khaùc nhau baèng caùch " Söû duïng Query String". Vieäc söû duïng QueryString Collection laøm cho vieäc truy xuaát thoâng tin trôû neân deã daøng hôn. Neáu phöông thöùc gôûi töø form laø GET, thì QueryString chöùa toaøn boä thoâng tin gôûi tôùi nhö caùc tham soá ñi ñaèng sau daáu chaám hoûi(?) trong address box. Neáu phöông thöùc gôûi laø POST thì thoâng tin göûi ñi seõ daáu ñi.
Gôûi thoâng tin trong cuøng moät file.asp:Asp cho pheùp moät file.asp chöùa form, khi user ñieàn caùc giaù trò vaøo formroài gôûi thì chính file .asp ñoù seõ nhaän caùc thoâng tin naøy vaø xöû lyù.
Ví duï: File " Example.asp" coù noäi dung nhö sau:
Login user
<%
If IsEmpty(Request("Email") ) = 0 then
Msg= " Vui loøng ñaùnh ñòa chæ cuûa baïn"
Else If InStr(Request("Email"),"@") = 0 then
Msg="Vui loøng ñaùnh ñòa chæ trong Servername@location"
Else
Msg=" Giaù trò ôû ñòa chæ seõ ñöôïc thöïc thi"
End if
%>
E.mail:
Khi user ñieàn vaøo form ñòa chæ Email vaø Submit thì file example.asp naøy seõ nhaän thoâng tin baèng phaùt bieåu: Value="
Ñoaïn script naøy seõ tuøy thuoäc vaøo giaù trò chuoãi kyù töï nhaän ñöôïc coù chöùa kyù töï @ hay khoâng ñeå traû lôøi vôùi user cuõng chính baèng vaên baûn HTML nhuùng trong example.asp.
2. Ñoái töôïng Response:
Ñònh nghóa : Vieäc gôûi thoâng tin tôùi cho user seõ ñöôïc thöïc hieän nhôø ñoái töôïng Response.
Cuù phaùp toång quaùt: Response.Collection| property| method
Collection cuûa ñoái töôïng Response :
Cookies: Xaùc ñònh giaù trò bieán Cookies.Neáu Cookies ñöôïc chæ ra khoâng toàn taïi, noù seõ ñöôïc taïo ra. Neáu noù toàn taïi thì noù ñöôïc nhaän giaù trò môùi.
Caùc Properties:
Buffer: Chæ ra trang Web output ñöôïc giöõ laïi ñeäm buffer hay khoâng. Khi moät trang ñöôïc ñeäm laïi, Server seõ khoâng gôûi moät ñaùp öùng naøo cho Browser cho ñeán khi taát caû caùc script treân trang hieän taïi ñaõ ñöôïc thöïc thi xong hay phöông phaùp FLUSH or END ñöôïc goïi.
ContentType: Chæ ra HTML content type cho response. Neáu khoâng coù ContentType naøo ñöôïc chæ ra, trò maëc nhieân laø “text/HTML”.
Expires: Chæ ñònh soá thôøi gian tröôùc khi moät trang ñöôïc cached treân moät browser heát haïn.
ExpiresAbsolute: Chæ ra ngaøy giôø cuûa moät trang ñöôïc cache treân browser heát haïn.
Status: Chæ ra giaù trò traïng thaùi ñöôïc Server. Giaù trò traïng thaùi ñöôïc ñònh nghóa trong ñaëc taû HTTP.
Caùc Methods:
AddHeader: Theâm moät HTML headervôùi moät giaù trò ñöôïc chæ ñònh. Phöông thöùc naøy luoân luoân theâm môùi moät header vaøo response. Noù seõ khoâng thay theá nhöõng header coù saün cuøng teân vôùi header môùi.
AppendToLog: Theâm moät chuoãi vaøo cuoái file Log cuûa Web server cho request naøy.
BinaryWrite: Xuaát thoâng tin ra output HTML daïng binary.
Clear: Xoùa ñeäm output HTML.Tuy nhieân , phöông thöùc naøy chæ xoaù response body maø khoâng xoaù response header.Phöông naøy seõ sinh loãi neáu nhö Response.Buffer chöa set thaønh TRUE.
End: Döøng xöû lyù file .asp vaø traû veà keát quaû hieän taïi.
Flush: Gôûi thoâng tin trong buffer cho client. Phöông thöùc naøy seõ sinh loãi neáu Response.Buffer chöa set thaønh TRUE.
Redirect: Gôûi moät thoâng baùo cho browser ñònh höôùng laïi ñeán moät URL khaùc.
Write: Ghi moät bieán ra HTML output nhö laø moät chuoãi.
Ví duï:
- Ñaët Response.Buffer = True cho pheùp ñeäm output cho ñeán khi xöû lyù xong heát trang.
- Response.Write "Ñaây laø thoâng baùo xuaát ra baèng Response"
seõ xuaát ra chuoãi kyù töï giöõa hai daáu nhaùy keùp.
- Response.Clear : xoùa heát noäi dung cuûa Buffer (chæ söû duïng ñöôïc khi Response.Buffer = True)
- Response.Redirect "WebPage1.Html" seõ xoùa trang hieän taïi vaø thay baèng trang WebPage1.Html taïi Web Browser treân maùy Client.
3. Ñoái töôïng session:
Ñònh nghóa: Chuùng ta coù theå söû duïng 1 object Session ñeå löu tröõ thoâng tin caàn thieát cho 1 user. Nhöõng bieán ñöôïc löu tröõ trong object vaãn toàn taïi khi user nhaûy töø trang naøy sang trang khaùc trong öùng duïng.Web server töï ñoäng taïo object session khi user chöa coù session yeâu caàu moät trang Web. Khi session naøy keát thuùc thì caùc bieán trong noù ñöôïc xoùa ñeå giaûi phoùng taøi nguyeân. Caùc bieán session coù taàm vöïc trong session ñoù maø thoâi.
Cuù phaùp toång quaùt: Session.property | method
Caùc Properties:
SessionID: Traû veà SessionID cho user. Moãi session seõ ñöôïc server cho moät soá ñònh danh duy nhaátkhi noù ñöôïc taïo ra.
Timeout: Khoaûng thôøi gian toàn taïi cuûa session, tính baèng phuùt. Maëc ñònh 20 phuùt
Caùc Methods:
Abandon: Xoùa boû moät object session, traû laïi taøi nguyeân cho heä thoáng.
Ví duï:Ta coù theå taïo caùc bieán trong ñoái töôïng Session ñeå löu thoâng tin cho moãi keát noái ñeán Server.
+ Session("Login"): cho bieát ngöôøi yeâu caàu truy xuaát ñeán trang coù login chöa.Session("Username"): teân cuûa Account taïo ra sesion hieän taïi.
+ Session("SelectedTopic"): teân chuû ñeà ñang ñöôïc choïn ñeå thöïc hieän moät thao taùc naøo ñoù.
4. Ñoái töôïng Application:
Ñònh nghóa: Ta coù theå söû duïng object Application ñeå cho pheùp nhieàu ngöôøi cuøng söû duïng moät öùng duïng chia seû thoâng tin vôùi nhau.Bôûi vì object Application ñöôïc duøng chung bôûi nhieàu ngöôøi söû duïng, do ñoù object coù 2 method Lock vaø Unlock ñeå caám khoâng cho nhieàu user ñoàng thôøi thay ñoåi property cuûa object naøy, caùc bieán Application laø toaøn cuïc, coù taùc duïng treân toaøn öùng duïng.
Cuù phaùp toång quaùt: Application.Method
Caùc Methods:
Lock: Phöông phaùp naøy caám khoâng cho client khaùc thay ñoåi property cuûa ñoái töôïng Application .
Unlock: Phöông phaùp naøy cho pheùp client khaùc thay ñoåi property cuûa ñoái töôïng Application .
Events: goàm coù hai event ñöôïc khai baùo trong file Global.asa. Ngoaøi ra chuùng ta coù theå ñaët caùc bieán trong ñoái töôïng Application ñeå löu nhöõng thoâng tin toaøn cuïc, hay caùc côø baùo hieäu.
Application_OnStart: Xaûy ra khi khôûi ñoäng öùng duïng.
Application_OnEnd: Xaûy ra khi öùng duïng ñoùng, hay Server shutdown.
Ví duï:
Application("DatabaseAccessFlag"): côø cho bieát coù ai ñang truy xuaát Database khoâng.
Application("AccessNumber"): soá laàn truy xuaát ñeán öùng duïng. Khi khôûi ñoäng/ ñoùng öùng duïng giaù trò naøy ñöôïc caäp nhaät vaøo Database.
Application("arrayTopicName"): bieán daõy löu danh saùch caùc chuû ñeà hieän coù cuûa heä thoáng.
Tröôùc khi thay ñoåi giaù trò caùc bieán Application neân Lock laïi vaø sau khi thay ñoåi nhôù Unlock.
5. Ñoái töôïng Server:
Ñònh nghóa: Cho pheùp truy xuaát ñeán caùc method vaø property cuûa server nhö laø nhöõng haøm tieän ích.
Cuù phaùp toång quaùt: Server.Method
Caùc Properties:
ScriptTimeout: Khoaûng thôøi gian daønh cho script chaïy. Maëc ñònh 90 giaây.
Caùc Methods:
CreateObject: Taïo moät instance cuûa server component.
HTMLEncode: Maõ hoùa moät chuoãi theo daïng HTML
MapPath: Aùnh xaï ñöôøng daãn aûo (laø ñöôøng daãn tuyeät ñoái treân server hieän haønh hoaëc ñöôøng daãn töông ñoái ñeán trang hieän taïi) thaønh ñöôøng daãn vaät lyù (physical path).
URLencode: maõ hoùa moät chuoãi (keå caû kí töï escape) theo qui taéc maõ hoùa URL
Ví duï: : Xaùc ñònh thôøi gian chaïy toái ña cuûa moät Scriprt laø 30 giaây.
VI. CAÙC COMPONENT CUÛA ASP:
Khaùi nieäm: ActiveX Server Component (tröôùc ñaây ñöôïc goïi laø Automation Server) ñöôïc thieát keá ñeå chaïy treân Web server nhö laø moät phaàn cuûa öùng duïng treân Web. Component chöùa ñöïng nhöõng ñaëc tröng chung maø chuùng ta khoâng caàn phaûi taïo laïi nhöõng ñaëc tröng naøy.Component thöôøng ñöôïc goïi töø nhöõng file .asp. Tuy nhieân, chuùng ta coù theå goïi nhöõng component naøy töø caùc source khaùc nhau nhö laø: moät öùng duïng ISAPI, moät server component hoaëc moät ngoân ngöõ töông thích OLE (OLE-compatible language).
ASP cung caáp saün 5 ActiveX Server Component, bao goàm:
Advertisement Rotator Component.
Browser Capabilities Component.
Database Access Component.
Content Linking Component.
TextStream Component.
Taïo moät instance cuûa component:
Baïn coù theå taïo moät instance cuûa moät ActiveX Server Component vôùi moät caâu leänh ñôn giaûn. Khi baïn ñaõ taïo ñöôïc moät instance cuûa moät component, baïn coù theå söû duïng nhöõng phöông phaùp (method) lieân quan ñeán component ñoù hoaëc gaùn (set) vaø ñoïc (read) nhöõng thuoäc tính (property) cuûa noù.
Sau ñaây laø moät script söû duïng method: Server.CreateObject ñeå taïo moät instance cuûa Browser Capabilities Component vaø gaùn vaøo bieán bc:
Ta cuõng coù theå söû duïng tag ñeå taïo moät instance component. Ví duï sau taïo ra moät instance cuûa Ad Rotator Component :
1. Advertisement Rotator Component:
Advertisement Rotator Component cho pheùp ta thöïc hieän chuoãi caùc hình aûnh keá tieáp nhau thay ñoåi treân maøn hình moät caùch töï ñoäng, noù coøn cho pheùp taïo caùc link töø caùc hình aûnh naøy. Component naøy raát höõu duïng trong caùc öùng duïng coù tính chaát quaûng caùo, giôùi thieäu.
Ví duï :
Advertisement Rotator Component seõ hieån thò moät quaûng caùo döïa treân thoâng tin ñöôïc ñaëc taû trong Rotator Schedule file. Caùc file cuûa component bao goàm:
Adrot.dll: The Advertisement Rotator Component.
RedirectionFile: Moät file tuøy choïn cho pheùp Advertisement Rotator component ghi nhaän coù bao nhieâu user click moãi Ad.
Rotator Schedule File: Moät text file chöùa baûng danh muïc vaø nhöõng thoâng tin hieån thò cho caùc baûng quaûng caùo. File naøy naèm trong moät thö muïc aûo treân server.
Caùc thuoäc tính cuûa Ad Rotator Component:
Border: Chæ ñònh kích thöôùc cuûa ñöôøng vieàn xung quanh baûng quaûng caùo.
Clickable: Chæ ñònh baûng quaûng caùo coù phaûi laø moät hyperlink hay khoâng.
Targetframe: Chæ ñònh teân cuûa frame hieån thò baûng quaûng caùo.
Advertisement Rotator component coù phöông phaùp GetAdvertisement ñeå laáy söï ñaëc taû cuûa baûng quaûng caùo töø file döõ lieäu Rotator Schedule file vaø ñònh daïng noù thaønh moät HTML.
2. Browser Capabilities Component:
Browser Capabilities Component cung caáp cho script söï moâ taû veà khaû naêng (Capability) cuûa Web browser ôû client. Khi moät browser noái vôùi moät Web server, noù töï ñoäng gôûi User Agent HTTP header. Header naøy laø moät chuoãi ASCII maø chæ ra loaïi browser vaø soá version cuûa noù. Browser Capabilities Component so saùnh header naøy vôùi nhöõng entry trong file Browscap.ini. Neáu thaáy phuø hôïp thì Browser Capabilities Component thöøa nhaän nhöõng thuoäc tính cuûa browser maø chuùng phuø hôïp vôùi User Agent header. Neáu component khoâng tìm thaáy header trong Browscap.ini, noù seõ laáy nhöõng thuoäc tính cuûa browser maëc ñònh. Neáu component khoâng tìm thaáy header phuø hôïp vaø browser maëc ñònh khoâng ñöôïc chæ ra trong file Browserscap.ini, thì noù ñaët moïi thuoäc tính baèng chuoãi "UNKNOWN". Ta coù theå theâm nhöõng thuoäc tính môùi cho component naøy ñôn giaûn baèng caùch caäp nhaät file Browscap.ini.
Caùc file ñöôïc söû duïng cho Component:
Browscap . dll : The Browser Capabilities Component.
Browscap . ini : Moät text file chöùa caùc thoâng tin veà caùc loaïi Browser. File naøy phaûi naèm cuøng thö muïc vôùi file Browscap.dll.
3. Data Access Component:
Chuùng ta coù theå söû duïng Data Access Component ñeå truy xuaát ñeán Database töø moät öùng duïng cuûa Web. Chuùng ta coù theå hieån thò toaøn boä noäi dung cuûa moät baûng (table), cho pheùp ngöôøi söû duïng xaây döïng nhöõng Query, thöïc hieän nhöõng thao taùc treân database töø trong trang Web.
Database Access Component cuûa ActiveX hay coøn goïi laø thö vieän ADO( Active Data Object). Ñaây laø moät ñieåm maïnh cuûa ASP trong vieäc phaùt trieån caùc öùng duïng Web Database.Caùc Object cuûa ADO cung caáp cô cheá taïo ra keát noái (connection) vôùi haàu heát caùc kieåu Database,cuõng nhö vieäc truy xuaát , caäp nhaät caùc Database naøy. Hieän nay thö vieän ADO laø moät coâng cuï maïnh trong vieäc phaùt trieån caùc öùng duïng database treân internet.
Moät phöông phaùp ñeå taïo moät connection laâu daøi ñeán Database laø taïo moät connection ñeán Database cho moãi user vaø löu tröõ connection naøy trong Session Object. Tuy nhieân, vì phöông phaùp naøy taêng soá idle connection ñeán Database neân noù chæ ñöôïc söû duïng ôû nhöõng Web Site coù löu löôïng thoâng tin thaáp (low-traffic).
ADO ñöôïc thieát keá moät caùch ñôn giaûn, noù giao tieáp vôùi database thoâng qua phöông thöùc ODBC chuùng ta coù theå söû duïng chuùng vôùi baát kyø loaïi databasenaøo neáu nhö ODBC coù driver hoã trôï. Hieän nay toàn taïi driver cho haàu heát caùc database nhö : Foxpro, Access, SQL Server, ORACLE, v.v
Caùc Object chính trong ADO ñoù laø: Connection, RecordSet, Command,ngoaøi ba object chính naøy coøn coù caùc object con cuûa noù cuøng vôùi caùc tham soá , thuoäc tính, phöông thöùc beân trong. Ta haõy xem xeùt töøng ñoái töôïng cuï theå ôû phaàn sau:
Moät phöông phaùp höõu hieäu hôn ñeå quaûn lyù nhöõng connection ñeán Database döïa treân Web laø söû duïng connection pooling cuûa ODBC 3.0. Connection pooling duy trì vieäc môû, ñoùng connection ñeán Database vaø quaûn lyù connection chung cho nhieàu yeâu caàu cuûa nhöõng ngöôøi söû duïng khaùc nhau ñeå ñaûm baûo hieäu suaát vaø giaûm soá idle connection. Ñoái vôùi moãi yeâu caàu connection, connection pool ñaàu tieân xaùc ñònh idle connection ôû trong pool khoâng. Neáu coù connection pool traû veà connection ñoù thay vì taïo moät connection ñeán Database. Connection khoâng coøn noái vôùi Database vaø ra khoûi connection pool neáu noù ôû traïng thaùi idle hôn 60 giaây. Connection pooling maëc ñònh ñöôïc cho pheùp trong ASP. Chuùng ta coù theå caám connection pooling baèng caùch ñaët Start Connection Pool = 0 trong Registry entry.
Ñeå söû duïng toát nhaát Connection pooling, ta neân môû vaø ñoùng Connection ñeán database trong moãi trang Asp.tuy nhieân ta neân ñaët nhöõng trang property cuûa Connection moät laàn vaø söû duïng laïi chuùng ôû moãi trang sau.
Ví duï:
Chuùng ta coù theå söû duïng "ConnectionString " trong file Global.asa ñeå chæ ra property cuûa Connection trong bieán coá Session_OnStart nhö scrip sau:
Session ("ConnectionString") ="DSN=Database; UID= Database"
Sau ñoù trong moãi file.asp maø coù truy xuaát database chuùng ta coù theå vieát:
hay ñeå taïo moät instance cuûa ñoái töôïng Connection cho trang ñoù ta coù theå vieát nhö sau:
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Session("ConnectionString")
Sau khi söû duïng xong, ta ñoùng baèng Script sau:
Conn.Close
Giaù trò TimeOut maëc ñònh cho Connection pooling laø 60 giaây. Ta coù theå thay ñoåi giaù trò naøy cho moät ODBC Driver baèng caùch ñaët Registry key nhö sau:
\HKEY_LOCAL_MACHINE
\SOFTWARE
\ODBCINST.INI
\driver-name\Cptimeout = timeout
(REG_SZ. Ñôn vò laø giaây)
4. Content Linking Component:
Content Linking Component quaûn lí danh saùch caùc URL ñeå chuùng ta coù theå xöû lí caùc trang trong Web Site nhö laø caùc trang trong moät quyeån saùch. chuùng ta coù theå söû duïng Content Linking Component ñeå taïo vaø caäp nhaät töï ñoäng muïc luïc, ñöôøng lieân keát cuûa nhöõng trang Web tröôùc vaø sau. Ñieàu naøy thaät laø lyù töôûng cho nhöõng öùng duïng nhö laø Online Newspaper.
Content Linking Component tham khaûo ñeán file content linking list, file naøy chöùa danh saùch caùc trang Web ñöôïc lieân keát vôùi nhau. Danh saùch naøy ñöôïc löu tröõ taïi Web server .
Caùc file ñöôïc söû duïng cho Content Linking Component:
Nextlink.dll: The Content Linking component.
Content Linking List: Moät file text lieät keâ danh saùch caùc trang Web vôùi thöù töï maø chuùng seõ ñöôïc hieån thò. File naøy phaûi ñöôïc ñeå treân thö muïc aûo cuûa server.
Caùc phöông thöùc cuûa Content Linking component:
GetListCount: Ñeám soá item trong content linking list file.
GetNextURL: Laáy URL cuûa trang keá tieáp ñöôïc lieät keâ trong Content Linking List file.
GetPreviousDescription: Laáy phaàn moâ taû cuûa trang tröôùc ñöôïc lieät keâ trong Content Linking List file.
GetListindex: Laáy index cuûa trang hieän taïi trong Content Linking List file.
GetNthDesciption: Laáy phaàn moâ taû cuûa trang thöù N ñöôïc lieät keâ trong Content Linking List file.
GetPreviousURL: Laáy URL cuûa trang tröôùc ñöôïc lieät keâ trong Content Linking List file.
GetNextDescription: Laáy phaàn moâ taû cuûa trang keá tieáp ñöôïc lieät keâ trong Content Linking List file.
GetNthURL: Laáy URL cuûa trang thöù N ñöôïc lieät keâ trong Content Linking List file.
5. File Acess Component:
Conponent naøy giuùp ta vaoø vieäc truy xuaát vaøo heä thoáng file cuûa server. Noù coù hai ñoái töôïng giuùp ta thöïc hieän ñieàu naøy laø FileSystemObject vaø TextStream.
CHÖÔNG 3 : TRUY XUAÁT CÔ SÔÛ DÖÕ LIEÄU TRONG ACTIVE SERVER PAGE
ÔÛ phaàn treân chuùng ta ñaõ bieát veà caùc khaùi nieäm toång quaùt veà Active Server Page vaø caùc thaønh phaàn caàn coù khi xaây döïng moät öùng duïng.Trong chöông naøy seõ trình baøy kyõ hôn veà Active Data Object, ñaây chính laø öu ñieåm maïnh nhaát cho vieäc phaùt trieån öùng duïng cô sôû döõ lieäu treân web (Web Database).
Database Access Component
Moät öùng duïng Web databse vieát baèng ASP coù theå truy xuaát döõ lieäu trong moät database, baèng caùch söû duïng Component Database Access cuûa ActiveX hay coøn goïi laø thö vieän ADO (Active DataObject).Ñaây cuõng chính laø ñieåm maïnh nhaát cuûa ASP trong vieäc phaùt trieån öùng duïng Web Database.
Caùc Object cuûa ADO cung caáp coù theå taïo ra caùc keát noái(Connection) vôùi haàu heát caùc kieåu Database, cuõng nhö vieäc truy xuaát, caäp nhaät caùc Database naøy. Hieän nay thö vieän ADO laø coâng cuï maïnh nhaát trong vieäc phaùt trieån caùc öùng duïng database treân Internet.
Trong phaàn naøy ta seõ xem xeùt caùc thaønh phaàn trong thö vieän coâng cuï naøy.
ADO interface:
ADO ñöôïc thieát keá moät caùch ñôn giaûn nhaát, noù giao tieáp vôùi database thoâng qua phöông thöùc ODBC (Open Database Connectivity), chuùng ta coù theå söû duïng chuùng vôùi baát kyø loaïi database naøo neáu nhö ODBC coù driver hoã trôï. Hieän nay toàn taïi driver cho haàu heát caùc loaïi database nhö Foxpro, Access, Oraccle, SQl server…
Söï giao tieáp giöõa ADO vaø caùc thaønh phaàn khaùc trong heä thoáng coù theå ñöôïc moâ taû theo hình veõ sau:
Active Server Pages
ODBC Driver
Active Database Component
Active Data Object
Data Provider Interface
DATA
Quaù trình truy xuaát cô sôû döõ lieäu thoâng qua ODBC
Caùc Object trong ADO
Caùc Object chính trong ñoù laø: Connection, RecordSet vaø Command, ngoaøi ba Object chính naøy coøn coù caùc Object, tham soá, thuoäc tính,phöông thöùc con.Söû duïng Connection ta theå thieát laäp söï lieân keát vôùi cô sôû döõ lieäu, thoâng qua ñoù ta coù theå thöïc hieän caùc Query ñeå laáy ra caùc record hoaëc caäp nhaät moät record baèng caùch söû duïng Command object. Keát quaû thöïc hieän caùc query treân database seõ ñöôïc löu vaøo ñoái töôïng RecordSet, treân ñoái töôïng naøy ta coù duyeät vaø laáy ra moät hay nhieàu Record. Sau ñaäy ta xem xet cuï theå caáu taïo cuõng nhö caùch söû duïng cuûa töøng cuûa töøng Object.
Taïo caùc custom component söû duïng trong ASP:
Ta coù theå taïo moät component ñeå söû duïng trong moâi tröôøng Active Server Pages, baèng baát cöù ngoân ngöõ laäp trình naøo hoå trôï cho vieäc taïo Automation Server. Caùc ngoân ngöõ coù hoå trôï kyõ thuaät naøy hieän nay laø Visual Basic, Visual C++ töø caùc version 4.0 trôû veà sau. Vieäc choïn ngoân ngöõ naøo ñeå hieän thöïc laø tuøy thuoäc vaøo ngöôøi laäp trình, phuï thuoäc vaøo söï thaân thieän vôùi ngoân ngöõ ñoù, caùc coâng cuï hoå trôï, caùc kyõ thuaät laäp trình cuõng nhö caùc kích thöôùc cuûa öùng duïng sau khi bieân dòch.
Hieän nay trong caùc taøi lieäu coù lieân quan ñeán caùc kyõ thuaät laäp trình theo coäng ngheä ActiveX cuûa Microsoft haàu heát ñeàu ñöa ra caùc coâng thöùc ñeå hieän thöïc caùc component naøy baèng Visual Basic 4.0 vaø 5.0. tuy nhieân trong vieäc laäp trình höôùng tôùi ñoái töôïng thaät söï thì Visual C++ laø moät moâi tröôøng ñieån hình hôn, vôùi caáu truùc thöøa keá cuûa caùc thö vieän chöùa trong noù. Maëc duø vieäc hieän moät code Component chaïy treân server, söû duïng trong ASP khoâng laø moät coâng vieäc môùi laï trong Visual Basic, nhöng vieäc hieän thöïc caùc component baèng Visual C++ laïi gaàn nhö khoâng thaáy taøi lieäu naøo höôùng daãn moät caùch cuï theå, trong phaán naøy em xin trình baøy caùc böôùc ñeå hieäb thöïc moät component baèng moâi tröôøng Visual C++ nhö laø moät caùch hieän thöïc khaùc hôn trong ñoù söû duïng caùc khaû naêng cuûa coâng cuï ATL (Active Template Library).
Automation Server & Activex Component:
Automation Server coù theå ñöôïc coi laø moät thö vieän caùc Object (Class), maø khi noù ñaõ ñöôïc ñaêng kyù treân server, noù coù khaû naêng cho pheùp caùc öùng duïng khaùc nhìn thaáy vaø söû döïng caùc Class cuûa mình. Beân trong cuûa moät component nhö theá, coù theå chöùa moät hay nhieàu caùc Class, vôùi Interface cuûa noù, nhôø vaøo caùc Interface naøy caùc öùng duïng khaùc coù theå giao tieáp vôùi caùc Object beân trong. Thoâng thöôøng caùc Interface naøy laø Idispatch hoaëc User Interface.
Automation Server coù theå ñöôïc thöïc hieän ôû daïng in_process, thi haønh trong vuøng hoaït ñoäng cuûa controller, hoaëc coù theå ôû daïng local, chæ thöïc thi trong khoâng gian hoïat ñoäng cuûa noù. Automation Server coøn coù theå thöïc hieän ôû daïng remote, seõ thöcj thi trong vuøng hoaït ñoäng cuûa maùy khaùc. Daïng bieân dòch cuûa Automation Server coù theå laø DLL (Dynamic Link Library) hoaëc EXE (Excutable). Ôø daïng EXE noù chæ coù theå thöïc thi ôû daïng local hoaëc remote
Baèng Visual C++ ta coù theå xaây döïng caùc Component baèng caùch vieát thaúng vôùi C API vaø thieát laäp baèng tay caùc Interface, döïa treân vieäc taïo vaø dòch caùc file IDL (Interface Definition Language). Thaät may laø Visual C++ ñaõ cung caáp cho ta coäng cuï ATL, duøng ñeå taïo ra caùc thö vieän lieân keát ñoäng, trong ñoù chöùa caùc Interface cho pheùp nhöõng öùng duïng khaùc söû duïng ñöôïc caùc object cuûa noù.
1. Ñoái töôïng Connection:
Ñeå söû duïng ñoái töôïng Connection, tröôùc tieân ta phaûi taïo ra moät instance cho noù, ñaây thöïc söï laø moät theå hieän cuûa Object naøy trong trang ASP. Phaùt bieåu taïo inStance cho Connection coù cuù phaùp nhö sau:
<%
Connection_name=Server.CreatObject(“ADODB.Connection”)
%>
Thoâng thöôøng trong moät öùng duïng neáu ta caàn coù moät lieân keát vôùi Data Source coá ñònh cho taát caû caùc trang thì khi ñoù ta seõ ñaët instance cuûa Connection coù taàm vöïc ôû möùc Application baèng caùch ñöa phaùt bieåu taïo instance ôû treân vaøo caùc thuû tuïc Application_onStart():
<%
Sub Application_onStart()
Set Connection_name = Server.CreateObject(“ADODB.Connection”)
End Sub
%>
Hoaëc thieát laäp taàm vöïc cho Connection ôû möùc session nhö sau:
<%
Sub Session_onStart()
Set Connection_name= Server.CreateObject(“ADODB.Connection”)
End Sub
%>
Tuy nhieân ta coù theå xem xeùt theâm vieäc toái öu cho caùc Connection trong moät öùng duïng coù nhieàu user truy xuaát tôùi database, ñoù laø khaû naêng Connection pooling cuûa ODBC 3.0
Connection pooling
Caùc öùng duïng cô sôû döõ lieäu truyeàn thoáng ñeàu taïo moät moái lieân keát tôùi database maø noù söû duïng, coøn caùc öùng duïng Database treân web laïi môû vaø ñoùng caùc lieân keát naøy ôû moãi trang web.Moät phöông phaùp cho caùc öùng duïng Database treân web laø taïo moät söï lieân keát lieân tuïc vôùi cô sôû döõ lieäu cuûa töøng user vaø löu tröõ trong ñoái töôïng Session.Tuy nhieân phöông phaùp naøy coù theå laøm gia taêng soá löôïng caùc user keát noái tôùi cô sôû döõ lieäu maø khoâng laøm vieäc vaø noù chæ ñaït ñöôïc ñoä tin caäy ñoái vôùi caùc web site coù söï löu thoâng döõ lieäu thaáp(low-traffic)
Phöông phaùp tieän lôïi hôn trong vieäc quaûn lyù caùc keát noái vôùi cô sôû döõ lieäu cuûa öùng duïng web laø quaûn lyù baèng Connection Pool cuûa ODBC 3.0 nhaèm giaûm bôùt soá löôïng lieân keát raûnh roãi.ODBC seõ môû caùc keát noái vaø quaûn lyù caùc keát noái naøy.Moãi khi coù moät yeâu caàu keát noái môùi thì thöïc hieän vieäc kieåm tra xem coù lieân keát naøo raûnh khoâng, neáu khoâng coù thì seõ taïo keát noái môùi, ngöôïc laïi seõ laáy lieân keát raûnh naøy maø khoâng taïo lieân keát môùi.Neáu coù moät lieân keát raûnh naøo trong Connection Pool toàn taïi quaù 60s thì noùseõ töï ñoäng huûy boû.
Connection Pooling ñöôïc kích hoaït maëc nhieân trong ASP, ta coù theå loaïi boû baèng caùch thieát laäp giaù trò Register Entry Start ConnectionPool veà giaù trò 0.
Caùc phöông thöùc cuûa ñoái töôïng Connection
- Open method: Söû duïng ñeå môû moät keát noái vôùi Database.Sau khi taïo moät instance cho Connection Object, ta coù theå môû moät keát noái vôùi data source ñeå coù theå truy xuaát döõ lieäu, cuù phaùp cho phöông thöùc trong VBScript nhö sau:
Connection.Open ConnectionString User Password
Trong ñoù ConnectionString laø chuoãi ñònh nghóa teân cuûa data Source (DNS),teân naøy ñöôïc khai baùo trong ODBC. User vaø Password, Seõ thöïc hieän vieäc môû Data Source.
- Execute method: Phöông thöùc naøy cho pheùp thöïc thi moät caâu leänh, taùc ñoäng leân data Source.
Theo trình töï sau khi ñaõ coù moät keát noái tôùi Datasource, ta coù theå söû duïng noù vôùi phöông thöùc Execite vôùi cuù phaùp trong VBScript nhö sau:
Connection.Execute Commantext, RecordAffected, options
Trong ñoù thoâng soá option coù caùc giaù trò khaùc nhau töông öùng vôùi moãi loaïi CommanText.Caùc giaù trò cuûa Option theo baûng sau:
Giaù trò
Danh hieäu haèng töông öùng
Moâ taû CommanText
0
adCmdUnknown
Giaù trò naøy maëc ñònh khi ñònh nghóa
1
adCmdText
CommandText laø moät caâu leänh (ví duï nhö SQL)
2
adCmdTable
Teân cuûa Table maø taseõ taïo moät RecordSet töø ñoù
3
adCmdStoredPro
Moät stored procedure trong datasource
Thoâng thöôøng caùc giaù trò treân seõ ñöôïc gaùncho teân (danh hieäu), haèng vaø ñöôïc ñaët trong caùc file include.
-Close method: trong caùc trang ASP, sau khi ñaõ xöû lyù xong döõ lieäu treân data source, tröôùc khi keát thuùc trang söû duïng phaûi ñoùng laïi caùc keát noái ñaõ môû. Vieäc ñoùng keát noái thöïc hieän nhôø phöông thöùc Close.
Cuù phaùp nhö sau:
Connection.Close
Neáu chöông trình khoâng thöïc hieän vieäc naøy thì ASP seõ töï ñoäng ñoùng Connection ñaõ môû trong trang, moãi khi ngöôøi söû duïng tham khaûo qua trang khaùc (ñi khoûi taàm vöïc cuûa bieán instance). Neáu ta taïo instance vaø môû keát noái trong caùc thuû tuïc Application hoaëc session On Start thì vieäc ñoùng caùc Connection naøy seõ ñöôïc theå hieän trong thuû tuïc on End.
2. Ñoái töôïng Command:
Thay vì phaûi söû duïng phöông thöùc Execute cuûa ñoái töôïng Connection ñeå query hay update data source, ta coù theå söû duïng ñoái töôïng Command ñeã thi haønh caùc thao taùc vôùi cô sôû döõ lieäu.
Vieäc taïo moät instance cho ñoái töôïng Command cuõng gioáng nhö ñoái töôïng Connection. Nghóa laø cuõng söû duïng phöông thöùc Server.CreateObject.
Command_name= Server.CreateObject(“ADODB.Command”)
Tuy nhieân ñeå söû duïng ñoái töôïng naøy ta caàn xem xeùt caùc phöông thöùc vaø thuoäc tính keøm theo.
Caùc phöông thöùc (Method):
- Create Paramater: Duøng ñeå taïo moät ñoái töôïng (thoâng soá) trong taäp thoâng soá
- Execute: Duøng ñeå thöïc thi caâu leänh ñöôïc ñaët taû trong thuoäc tính CommandText.
Caùc thuoäc tính (Properties):
- ActiveConnection:Chæ ñònh ñoái töôïng Connection naøo ñöôïc söû duïng trong ñoái töôïng Command.
- CommandText: Chæ ñònh caâu leänh caàn thöïc thi treân cô sôû döõ lieäu.
- CommandTimeOut: Xaùc ñònh thôøi gian thöïc thi leänh, giaù trò thôøi gian thöïc thi ñöôïc tính theo giaây.
- CommandType : Cho bieát kieåu cuûa query ñaëc taû trong CommandText
- Prepared:taïo ra leänh chuaån tröôùc khi thöïc thi.
Taïo ActiveConnection
Sau khi ñaõ coù caùc instance cuûa caùc Connection Object ñaõ ñöôïc keát noái vôùi cô sôû döõ lieäu, vaø Command Object.Luùc naøy neáu muoán söû duïng Command Object ta phaûi gaùn teân cuûa Connection thích hôïp (Connection naøo keát noái tôùi cô sôû döõ lieäu caàn laøm vieäc) vaøo cho thuoäc tính ActiveConnection cuûa Command Object
Command_name. ActiveConnection = Command_name;
Thöïc thi Query
Ta coù theå söû duïng phöông thöùc Execute cuûa Command gaàn gioáng nhö Connection.Tuy nhieân ñieåm khaùc vôùi Connection. Tuy nhieân ñieåm khaùc vôùi Connection laø ñoái vôùi Command neáu ta coù döï ñònh thi haønh moät leänh naøo thì ta phaûi ñoäng cho caùc giaù trò thuoäc tính CommandText, Parameter,… Ví duï sau laø moät ñoaïn chöông trình thöïc hieän moät query trong datasource:
<%
oConn = Server.CreateObject(“ADODB.Connection”)
oCmd = Server.CreateObject(“ADODB.Command”)
oConn.Open (“Pubs”, “sa”, “”);
oCmd.ActiveConnetion = oConn;
ocmd.CommandText = “DELETE* FROM Table”;
oCmd.CommandType = 1; ‘ theå hieän raèng CommandText laø moät SQL
oCmd.Prepared = true ‘thöïc hieän compile caäu leänh
oCmd.Execute();
oCmd.ActiveConnection = nothing ;
%>
Ta gaùn giaù trò CommandTimeOut ôû giaù trò thích hôïp, thoâng thöôøng laø 30,neáu ñeå giaù trò naøy laø 0 thì ADO seõ thöïc thi cho ñeán khi taùc vuï ñöôïc hoaøn taát.
Söû duïng thoâng soá cho caùc leänh SQL
Neáu nhö query caàn thöïc thi coù yeâu caàu thoâng soá, thì ta phaûi theâm caùc thoâng soá naøy vaøo Collections parameter, tröôùc khi thöïc thi caâu leänh.ñoái vôùi phöông thöùc Execute cuûa ñoái töôïng Connection khoâng coù khaû naêng naøy.
Khi söû duïng query coù tham soá thì cuù phaùp cuûa phöông thöùc coù daïng nhö sau:
Command.Execute({RecordAffected}, Parameter, Option);
Record vaø Option coù chöùc naêng vaø giaù trò gioáng nhö trong Connection Object. Tham soá parameter laø moät daõy thoâng soá ñöôïc thöïc hieän trong moät array, moãi moät phaàn töû cuûa array laø moät thoâng soá, theo thöù töï caùc thoâng soá trong caâu leänh .Ñeå tìm hieåu caùch taïo ra thoâng soá trong danh saùch caùc thoâng soá caâu leänh ta xem caùc method vaø properties cuûa Parameter collections, trong phaàn tieáp theo.
Taïo vaø theâm thoâng soá vaøo Collection
Ñoái töôïng Parameter collection laø ñoái töôïng löu giöõ caùc thoâng soá cho query, maø seõ ñöôïc thöïc thi bôûi Command Object.Thay vì phaûi ñöa caùc thoâng soá naøy ngay khi thöïc hieän query,Ta seõ chuaån bò noù tröôùc trong Parameter collection, ñieàu naøy ñöôïc pheùp thöïc hieän nhôø caùc method vaø properties cuûa Parameter.
Caùc method:
- Append: Theâm moät thoâng soá vaøo collections.
- Delete: Xoùa moät thoâng soá trong Collections.
- Refesh : caäp nhaät Collections ñeå phaûn anh söï thay ñoåi thoâng soá trong ñoù.
Caùc Properties:
- Count: traû vaà caùc thoâng soá coù trong Collections.
- Item : ñöôïc söû duïng ñeå laáy giaù trò cuûa moät thoâng soá trong Collections.
Moãi phaàn töû cuûa Parameter Collection coù theå coi nhö moät Parameter Object vaø chuùng cuõng coù caùc Properties rieâng nhö:
- Attribute: Theå hieän kieåu döõ lieäu maø thoâng soá ñoù chaáp nhaän
- Dicrection: Theå hieän höôùng cuû athoâng soá laø Input hay Output,hay caû hai, hay noù laø giaù trò töø stered procedure.
- Name: Teân thoâng soá.
- NumberScale: Soá chöõ soá thaäp phaän trong thoâng soá kieåu soá.
- Precision: Chöõ soá cuûa thoâng soá kieåu soá.
- Size: Kích thöôùc lôùn nhaát, tính theo byte.
- Type : kieäu döõ lieäu thoâng soá.
- Value: Giaù trò gaùn cho thoâng soá.
Ñeå theâm moät thoâng soá ôùi vaøo Collection, tröôùc tieân ta phaûi taïo moät instace cho Parameter Object vaø thieát laäp caùc giaù trò thuoäc tính cho noù.Sau ñoù söû duïng phöông thöùcAppend.
Ví duï caùc böôùc caàn thöïc hieän khi taïo danh saùch thoâng soá:
<%
oParam = oCmd.CreateParameter(Name, size Direction, Value);
oCmd.Parameter.Append (oParam);
%>
Ñeå laáy giaù trò thoâng soá trong collection ta coù theå söû duïng:
OCmd.Parameter.Item(index); hoaëc
oCmd.Parameter(index); hoaëc
oCmd.Parameter (teân thoâng soá);
hay laø oCmd.Parameter.Item(teân_thoâng_soá);
3. Ñoái töôïng RecordSet:
Baèng caùch söû duïng caùc ñoái töôïng Connection vaø Command ta coù theå thöïc thi caùc query ñeå add, update, hay delete moät record trong data source. Tuy nhieân trong caùc öùng duïng thì ta cuõng phaûi thöïc hieän vieäc laáy ra caùc Record töø ADO, ñeå hieån thò giaù trò chuùng trong trang web. Ñeå laáy laïi keát quaû traû veà töø caùc Query, chuùng taphaûi söû duïng ñoái töôïng RecordSet, thöïc chaát noù ñöôïc hieåu nhö moät baûng trong boä nhôù, vaø noù cung caáp cho ta caùc phöông thöùc, properties ñeå deã daøng truy xuaát caùc Record trong noù.
Caùc method:
- AddNew: Laø phöông thöùc duøng ñeå taïo ra moät record trong rUpdate recordset.
- Close: ñoùng laïi ñoái töôïng Recordset vaø caùc ñoái töôïng con cuûa noù.
- Delete: Xoùa ñi record hieän haønh trong Recordset.
- Move: dich chuyeån vò trí Record hieän taïi.
- MoveFirst
- MoveNext Caùc phöông thöùc dòch chuyeån con troû
- MovePrevious
- MoveLast
- Open : Môû moät record môùi,sau khi môû xong thì con troû naèm ôû Record ñaàu tieân trong recordset.
- Requery : Thöïc hieän laïi query.Löu caùc thay ñoåi treân Reacord hieän haønh.
Caùc properties:
- AbsolutePosition : Soá thöù töï cuûa Record hieän taïi.
- BOF(Begin Of File): Coù giaù trò True neáu vò trí con troû naèm ôû record ñaàu tieân. CursorType : Kieåu con troû ñöôïc söû duïng trong RecordSet.
- EOF (End Of File): Coù giaù trò True neáu vò trí con troû naèm ôû record cuoái cuøng trong Recordset.
- RecordCount: Traû veà soá record trong Recordset.
Taïo Recordset
Ñeå coù ñöôïc moät bieán Recordset ta söû duïng phaùt bieåu taïo instance cho noù nhö sau:
Recordset_name = Server.CreateObject (“ADODB.Recordset”);
Sau khi ñaõ coù bieán recordset roài ta coù theå khôûi taïo giaù trò cho noù baèng caùch löu keát quaû traû veà, moãi khi thi haønh caùc phöông thöùc Execute cuûa ñoái töôïng Connection hay Command, ví duï nhö :
Recordset_name = ConnetionObject.Execute(CommandText, Recordaffected, option);
Hoaëc
Recordset_name = ConnetionObject.Execute(CommandText, Parameter, option);
Ta cuõng coù theå taïo moät recordset baèng caùch söû duïng phöông thöùc Open theo cuù phaùp sau:
Recordset_name.Open(Source, ActiveConnection, CursorType, LockType, Option);
Trong ñoù:
Source laø Command Object, hay moät leänh SQL, hoaëc laø moät Stored procedure.
ActiveConnection laø teân cuûa Connection ñaõ ñöôïc môû keát noái vôùi cô sôû döõ lieäu caàn laøm vieäc.
CursorType laø kieåu cuûa con troû söû duïng khi môû Recordset, thoâng soá naøy coù kieåu soá, vaø ñöôïc ñaët baèng caùc teân haèng töông öùng nhö :
+ adOpenForwardOnly = 0 laø giaù trò maëc ñònh, khi choïn thoâng soá naøy tì Record ñöôïc môû ra chæ ñeå cho pheùp ta duyeät caùc record trong noù theo moät chieàu töø ñaàu ñeán cuoái, tuøy choïn naøy cuõng khoâng cho pheùp ta caäp nhaät hay xoùa boû caùc record trong ñoù.
+ adOpenKeyset = 1 Khi môû recordset ôû cheá ñoä naøy, recordset ñöôïc môû coù khaû naêng cho pheùp ta caäp nhaät caùc record, tuy nhieân noù ngaên caûn söï truy xuaát tôùi moät record maø User khaùc theâm vaøo Recordset.
+ adOpenKeyset = 2 Cheá ñoä naøy cho pheùp taát caû caùc thao taùc nhö theâm vaøo, loaïi boû, söûa ñoåi record trong recordset. Cho pheùp thaáy ñöôïc söï thay ñoåi ñoù treân record do user khaùc thöïc hieän. ÔÛ cheá ñoä naøy cho pheùp ngöôøi söû duïng duyeät theo taát caû caùc chieàu (leân xuoáng) trong recordset.
+ adOpenStatic = 3 Gaàn gioáng nhö cheá ñoä OpenForwardOnly
+ LockType laø kieåu Locking söû duïng khi môû Recordset. Bao goàm caùc giaù trò sau:
adLockReadOnly = 1 ta khoâng theå thay ñoåi döõ lieäu khi môû baèng cheá ñoä khoùa naøy.
AdLockpessimistic = 2 cho pheùp thay ñoåi döõ lieäu treân record, söï thay ñoåi naøy seõ coù taùc duïng töùc thôøi ngay treân data source.
AdLockOpetimistic = 3 seõ khoùa record moãi khi ta update.
AdLockBatchOptimistic = 4 Thöïc hieän vieäc caäp nhaät theo boù (Batch update)
Ñoùng Recordset
Sau khi söû duïng xong moät Recordset, hay tröôùc khi môû laïi ta phaûi thöïc hieän vieäc ñoùng recordset laïi baèng phöông thöùc Close vôùi cuù phaùp:
Recordset_name.Close
Duyeät qua caùc record treân Recordset:
Khi ta ñaõ coù moät Recordset, ñeå hieån thò hay truy xuaát tôùi moãi record trong ñoù ta coù theå söû duïng caùc phöông thöùc duyeät nhö: Movenext, Movefirst, Movelast, MovePrevious. Vôùi nguyeân taéc gaàn gioáng nhövieäc duyeät caùc record trong moät file coù caáu truùc, töùc laø ttoàn taïi moät con troû töôûng töôïng, vò trí hieän taïi cuûa con troû cuõng laø record maø ta seõ laáy ñöôïc noäi dung, khi ta muoán laáy ñöôïc noäi dung cuûa Record keá tieáp, hay jphía tröôùc, cuõng nhö caùc record ôû vò trí ñaàu, cuoái cuûa recordset, ta söû duïng caùc phöông thöùc di chuyeån con troû: Movenext, Movefirst, Movelast, MovePrevious. Vôùi cuù phaùp:
Recordset_name.Movenext();
Recordset_name.MoveLast();
Recordset_name.MovePrevious();
Recordset_name.MoveFirst();
Khi di chuyeån nhö vaäy ñeå traùnh vieäc ñöa con troû tôùi caùc vò trí khoâng xaùc ñònh, thoâng thöôøng ta söû duïng caùc thuoäc tính cuûa Recordset nhö BOF, EOF. Caùc thuoäc tính naøy coù yù nghóa nhö sau:
Neáu BOF coù giaù trò True nghóa laø con troû ôû vò trí ñaàu Recordset, khi Recordset môùi ñöôïc môû thì BOF luoân coù giaù trò naøy.
Khi con troû ñaõ ñi qua record cuoái cuøng trong Recordset, thì EOF seõ coù giaù trò True.
Laøm vieäc vôùi recordset thoâng qua Fields Collections:
Ta cuõng coù theå truy xuaát tôùi caùc Fields cuûa moãi record trong Recordset baèng caùch söû duïng Collection fields vôùi caùc thuoäc tính cuûa noù nhö: Count, Item.
Recordset_name.Fields.Item (“teân fields”) traû veà noäi dung coù trong Record hieän taïi.
Recordset_name.Fields.Item (“Index”) traû veà noäi dung cuûa fields thöù index trong Record hieän taïi.
Recordset_name.Fields (“index”) traû veà teân cuûa fileds thöù index trong Record hieän taïi.
Chuù yù : raèng chæ soá cuûa caùc fields trong Record ñöôïc ñaùnh soá töø 0 cho tôùi giaù trò Recordset_name.Fields.Count – 1.
PHUÏ LUÏC B: CAÙC HAØM MINH HOÏA CUÛA VBSCRIPT
CAÙC HAØM
YÙ NGHÓA
Asc
Traû veà moät soá theo ANSI cuûa kyù töï ñaàu tieân.
Chr
Traû veà kyù töï coù maõ laø charcode theo ANSI
Cbool
Traû veà giaù trò cuûa ñoái soá theo variant vôùi kieåu laø Boolean
Cbyte
Traû veà giaù trò cuûa ñoái soá theo variant vôùi kieåu laø Byte
Cdate
Traû veà giaù trò cuûa ñoái soá theo variant vôùi kieåu laø Ngaøy.
Cdbl
Traû veà giaù trò cuûa ñoái soá theo variant vôùi kieåu laø Double
Cint
Traû veà giaù trò cuûa ñoái soá theo variant vôùi kieåu laø Interger.
Clng
Traû veà giaù trò cuûa ñoái soá theo variant vôùi kieåu laø Long
Csng
Traû veà giaù trò cuûa ñoái soá theo variant vôùi kieåu laø Single
Cstr
Traû veà giaù trò cuûa ñoái soá theo variant vôùi kieåu laø String
FromatCurrency
Traû veà moät chuoãi ñöôïc ñònh daïng theo giaùtrò tieàn teä.
FormatDateTime
Traû veà moät chuoãi ñöôïc ñònh daïng theo giaùtrò Ngaøy giôø
FormatPercent
Traû veà moät chuoãi ñöôïc ñònh daïng theo giaùtrò phaàn traêm.
Instr
Traû veà vò trí ñaàu tieân cuûa moät chuoãi trong
moät chuoãi khaùc.
InstrRev
Nhö haøm Instr, nhöng baét ñaàu töø cuoái chuoãi
Lcase
Traû veà moät chuoãi thöôøng khoâng hoa.
Left
Traû veà soá kyù töï traùi cuûa chuoãi.
Len
Traû veà chieàu daøi chuoãi.
Ltrim
Traû veà moät chuoãi khoâng coù khoaûn traéng ôûñaàu chuoãi
Mid
Traû veà soá kyù töï cuûa chuoãi
Replace
Thay theá moät chuoãi con baèng moät chuoãi con khaùc trong moät chuoãi vôùi soá
laàn cho tröôùc
Right
Traû veà soá kyù töï cuoái chuoãi
Rtrim
Traû veà chuoãi khoâng coù khoaûn traéng ôû cuoáichuoãi.
Trim
Traû veà chuoãi khoâng coù khoaûn traéng ôû ñaàu vaø ôû cuoái
Ucase
Traû veà moät chuoãi in hoa
Ubound
Traû veà chæ soá lôùn nhaát trong moät chieàu cuûa daõy
Lbound
Traû veà chæ soá nhoû nhaát trong moät chieàu cuûa daõy
IsArray
Traû veà giaù tri Boolean neáu giaù trò ñoù laø daõy
IsDate
Traû giaù trò thuoäc kieåu Boolean, tuøy theo expression coù phaûi laø ngaøy hay khoâng
IsEmpty
Expression thöôøng laø teân bieán. Xaùc ñònh bieán ñoù coù khôûi ñoäng trò chöa (initialized). Giaù trò traû veà thuoäc kieåu Boolean
IsNull
Traû veà giaù trò thuoäc kieåu Boolean tuøy theo expression coù phaûi laø Null hay khoâng.
Isnumeric
Traû veà giaù trò thuoäc kieåu Boolean tuøy theo expression coù phaûi laø moät con soá hay khoâng.
Now
Traû veà ngaøy giôø hieän taïi
Day
Traû veà moät soá töø 1 ñeán 31 ngaøy trong thaùng
Month
Traû veà moät soá töø 1 ñeán 12 thaùng trong naêm
MonthName
Traû veà teân thaùng trong naêm.
Hour
Traû veà moät soá töø 0 ñeán 23 giôø trong ngaøy
Minute
Traû veà moät soá töø 0 ñeán 59 phuùt trong giôø
Secondyear
Traû veà moät soá töø 0 ñeán 59 giaây trong phuùt
Traû veà naêm hieän taïi
Các file đính kèm theo tài liệu này:
- P0172.doc