LẬP TRÌNH WEB VỚI ASP
Đào Việt Cường Khoa CNTT – ĐHSP Hà Nội
Friday, December 10, 2004
Tài liệu tham khảo
§ TT Tin học -Ngo ại ngữ Trí Đức -Giáo trình Thiết kế và lập trình web với ASP -NXB Thống kê –2003
§ Nguyễn Phương Lan -ASP 3.0, ASP.NET -
NXB Giáo dục –2001
§ ASP Databases § David Sceppa -Microsoft ADO.Net core
reference -Microsoft Press –2002
§ http://msdn.microsoft.com
1
04,16:13. Page 2 DecDec--04,16:13.
Yêu cầu
§ Thiết kế trang web bằng HTML § Sử dụng được một công cụ thiết kế web
(Front Page, DreamWaver, …) § Mạng và sử dụng mạng máy tính § Hệ quản trị CSDL § Có kiến thức cơ bản về lập trình
04,16:13. Page 3 DecDec--04,16:13.
Thời lượng, nội dung
§ Thời lượng: 60 tiết
– Lý thuyết: 30 – Thực hành: 30
§ Nội dung
– Chương 1: Những kiến thức cơ sở – Chương 2: Ngôn ngữ kịch bản VBScript – Chương 3: Lập trình web động với ASP – Chương 4: Truy xuất CSDL trong ASP với ADO – Chương 5: Một số ứng dụng ví dụ – Chương 6: Giới thiệu ASP.Net và ADO.Net
2
04,16:13. Page 4 DecDec--04,16:13.
- Chương 1 - Những kiến thức cơ sở
Bài 1: Những khái niệm cơ bản Bài 2: Ngôn ngữ HTML Bài 3: Mở đầu về tạo web động
Friday, December 10, 2004
-Bài 1 – Những khái niệm cơ bản
3
Friday, December 10, 2004
1. Nhắc lại một số kiến thức
§ Mạng máy tính § Giao thức § Địa chỉ IP § Tên miền § Client/Server § Cổng dịch vụ § URL § Một số khái niệm
khác
04,16:13. Page 7 DecDec--04,16:13.
Mạng máy tính –Computer Network
§ Là hệ thống các máy tính được kết nối với
nhau nhằm trao đổi dữ liệu. § Phân loại mạng theo phạm vi: – Local Area Network (LAN) – Wide Area Network (WAN) – Metropolitan Area Network (MAN) – Global Area Network (GAN) – Internet
§ Mạng Internet: Là mạng của các mạng máy
tính, có quy mô trên toàn thế giới
4
04,16:13. Page 8 DecDec--04,16:13.
Giao thức –Protocol
§ Giao thức –Protocol: Là tập hợp các qui
tắc được thống nhất giữa hai máy tính nhằm thực hiện trao đổi dữ liệu được chính xác.
§ Một số giao thức ví dụ:
– Giao thức TCP/IP – Giao thức HTTP – Giao thức FTP – …
04,16:13. Page 9 DecDec--04,16:13.
Địa chỉ IP –IP address
§ Nhiệm vụ: Phân biệt các máy khác nhau trên
mạng
§ Khuôn dạng: Có độ dài 32 bít (4 số 1 byte) xxx.yyy.zzz.ttt (0 < xxx, yyy, zzz, ttt <255) Ví dụ: 203.162.18.59
§ Địa chỉ IP được chia thành 4 lớp A, B, C, D § Hai máy tính bất kì trong một mạng phải có
địa chỉ IP khác nhau.
5
04,16:13. Page 10 DecDec--04,16:13.
Tên miền -Domain Name
§ IP dùng để liên lạc giữa các máy tính trong
mạng nhưng không thân thiện với con người.
§ Tên miền là tên của các máy phục vụ trên mạng sao cho thân thiện với con người
§ Người ta dùng máy chủ DNS để chuyển đổi
qua lại giữa địa chỉ IP và tên miền.
§ Tên miền được chia thành nhiều cấp, phân
cách bởi dấu chấm "." VD: www.dhsphn.edu.vn
04,16:13. Page 11 DecDec--04,16:13.
Client/Server
§ Máy chủ -server: Chứa dữ liệu và tài nguyên, dịch vụ để cho các máy tính khác có thể khai thác và truy cập (máy phục vụ).
§ Một máy chủ có thể dùng cho một hay nhiều mục đích. Tên
máy chủ thường gắn với mục đích sử dụng – File server – Application server – Mail server – Web server – …
§ Máy khách -client: Là máy tính dùng để kết nối và khai
thác các tài nguyên trên máy chủ
§ Việc kết nối của client với server và việc khai thác dịch vụ
của server tạo nên mô hình Client/Server
§ Một máy tính vừa có thể là server vừa là client
6
04,16:13. Page 12 DecDec--04,16:13.
Cổng dịch vụ -Service Port
§ Một máy server có thể cung cấp nhiều dịch
vụ -> Cần có cơ chế để client khai thác đúng dịch vụ cần thiết
§ Mỗi dịch vụ trên máy tính nằm ở những vị trí khác nhau (cổng dịch vụ), máy khách truy cập và khai thác dịch vụ thông qua các cổng này.
§ Hai dịch vụ khác nhau phải được chạy trên
những cổng khác nhau
§ Mỗi một dịch vụ thường chiếm những cổng
mặc định (ftp: 21; http: 80…)
04,16:13. Page 13 DecDec--04,16:13.
URL-Uniform Resource Location
§ URL-Uniform Resource Location: (Chuỗi
định vị tài nguyên)
§ Dạng:
giaothức://địa_chỉ_máy_chủ:cổng/đường_ dẫn_đến_tài_nguyên
§ Ví dụ:
http://www.dhsphn.edu.vn:80/index.asp
7
04,16:13. Page 14 DecDec--04,16:13.
Một số khái niệm khác
§ Web server:
– Là máy chủ chuyên cung cấp dịch vụ web – Giao thức sử dụng để khai thác dịch vụ web là
http hoặc https
§ Web browser:
– Là chương trình chạy trên client để khai thác DV
web của server
– Một số web browser thông dụng: Internet Explorer (IE), Nescape (NS), Mozilla,...
04,16:13. Page 15 DecDec--04,16:13.
Một số khái niệm khác
§ Web page:
– Là một trang web – Có thể viết bằng các ngôn ngữ khác nhau nhưng
kết quả trả về client là trang HTML
§ Web site: Là tập hợp các trang Web có nội dung thống nhất, phục vụ cho một mục đích nào đó.
§ World Wide Web (WWW): Là hệ thống các Web Site trên toàn thế giới được truy cập thông qua mạng Internet.
8
04,16:13. Page 16 DecDec--04,16:13.
2. Web tĩnh và web động
§ Trang web tĩnh:
– Chứa nội dung cố định HTML – Không cho phép NSD tương tác, cập nhật – Một trang web chứa các hình ảnh chuyển động
chưa hẳn là trang web động
§ Trang web động
– Kết hợp HTML và mã lệnh – Mã lệnh được thực thi trên server, gửi kết quả là
HTML về NSD
– Có khả năng tương tác với NSD
04,16:13. Page 17 DecDec--04,16:13.
Xử lý yêu cầu với web tĩnh
Server
Tìm trang được yêu cầu
Yêu cầu (Request)
Đ
Tìm được
Client
Kết quả (HTML)
Trả lời (Reply)
S
Báo lỗi
9
04,16:13. Page 18 DecDec--04,16:13.
Xử lý yêu cầu với web động
Server
Tìm trang được yêu cầu
Yêu cầu (Request)
Đ
Đ
Web động?
Biên dịch
Tìm được
Client
Trả lời (Reply)
S
S
Báo lỗi
Kết quả (HTML)
04,16:13. Page 19 DecDec--04,16:13.
Ngôn ngữ viết web động?
§ Có nhiều ngôn ngữ để viết § Ngôn ngữ phụ thuộc sự hỗ trợ của server § Một số ngôn ngữ
– PHP – JSP – Perl – ASP (VBScript) – ....
10
04,16:13. Page 20 DecDec--04,16:13.
- Bài 2 - Ngôn ngữ HTML
Friday, December 10, 2004
1. Giới thiệu
§ HTML: HyperText Markup Language -Ngôn
ngữ đánh dấu siêu văn bản.
§ Do Tim Berner Lee phát minh và trở thành ngôn ngữ chuẩn để tạo các trang Web.
§ HTML dùng các THẺ (tags) để định dạng dữ
liệu
11
04,16:13. Page 22 DecDec--04,16:13.
Thẻ (Tag)
§ Được đặt trong
VD:
, , , ,
...
§ Có nhiều thẻ, mỗi thẻ có ý nghĩa khác nhau § Một thẻ có thể có thẻ đóng, thẻ đóng được đặt
trong . VD:
...
; ...§ Thẻ có thể có các thuộc tính
VD:
...
;
§ Thẻ không phân biệt chữ hoa, chữ thường § Các thẻ có thể lồng nhau, không được cắt
nhau (mở trước-đóng sau)
04,16:13. Page 23 DecDec--04,16:13.
Cấu trúc trang HTML
Tiêu đề trang web
Hello world!
12
04,16:13. Page 24 DecDec--04,16:13.
Một số thẻ thông dụng
§ Định dạng tiêu đề:
...
; ...
; ... ; ...
§ Định dạng ký tự:
...; ..., ..., ...,
...,...
§ Kiểu, cỡ chữ:
color="màu">...
§ Đường kẻ:
04,16:13. Page 25 DecDec--04,16:13.
Một số thẻ thông dụng (tiếp)
§ Ngắt dòng văn bản:
§ Tạo đoạn:
...
§ Chèn ảnh:§ Liên kết:
...
§ Bảng biểu:
13
04,16:13. Page 26 DecDec--04,16:13.
2. Tạo form trong HTML § Chức năng: Giúp có thể lấy được thông tin từ NSD
gửi về web server
§ Có một số control chuẩn
– Form – Text Box (One line textbox) – Text area (Multi line textbox) – Check Box – Option Button (Radio Button) – Combo Box (drop-down box; drop down menu) – List Box – Button (Command Button)
04,16:13. Page 27 DecDec--04,16:13.
14
04,16:13. Page 28 DecDec--04,16:13.
Khai báo form
04,16:13. Page 29 DecDec--04,16:13.
Khai báo form (tiếp) § action="địa_chỉ_xử_lý":Địa chỉ xử lý là địa chỉ trang web mà form này sẽ được gửi đến. Nó có thể là địa chỉ tương đối VD: action="myscript.asp"
§ method="phương_thức": Phương thức: Cách thức gửi dữ liệu. Chỉ có 2 giá trị: GET, POST – GET (mặc định): Các giá trị trên form được gửi theo URL
thành từng cặp:
biến1=giá_trị1&biến2=giá_trị2&... – POST: Thông tin được gửi đi nhưng không thể hiện trên
URL.
§ name="tên_form": Tên của form (thường dùng
trong JavaScript)
15
04,16:13. Page 30 DecDec--04,16:13.
Khai báo đối tượng trong form
§ Hầu hết các form đều cần các đối tượng § Thẻ input và thuộc tính type sẽ quyết định phần lớn đối tượng nào được hiển thị trên trình duyệt
§ Tất cả các đối tượng bắt buộc phải có thuộc tính name: Thuộc tính này dùng để giúp trình xử lý form có thể truy cập để lấy giá trị sau này. Riêng với 2 nút Submit và Reset có thể không đặt tên
04,16:13. Page 31 DecDec--04,16:13.
Danh sách các giá trị cho type
§ text
– size – maxlength – value § password § hidden § submit § reset § checkbox § radio
16
04,16:13. Page 32 DecDec--04,16:13.
Combo Box và List Box
§ Tạo combo § Tạo mục chọn trong combo § Một số lựa chọn khác
– Thêm multiple vào
04,16:13. Page 33 DecDec--04,16:13.
Hộp nhập văn bản trên nhiều dòng
§ Mã lệnh
17
04,16:13. Page 34 DecDec--04,16:13.
-Bài 3 - Mở đầu về tạo web động
Friday, December 10, 2004
Xử lý yêu cầu với web tĩnh
Server
Tìm trang được yêu cầu
Yêu cầu (Request)
Đ
Tìm được
Client
Kết quả (HTML)
Trả lời (Reply)
S
Báo lỗi
18
04,16:13. Page 36 DecDec--04,16:13.
Các hạn chế của trang web tĩnh
§ Nội dung cố định, không thay đổi trừ khi có sự hiệu chỉnh trực tiếp của người xây dựng. § Không có khả năng tương tác với người sử
dụng, dễ gây nhàm chán.
§ Web Server hoạt động như một File Server.
04,16:13. Page 37 DecDec--04,16:13.
Kỹ thuật tạo trang web động
§ Xử lý Web động phía Client
– Các Web Browser được trang bị khả năng xử lý các sự kiện đơn giản (ví dụ như: MouseMove, ButtonClick,…)
§ Xử lý Web động phía Server
– Các trang Web sẽ được xử lý bởi một (một số) chương trình trên Server trước khi trả về cho Web Browser.
– Kết quả trả về browser là HTML
19
04,16:13. Page 38 DecDec--04,16:13.
Xử lý yêu cầu với web động
Server
Tìm trang được yêu cầu
Yêu cầu (Request)
Đ
Đ
Web động?
Biên dịch
Tìm được
Client
Trả lời (Reply)
S
S
Báo lỗi
Kết quả (HTML)
04,16:13. Page 39 DecDec--04,16:13.
Đặc điểm của trang Web động
§ Có sự kết hợp (trộn lẫn) giữa mã HTML và
mã của ngôn ngữ kịch bản (script).
§ Các đoạn script có thể được biên dịch trên Server trước khi trả về cho Browser hoặc biên dịch bởi Browser (nhằm làm tăng tốc độ xử lý).
§ Có khả năng tương tác với người sử dụng
20
04,16:13. Page 40 DecDec--04,16:13.
Ngôn ngữ kịch bản(Scripting Languages)
§ Hiện nay có rất nhiều ngôn ngữ kịch bản được sử dụng, đi kèm với chúng là các trình biên dịch trong các web server tương ứng.
§ Một số ví dụ:
– VBScript, JScript web server là Internet Information
Service –IIS c ủa Microsoft
– PHP web server Apache Server của cộng đồng Open
Source Software
– JSP, Java Servlet của Sun – Perl và trình biên dịch CGI tương ứng cho môi trường
Unix
– …
04,16:13. Page 41 DecDec--04,16:13.
Các phần mềm cần thiết
§ Web server: Dùng 1 trong các loại
– Internet Information Services(IIS): Windows
2000, XP, 2003
– Personal Web Server (PWS): Windows 98
§ Chương trình hỗ trợ thiết kế
– Microsoft FrontPage (có cài Web Scripting editor) – Macromedia DreamWaver – Visual Interdev
21
04,16:13. Page 42 DecDec--04,16:13.
Cài đặt và cấu hình IIS
§ Cài đặt § Cấu hình
– Chuyển đổi Root web – Tạo virtual Directory – Thay đổi Home Page
04,16:13. Page 43 DecDec--04,16:13.
Tạo một trang ASP
§ Trang ASP là trang web chứa các mã HTML
và mã lệnh VBScript
§ Trang ASP bắt buộc phải có phần mở rộng là
.ASP
§ Có thể chèn VBScript chạy phía server vào
bất cứ vị trí nào của trang web
§ Có 2 cách chèn:
– Đặt vào giữa: <% Danh_sách_lệnh %> – Nếu chỉ để lấy giá trị biểu thức có thể đặt vào
giữa <%=biểu_thức%>
22
04,16:13. Page 44 DecDec--04,16:13.
Hello world!
Trang ASP đầu tiên
<%
Response.Write "Hello world!" Response.Write "Bây giờ là: " & Now()
%>
23
04,16:13. Page 45 DecDec--04,16:13.
LẬP TRÌNH WEB VỚI ASP
Đào Việt Cường Khoa CNTT – ĐHSP Hà Nội
Friday, December 10, 2004
- Chương 2 - Ngôn ngữ kịch bản VBScript
(cid:252) Chương 1: Những kiến thức cơ sở A Chương 2: Ngôn ngữ kịch bản VBScript §Chương 3: Lập trình web động với ASP § Chương 4: Truy xuất CSDL trong ASP với ADO § Chương 5: Một số ứng dụng ví dụ § Chương 6: Giới thiệu ASP.Net và ADO.Net
1
Friday, December 10, 2004
1. Đặc điểm trang ASP
§ Trang ASP là trang web chứa các mã HTML và mã
lệnh VBScript
§ Trang ASP bắt buộc phải có phần mở rộng là .ASP § Có thể chèn VBScript chạy phía server vào bất cứ
vị trí nào của trang web
§ Có 2 cách chèn:
– Đặt vào giữa: <% Danh_sách_lệnh %> – Nếu chỉ để lấy giá trị biểu thức có thể đặt vào giữa
<%=biểu_thức%>
§ Chỉ xét mã VBScripts chạy phía server. § Qui định ngôn ngữ lập trình phía server:
<%@Language="VBScript"%>
04,16:15. Page 3 DecDec--04,16:15.
1. Đặc điểm trang ASP (tiếp) § VBScript không phân biệt chữ hoa, chữ thường Cách viết MyVar, myvar, MYVAR... là giống nhau
§ Lệnh trong VBScript
– Mỗi lệnh viết trên một dòng – Nếu lệnh viết trên nhiều dòng thì dùng dấu gạch nối (_) để nối 2 dòng – Ví dụ:
if (a
tương đương với
if (a
§ Chú thích trong VBScript
– Ý nghĩa của chú thích?
– Cách viết chú thích:
'Dòng chú thích
rem Dòng chú thích
2
04,16:15. Page 4 DecDec--04,16:15.
2. Biến, hằng
§ Trong VBScript chỉ có một kiểu biến Variant. § Biến có thể được khai báo hoặc không. § Để bắt buộc khai báo biến:
<%option explicit%> ở đầu chương trình
§ Khai báo biến:
Dim tên_biến1, tên_biến2,…
§ Gán giá trị cho biến:
Tên_biến = biểu_thức
04,16:15. Page 5 DecDec--04,16:15.
Biến mảng § Khai báo biến mảng
Dim tên_mảng(n) 'n: chỉ số cuối cùng – Nếu chưa biết trước số phần tử của mảng, có thể bỏ qua
N trong cách khai báo trên. Đến khi biết số phần tử thì khai báo lại bằng:
Redim tên_mảng(n) Redimpreserve
§ Truy xuất 1 phần tử của mảng:
tên_mảng(chỉ_số)
§ VD:
Dim a(10) a(0) = 2 a(1) = "Cơm" a(2) = "Canh"
3
04,16:15. Page 6 DecDec--04,16:15.
Hằng số
§ Hằng số? § Cách khai báo:
Const tên_hằng=gía_trị
§ Cách viết hằng:
– Hằng kiểu số: 1, 2, 1.75,… – Hằng văn bản (chuỗi): "nội dung chuỗi" – Hằng ngày tháng: #ngày#
§ Ví dụ <% Const MyName = "Nguyễn Văn X" Const MyBirthDay = #17-06-1985# %>
04,16:15. Page 7 DecDec--04,16:15.
3. Toán tử
TOÁN TỬ
BIểU DIỄN
VÍ DỤ
Cộng, trừ, nhân, chia
+, -, *, /
Mũ
^
2^3 = 2*2*2 = 8
Chia lấy phần nguyên
\
7 \3 = 2
Chia lấy phần dư
Mod
7 mod 3 = 1
Cộng, ghép chuỗi
+ ; &
"hello" & "world" = "helloworld"
Gán
=
x = 2
= ; <> ; > ; < ; >= ; <=
So sánh: bằng, khác lớn hơn, nhỏ hơn, lớn hơn hoặc bằng, nhỏ hơn hoặc bằng
Logic
AND, OR, NOR, XOR
4
04,16:15. Page 8 DecDec--04,16:15.
4. Các cấu trúc điều khiển
§ Rẽ nhánh (Điều kiện) § Lặp
04,16:15. Page 9 DecDec--04,16:15.
a. Lệnh rẽ nhánh
§ Ý nghĩa của lệnh rẽ nhánh? § Các lệnh rẽ nhánh trong ngôn ngữ khác đã
học?
§ Các loại rẽ nhánh trong VBScript
– IF
• If ... Then • If ... then ... else • If ... then ... elseif ... then...
– Select Case
5
04,16:15. Page 10 DecDec--04,16:15.
Dạng if ... then ... end if
§ Cú pháp if điều_kiện then
S
'Các lệnh
Điều kiện
Đ
end if § Sơ đồ khối § Ví dụ
Các lệnh
04,16:15. Page 11 DecDec--04,16:15.
Dạng if ... then ... else ... end if
§ Cú pháp if điều_kiện then
Đ
S
'Các lệnh 1
Điều kiện
else
'Các lệnh 2
Các lệnh 1
Các lệnh 2
end if § Sơ đồ khối § Ví dụ
6
04,16:15. Page 12 DecDec--04,16:15.
Dạng if ... then ... else ... end if
§ Cú pháp if điều_kiện then
Đ
S
'Các lệnh 1
Điều kiện
else
'Các lệnh 2
Các lệnh 1
Các lệnh 2
end if § Sơ đồ khối § Ví dụ
04,16:15. Page 13 DecDec--04,16:15.
Dạng if ... then ... elseif ...
§ Cú pháp if điều_kiện1 then
'Các lệnh 1
elseif điều_kiện2 then
'Các lệnh 2
elseif điều_kiện3 then
'Các lệnh 3
... end if
7
04,16:15. Page 14 DecDec--04,16:15.
Sơ đồ khối
S
S
S
...
Điều kiện 1
Điều kiện 2
Điều kiện 3
Đ
Đ
Đ
Các lệnh 1
Các lệnh 2
Các lệnh 3
04,16:15. Page 15 DecDec--04,16:15.
Dạng Select Case § Cú pháp Select Case biến Case Giá_Trị1 'Các lệnh 1 Case Giá_Trị2 'Các lệnh 2
... case else
'Các lệnh khác
end case § Sơ đồ khối § Ví dụ
8
04,16:15. Page 16 DecDec--04,16:15.
Sơ đồ khối
S
S
S
...
Biến=Giá_Trị1
Biến=Giá_Trị2
Biến=Giá_Trị3
Đ
Đ
Đ
Các lệnh 1
Các lệnh 2
Các lệnh 3
04,16:15. Page 17 DecDec--04,16:15.
b. Lệnh lặp
§ Lặp số lần định trước (For...next) § Lặp số lần không định trước – Kiểm tra điều kiện trước
• Do while • Do until • Dạng While ... Wend – Kiểm tra điều kiện sau
• Do...loop while • Do...Loop Until
9
04,16:15. Page 18 DecDec--04,16:15.
a. Lặp số lần định trước (For...next)
§ Dạng 1
For biến=giá_trị1 to giá_trị2
Các_lệnh
Next § Dạng 2
For biến=giá_trị1 to giá_trị2 step bước
Các_lệnh
Next
04,16:15. Page 19 DecDec--04,16:15.
b. Lặp số lần không định trước
Kiểm tra điều kiện trước § Dạng 1
Dowhile điều_kiện
Các_lệnh
Loop § Dạng 2
Dountil điều_kiện
Các_lệnh
Loop
10
04,16:15. Page 20 DecDec--04,16:15.
Lặp số lần không định trước (tiếp)
§ Dạng 3
While điều_kiện
Các_lệnh
Wend
04,16:15. Page 21 DecDec--04,16:15.
Lặp số lần không định trước (tiếp)
Kiểm tra điều kiện sau § Dạng 1
Do
Các_lệnh
Loop while điều_kiện
§ Dạng 2
Do
Các_lệnh
Loop until điều_kiện
11
04,16:15. Page 22 DecDec--04,16:15.
c. Phá vỡ vòng lặp
§ Exit For § Exit Do
04,16:15. Page 23 DecDec--04,16:15.
5. Chương trình con
§ Ý nghĩa của chương trình con? § Các loại chương trình con
– Thủ tục – Hàm
12
04,16:15. Page 24 DecDec--04,16:15.
a. Thủ tục
Sub Tên_Thủ_Tục(DS_tham_số)
Nội dung thủ tục
End Sub
§ Lệnh Exit Sub § Sử dụng thủ tục
– Cách 1 Call Tên_Thủ_tục(DSTham_số_thực_sự) – Cách 2 Tên_Thủ_Tục DSTham_số_thực_sự
04,16:15. Page 25 DecDec--04,16:15.
b. Hàm
Function Tên_hàm(Các tham số)
Nội dunghàm
End function
§ Gán giá trị cho hàm: tên_hàm=biểu_thức § Lệnh Exit Function § Sử dụng hàm
– Cách 1: Giống thủ tục – Cách 2: Sử dụng trong biểu thức
13
04,16:15. Page 26 DecDec--04,16:15.
c. Một số hàm có sẵn của VBScript
§ Hàm toán học § Hàm thời gian § Hàm xử lý chuỗi § Một số hàm khác
04,16:15. Page 27 DecDec--04,16:15.
6. Dùng chung mã
§ Chức năng:
– Sử dụng mã thống nhất – Tránh lặp lại mã
§ Cách sử dụng
14
04,16:15. Page 28 DecDec--04,16:15.
LẬP TRÌNH WEB VỚI ASP
Đào Việt Cường Khoa CNTT – ĐHSP Hà Nội
Friday, December 10, 2004
- Chương 3 - Lập trình web động với ASP
(cid:252) Chương 1: Những kiến thức cơ sở (cid:252) Chương 2: Ngôn ngữ kịch bản VBScript BChương 3: Lập trình web động với ASP § Chương 4: Truy xuất CSDL trong ASP với ADO § Chương 5: Một số ứng dụng ví dụ § Chương 6: Giới thiệu ASP.Net và ADO.Net
1
Friday, December 10, 2004
Nội dung
§ Giao tiếp client/server § Cookies § Khai thác server § Global.ASA § Đối tượng Application § Đối tượng Sesion § Xử lý lỗi
04,16:16. Page 3 DecDec--04,16:16.
-Bài 1 - Giao tiếp Client/Server
2
Friday, December 10, 2004
Nội dung
§ Gửi DL Client fi Server – Qua URL, Form GET – Qua Form POST
§ Gửi DL Server fi Client
04,16:16. Page 5 DecDec--04,16:16.
server
Gửi DL client fi § 3 con đường để gửi dữ liệu Client fi
server
– URL (GET) – Form (POST) – Cookies
3
04,16:16. Page 6 DecDec--04,16:16.
1. Cách truyền dữ liệu qua URL
§ Ghi danh sách các cặp biến=giá_trị tiếp
sau địa chỉ trang
§ Phân cách giữa địa chỉ trang và dữ liệu là
dấu hỏi chấm "?"
§ Các cặp biến=giá_trị phân cách nhau bởi
dấu "&"
§ Ví dụ 1. http://www.dhsphn.edu.vn/forum/topic.asp?topic_id=1234 2. http://localhost/ptb2.asp?a=1&b=8&c=-1
04,16:16. Page 7 DecDec--04,16:16.
Lấy dữ liệu truyền qua URL
§ Các dữ liệu truyền qua URL được lưu trữ thành một
tập hợp QueryString trong đối tượng Request § Để lấy dữ liệu: Request.QueryString("tên_bi ến") § Ví dụ: <%
a = Request.QueryString("a") b = Request.QueryString("b") c = Request.QueryString("c") ...
%>
4
04,16:16. Page 8 DecDec--04,16:16.
Lấy dữ liệu truyền qua Form POST
§ Các dữ liệu truyền qua FORM POST được lưu trong tập hợp FORM của đối tượng Request
§ Để lấy dữ liệu: Request.Form("Tên_biến") § Ví dụ: <%
a = Request.Form("txA") b = Request.Form("txB") c = Request.Form("txC") ...
%>
04,16:16. Page 9 DecDec--04,16:16.
2. Serverfi Client § Sử dụng đối tượng Response (trả lời) § Cách thức chung: Response.Phương_thức § Một số chức năng:
5
04,16:16. Page 10 DecDec--04,16:16.
Gửi chuỗi VB về trình duyệt
§ Phương thức Write § Cú pháp:
Response.Write "Chuỗi văn bản".
§ Ví dụ:
Response.Write "Hello World!"
§ Chú ý: Nếu chuỗi văn bản gồm giá trị biến hoặc bao gồm nhiều thành phần thì ta sử dụng dấu "&" để nối các chuỗi lại
Định hướng trình duyệt sang địa chỉ khác
§ Phương thức Redirect § Cú pháp:
04,16:16. Page 11 DecDec--04,16:16.
Response.Redirect "Địa_chỉ_mới"
§ Chức năng: Chuyển trình duyệt sang
địa_chỉ_mới.
6
04,16:16. Page 12 DecDec--04,16:16.
Ví dụ
A.ASP
LOGIN.ASP
Người SD
B.ASP
XULY.ASP
C.ASP
04,16:16. Page 13 DecDec--04,16:16.
Ví dụ (XULY.ASP)
<%
Dim u, p u = Request.Form("txName") p = Request.Form("txPass") if u="a" and p = "passa" then Response.Redirect "a.asp" elseif u=b and p="passb" then Response.Redirect "b.asp"
else
Response.Redirect "Login.asp"
end if
%>
7
04,16:16. Page 14 DecDec--04,16:16.
Ví dụ (LOGIN.ASP)
04,16:16. Page 15 DecDec--04,16:16.
Chấm dứt việc thực hiện script
§ Phương thức: End § Cú pháp: Response.End § Chức năng: Ngừng việc thực hiện script trên trang web hiện tại và trả kết quả về cho client
8
04,16:16. Page 16 DecDec--04,16:16.
-Bài 2 - Cookies
Friday, December 10, 2004
Ví dụ
A.ASP
LOGIN.ASP
Người SD
B.ASP
XULY.ASP
C.ASP
9
04,16:16. Page 18 DecDec--04,16:16.
Ví dụ
A.ASP
LOGIN.ASP
Người SD
B.ASP
XULY.ASP
C.ASP
04,16:16. Page 19 DecDec--04,16:16.
!?!?
Nội dung
§ Khái niệm cookie § Đặt cookie § Lấy giá trị của cookie § Một số lựa chọn khác với cookie
– Đặt thời gian hết hạn – Nhóm cookie (Thư mục cookie)
10
04,16:16. Page 20 DecDec--04,16:16.
1. Khái niệm
§ Cookies là những mẩu thông tin nhỏ được lưu trên máy của người sử dụng thường được dùng để xác định thông tin về người sử dụng
§ Khả năng tạo cookies phụ thuộc vào trình duyệt và sự cho phép của người sử dụng
§ Với IE, ta có thể xem các cookies được tạo ra
trên máy của mình bằng cách vào Tools/Internet Options... Chọn tiếp General/Settings/View files
04,16:16. Page 21 DecDec--04,16:16.
2. Tạo cookies trên máy NSD
§ Sử dụng tập hợp Cookies của đối tượng
Response
§ Cú pháp:
Response.Cookies("Tên_Cookie") = Giá_Trị
§ Chức năng: Đặt cookie có tên là
Tên_Cookie trên máy NSD (Nếu có thể) – Nếu Tên_Cookie chưa có thì một cookie mới
được tạo ra
– Nếu Tên_Cookie đã có thì giá trị của cookie này
được thay bằng Giá_Trị
11
04,16:16. Page 22 DecDec--04,16:16.
XULY.ASP
<%
Dim u, p u = Request.Form("txName") p = Request.Form("txPass") Response.Cookies("User") = "" if u="a" and p = "passa" then
Response.Cookies("User") = "a" Response.Redirect "a.asp"
elseif u=b and p="passb" then
Response.Cookies("User") = "b" Response.Redirect "b.asp"
end if
%>
04,16:16. Page 23 DecDec--04,16:16.
3. Lấy giá trị của cookies
§ Sử dụng tập hợp Cookies của đối tượng
Request § Cú pháp:
Biến = Request.Cookies("Tên_Cookie") § Chức năng: Gán giá trị của cookie có tên là
Tên_Cookie trên máy NSD cho Biến – Nếu Tên_Cookie chưa có thì giá trị của biến là
rỗng
12
04,16:16. Page 24 DecDec--04,16:16.
Ví dụ: A.ASP
<% Dim u u = Request.Cookies("User") if u<>"a" then
Response.Redirect "Login.asp"
end if %>
04,16:16. Page 25 DecDec--04,16:16.
Ví dụ
A.ASP
LOGIN.ASP
Người SD
B.ASP
XULY.ASP
C.ASP
13
04,16:16. Page 26 DecDec--04,16:16.
Một số lựa chọn khác với cookies
§ Đặt thời hạn cho cookie § Cú pháp:
Response.Cookies("Tên_Cookie").Expires = "Ngày_hết_hạn"
§ Ví dụ:
Response.Cookies("User").Expires = "nov 10,2014"
04,16:16. Page 27 DecDec--04,16:16.
Thư mục cookies
§ Là một nhóm các Cookies có cùng tên nhưng
được phân biệt nhau bởi khóa.
§ Thiết lập:
Response.Cookies("Tên_Cookie")("Tên_khóa") = Giá_trị
§ Đọc:
Biến = Request.Cookies("Tên_Cookie")("Tên_khóa")
14
04,16:16. Page 28 DecDec--04,16:16.
-Bài 3 - Khai thác server
Friday, December 10, 2004
Nội dung
§ Sử dụng đối tượng Server § Lấy các biến môi trường
15
04,16:16. Page 30 DecDec--04,16:16.
Sử dụng đối tượng Server
§ Đối tượng Server cung cấp một vài chức năng hỗn hợp mà chúng ta có thể sử dụng trong các ứng dụng ASP.
§ Hầu hết các chức năng của đối tượng này đều khó hiểu và ít khi được sử dụng nhưng có một phương thức CreateObject và thuộc tính ScriptTimeOut của đối tượng Server là vô giá.
§ Đối tượng Server như tên của nó ngụ ý như đại diện cho chính máy phục vụ web và nhiều chức năng mà nó cung cấp hoàn toàn là chức năng của bản thân máy phục vụ web sử dụng khi xử lý các yêu cầu từ máy khách và trả lời từ máy phục vụ.
04,16:16. Page 31 DecDec--04,16:16.
1. Thuộc tính ScriptTimeout
§ Chức năng: Khoảng thời gian tối đa cho phép
một script chạy trên Server.
§ Cú pháp: Server.ScriptTimeOut = Khoảng_thời_gian § Khoảng thời gian được tính bằng giây, giá trị
mặc định là 90 (thời gian tối thiểu).
§ Ví dụ:
Server.ScriptTimeOut = 120
16
04,16:16. Page 32 DecDec--04,16:16.
2. Phương thức CreateObject
§ Chức năng: Tạo ra một đối tượng hoạt động
trên Server.
§ Cú pháp:Server.CreateObject(ProgID) § Trong đó ProgID là định danh của mỗi đối
tượng
§ Chú ý: Khi gán một biến cho một đối tượng ta
cần phải dùng từ khóa Set
§ Ví dụ: Set Conn=Server.CreateObject("ADODB.Connection") Set Rs=Server.CreateObject("ADODB.Recordset")
04,16:16. Page 33 DecDec--04,16:16.
3. Lấy đường dẫn vật lý
§ Chức năng: Chuyển đường dẫn logic thành đường
dẫn vật lý trên ổ đĩa server.
§ Thường được dùng trong các thao tác truy nhập
trực tiếp file (CSDL, Upload,...)
§ Cú pháp:
Server.MapPath("đường_dẫn_logic")
§ Ví dụ:
– Nếu ta có file MAPPATH.ASP nằm trên thư mục gốc của
web server và đường dẫn đến thư mục gốc của web server là E:\Inetpub\wwwroot\
– Khi đó Server.MapPath("MapPath.asp") sẽ là
E:\Inetpub\wwwroot\MapPath.asp
17
04,16:16. Page 34 DecDec--04,16:16.
4. Mã hoá chuỗi
§ Mã theo kiểu HTML (HTMLEncode)
– Cú pháp: Sever.HTMLEncode("chuỗi") – Chuỗi: Là chuỗi cần mã hoá – Ví dụ:
Response.WriteServer.HTMLEncode (" là thẻ tạo chữ đậm")
§ Mã hoá theo kiểu URL (URLEncode)
– Cú pháp: Sever.URLEncode("chuỗi") – Chuỗi: Là chuỗi cần mã hoá
04,16:16. Page 35 DecDec--04,16:16.
5. Lấy thông tin môi trường server
§ Sử dụng tập hợp ServerVariables của đối
tượng Request
§ Cú pháp Biến = Request.ServerVariables("tên_biến_môi_trường")
18
04,16:16. Page 36 DecDec--04,16:16.
Danh sách các biến môi trường (1)
ALL_HTTP
ALL_RAW
All HTTP headers sent by the client. Retrieves all headers in the raw-form. The difference between ALL_RAW and ALL_HTTP is that ALL_HTTP places an HTTP_ prefix before the header name and the header-name is always capitalized. In ALL_RAW the header name and values appear as they are sent by the client.
APPL_MD_PATH
Retrieves the metabase path for the (WAM) Application for the ISAPI DLL.
APPL_PHYSICAL_PAT H
Retrieves the physical path corresponding to the metabase path. IIS converts the APPL_MD_PATH to the physical (directory) path to return this value.
04,16:16. Page 37 DecDec--04,16:16.
Danh sách các biến môi trường (2)
AUTH_PASSWORD
The value entered in the client's authentication dialog. This variable is only available if Basic authentication is used.
AUTH_TYPE
The authentication method that the server uses to validate users when they attempt to access a protected script.
AUTH_USER
Raw authenticated user name.
CERT_COOKIE
Unique ID for client certificate, Returned as a string. Can be used as a signature for the whole client certificate.
CERT_FLAGS
bit0 is set to 1 if the client certificate is present. bit1 is set to 1 if the Certifying Authority of the client certificate is invalid (not in the list of recognized CA on the server).
19
04,16:16. Page 38 DecDec--04,16:16.
Danh sách các biến môi trường (3)
CERT_ISSUER
Issuer field of the client certificate (O=MS, OU=IAS, CN=user name, C=USA).
CERT_KEYSIZE
CERT_SECRETKEYSIZE
Number of bits in Secure Sockets Layer connection key size. For example, 128. Number of bits in server certificate private key. For example, e.g. 1024.
CERT_SERIALNUMBER
Serial number field of the client certificate.
CERT_SERVER_ISSUER
Issuer field of the server certificate.
CERT_SERVER_SUBJECT
Subject field of the server certificate.
CERT_SUBJECT
Subject field of the client certificate.
04,16:16. Page 39 DecDec--04,16:16.
Danh sách các biến môi trường (4)
CONTENT_LENGTH
The length of the content as given by the client.
CONTENT_TYPE
The data type of the content. Used with queries that have attached information, such as the HTTP queries GET, POST,and PUT.
GATEWAY_INTERFACE
The revision of the CGI specification used by the server. The format is CGI/revision.
HTTP_
The value stored in the header HeaderName. Any header other than those listed in this table must be prefixed by HTTP_ in order for the ServerVariables collection to retrieve its value. Note The server interprets any underscore (_) characters in HeaderName as dashes in the actual header. For example if you specify HTTP_MY_HEADER, the server searches for a header sent as MY-HEADER.
20
04,16:16. Page 40 DecDec--04,16:16.
Danh sách các biến môi trường (5)
HTTPS
Returns ON if the request came in through secure channel (SSL) or it returns OFF if the request is for a non-secure channel.
HTTPS_KEYSIZE
Number of bits in Secure Sockets Layer connection key size. For example, 128.
HTTPS_SECRETKEYSIZE
Number of bits in server certificate private key. For example, 1024.
Issuer field of the server certificate.
HTTPS_SERVER_ISSUER HTTPS_SERVER_SUBJECT
Subject field of the server certificate.
INSTANCE_ID
The ID for the IIS instance in textual format. If the instance ID is 1, it appears as a string. You can use this variable to retrieve the ID of the Web-server instance (in the metabase) to which the request belongs.
INSTANCE_META_PATH
The metabase path for the instance of IIS that responds to the request.
04,16:16. Page 41 DecDec--04,16:16.
Danh sách các biến môi trường (6)
LOCAL_ADDR
Returns the Server Address on which the request came in. This is important on multi-homed machines where there can be multiple IP addresses bound to a machine and you want to find out which address the request used.
LOGON_USER
The Windows NT® account that the user is logged into.
PATH_INFO
Extra path information as given by the client. You can access scripts by using their virtual path and the PATH_INFO server variable. If this information comes from a URL, it is decoded by the server before it is passed to the CGI script.
PATH_TRANSLATED
A translated version of PATH_INFO that takes the path and performs any necessary virtual-to-physical mapping.
21
04,16:16. Page 42 DecDec--04,16:16.
Danh sách các biến môi trường (7)
QUERY_STRING
Query information stored in the string following the question mark (?) in the HTTP request.
REMOTE_ADDR
The IP address of the remote host making the request.
REMOTE_HOST
The name of the host making the request. If the server does not have this information, it will set REMOTE_ADDR and leave this empty.
REMOTE_USER
Unmapped user-name string sent in by the User. This is the name that is really sent by the user as opposed to the ones that are modified by any authentication filter installed on the server.
REQUEST_METHOD
The method used to make the request. For HTTP, this is GET, HEAD, POST, and so on.
SCRIPT_NAME
A virtual path to the script being executed. This is used for self-referencing URLs.
04,16:16. Page 43 DecDec--04,16:16.
Danh sách các biến môi trường (8)
SERVER_NAME
The server's host name, DNS alias, or IP address as it would appear in self- referencing URLs.
SERVER_PORT
The port number to which the request was sent.
SERVER_PORT_SECURE
A string that contains either 0 or 1. If the request is being handled on the secure port, then this will be 1. Otherwise, it will be 0.
SERVER_PROTOCOL
The name and revision of the request information protocol. The format is protocol/revision.
SERVER_SOFTWARE
The name and version of the server software that answers the request and runs the gateway. The format is name/version.
URL
Gives the base portion of the URL.
22
04,16:16. Page 44 DecDec--04,16:16.
-Bài 4 - File Global.ASA
Friday, December 10, 2004
1. Khái niệm
§ Global.asa là một file được đặt trong thư mục gốc
của một ứng dụng web
§ Là file được thực thi chỉ một lần đầu tiên vào lúc trình duyệt đầu tiên phát yêu cầu đến ứng dụng web. Lúc này Global.asa được web server tìm trên thư mục gốc của ứng dụng và thực thi nó.
§ File này thường được dùng để nạp các cấu hình
cần thiết, khai báo đối tượng và đặt các thủ tục đáp ứng sự kiện
§ Các đoạn mã đặt trong Global.ASA không đặt trong
<%...%>
23
04,16:16. Page 46 DecDec--04,16:16.
2. Các sự kiện có thể khai báo trong Global.ASA
§ Application_OnStart § Session_OnStart § Session_OnEnd § Applicaton_OnEnd
04,16:16. Page 47 DecDec--04,16:16.
Sự kiện Application_OnStart
§ Phát sinh khi người dùng đầu tiên gửi yêu cầu đến
ứng dụng web.
§ Application_OnStart chỉ xảy ra một lần đối với
người đầu tiên.
§ Muốn sự kiện này xảy ra lại chỉ có cách khởi động
lại IIS
§ Viết lệnh đáp ứng sự kiện này thường dùng để khởi tạo giá trị các biến ở mức toàn cục và hiệu lực với mọi người dùng chẳng hạn như: số người ghé thăm trang web, đường dẫn đến CSDL,...
24
04,16:16. Page 48 DecDec--04,16:16.
Sự kiện Session_OnStart
§ Phát sinh khi người dùng yêu cầu trang đầu
tiên trong ứng dụng từ trình duyệt.
§ Ta sử dụng sự kiện này để khởi tạo các gía
trị biến, các đối tượng cần thiết.
§ Sự kiện này có thể xảy ra nhiều lần với mỗi
người dùng
04,16:16. Page 49 DecDec--04,16:16.
Sự kiện Session_OnEnd
§ Sự kiện này phát sinh khi phiên làm việc của người dùng chấm dứt nghĩa là nó hết hạn hoặc người dùng đóng cửa sổ trình duyệt lại. § Trong sự kiện này ta thường viết các thủ tục để xóa các biến nhớ hoặc có thể lưu lại các trạng thái thông tin nếu cần.
§ Tương tự như sự kiện Session_OnStart, sự kiện Session_OnEnd cũng có thể xảy ra nhiều lần với mỗi người dùng
25
04,16:16. Page 50 DecDec--04,16:16.
Sự kiện Applicaton_OnEnd
§ Sự kiện này phát sinh khi ứng dụng ASP được tải
xuống bằng MMC (Microsoft Management Console), hoặc khi ứng dụng bị ngừng một cách vô thức bởi một lý do nào đó (dịch vụ web bị ngừng trên web server)
§ Tương tự như Application_OnStart,
Application_OnEnd chỉ phát sinh một lần duy nhất, các mã lệnh được viết để xử lý sự kiện này sẽ được gọi sau cùng.
§ Ta thường dùng sự kiện này để lưu lại các giá trị cần thiết ngay trước khi dịch vụ web ngừng làm việc.
04,16:16. Page 51 DecDec--04,16:16.
3. Khai báo đối tượng § File cấu hình Global.asa là nơi duy nhất ta có thể
khai báo các đối tượng COM bằng cặp thẻ
§ Nếu ta sử dụng trình soạn thảo VisualInterDev trong bộ VisualStudio thì việc thêm các đối tượng vào Global.asa rất đơn giản, thao tác còn lại chỉ là kéo- thả
26
04,16:16. Page 52 DecDec--04,16:16.
Ý nghĩa các tham số § Scope là phạm vi của biến: là Application hoặc
Session
§ ID: Tên ta đặt cho đối tượng § ProgID hoặc ClassID là định danh của đối tượng
COM ta muốn chèn.
04,16:16. Page 53 DecDec--04,16:16.
27
04,16:16. Page 54 DecDec--04,16:16.
-Bài 5 - Đối tượng Application
Friday, December 10, 2004
Khái niệm
§ Đối tượng Application dùng để tạo ra mối liên kết
giữa các trang web trong một ứng dụng.
§ Application là toàn cục với mọi trang trong web. Và là toàn cục với tất cả client sử dụng trang web này, việc thay đổi một thuộc tính của Application tại một vị trí sẽ tạo ra sự thay đổi ở tất cả các vị trí khác.
§ Các biến Application chỉ được tạp ra trong
Global.asa nhưng có thể được truy nhập và sửa đổi bởi bất cứ một trang nào trong web.
§ Đối tượng Application được khởi tạo vào lúc máy
khách đầu tiên yêu cầu bất kì một file nào trong thư mục ảo của web
28
04,16:16. Page 56 DecDec--04,16:16.
Ví dụ sử dụng Application
04,16:16. Page 57 DecDec--04,16:16.
Các tập hợp của đối tượng Application
§ Contents(Key)
– Tập hợp này chứa tất cả các biến được giới hạn ở mức độ ứng dụng và các đối tượng được bổ sung vào ứng dụng hiện tại thông qua các script. – Tập hợp này là tập hợp mặc định của Application nên hai cách viết sau đây là hoàn toàn tương đương:
– Application("dbTimeOut") = 15 và
Application.Contents("dbTimeOut") = 15
29
04,16:16. Page 58 DecDec--04,16:16.
Các sự kiện
§ Đối tượng Application chỉ có hai sự kiện là
– Application_OnStart – Application_OnEnd
§ Đây là hai sự kiện được xử lý trong file cấu hình Global.asa đã được đề cập ở Bài 4
04,16:16. Page 61 DecDec--04,16:16.
Lưu trữ dữ liệu bằng Application
§ Về bản chất, đối tượng Application cũng là một biến nằm trong bộ nhớ của máy chủ, ta không nên lưu trữ dữ liệu lâu dài trong đối tượng Application. Dữ liệu trên biến Application sẽ bị mất sau khi sự kiện Application_OnEnd xảy ra.
§ Nếu ta muốn lưu trữ lại những dữ liệu nào đó của Application thì ta cần viết các mã lệnh xử lý lưu trữ (đưa các giá trị biến này vào trong những dữ liệu chắc chắn nằm trên bộ nhớ ngoài như file, cơ sở dữ liệu...) trong thủ tục đáp ứng sự kiện Application_OnEnd. Đến khi ứng dụng được khởi động lại, ta cần đọc lại các giá trị đã lưu vào bộ nhớ trong thủ tục đáp ứng sự kiện Application.OnStart
31
04,16:16. Page 62 DecDec--04,16:16.
-Bài 6 - Đối tượng Session
Friday, December 10, 2004
Khái niệm § Đối tượng Session được sử dụng để lưu trữ thông tin về một phiên làm việc của người sử dụng hay những thay đổi về phiên làm việc đó.
§ Những biến nằm trong đối tượng Session giữ toàn bộ thông tin về người sử dụng và nó có thể sử dụng ở trên một máy trạm và có hiệu lực trên tất cả các trang trong một web. § Máy phục vụ web tìm ra người sử dụng bằng một giá trị
SessionID duy nhất, biến Session này được gán cho người sử dụng kể từ khi người đó bắt đầu phiên làm việc của mình trên web browser. SessionID được lưu trên máy khách bằng cách viết một Cookie chứa SessionID trên máy người sử dụng. Cookie này sẽ được gửi về phía server mỗi khi người sử dụng đưa ra yêu cầu, để nhận ra sự tồn tại của người sử dụng này máy chủ phải đi tìm SessionID trong bộ nhớ và so sánh nó với SessionID trong Cookie vừa nhận được.
32
04,16:16. Page 64 DecDec--04,16:16.
Các tập hợp của đối tượng Session
§ Tương tự đối tượng Application, đối tượng Session có hai tập hợp đó là Contents và StaticObjects. Phương pháp sử dụng và truy cập tương tự như đối với Application tuy nhiên với đối tượng Session ta có thể thêm, bớt, thay đổi các giá trị của Session từ bất kì vị trí nào và các Session với từng người sử dụng là khác nhau.
04,16:16. Page 65 DecDec--04,16:16.
Các thuộc tính
§ SessionID: SessionID trả lại số định danh của Session. Số này là duy nhất cho mỗi Session
§ TimeOut: Thiết đặt thời gian hết hạn của một Session (đơn vị thời gian được tính là phút) mặc định là 20 phút.
§ Cú pháp: Session.TimeOut = số_phút.
33
04,16:16. Page 66 DecDec--04,16:16.
Các phương thức
§ Phương thức trực tiếp trong đối tượng
Session là phương thức Abandon.
§ Chức năng: hủy bỏ toàn bộ các đối tượng trong đối tượng Session giải phóng bộ nhớ cho web server. Chỉ có phiên làm việc nào thực hiện Abandon thì dữ liệu về phiên làm việc ấy mới bị giải phóng, các phiên làm việc khác giữ nguyên.
04,16:16. Page 67 DecDec--04,16:16.
Các sự kiện
§ Đối tượng Session chỉ có hai sự kiện là
– Session_OnStart – Session_OnEnd
§ Đây là hai sự kiện được xử lý trong file cấu hình Global.asa đã được đề cập ở Bài 4
34
04,16:16. Page 68 DecDec--04,16:16.
Ví dụ về việc sử dụng Session
§ Làm trang login (Xem phần Cookies)
04,16:16. Page 69 DecDec--04,16:16.
-Bài 7 - Xử lý lỗi trong ASP
35
Friday, December 10, 2004
LẬP TRÌNH WEB VỚI ASP
Đào Việt Cường Khoa CNTT – ĐHSP Hà Nội
Friday, December 10, 2004
- Chương 4 - Truy xuất CSDL với ADO
(cid:252) Chương 1: Những kiến thức cơ sở (cid:252) Chương 2: Ngôn ngữ kịch bản VBScript (cid:252)Chương 3: Lập trình web động với ASP (cid:143) Chương 4: Truy xuất CSDL trong ASP với ADO § Chương 5: Một số ứng dụng ví dụ § Chương 6: Giới thiệu ASP.Net và ADO.Net
1
Friday, December 10, 2004
Tại sao cần CSDL?
§ Một trong những lý do phổ biến nhất để xây dựng ứng dụng ASP là giúp người sử dụng Intranet, Internet có thể thao tác dữ liệu trên một CSDL từ xa.
§ Một trang web động thông thường không thể
không có mặt của CSDL.
04,16:16. Page 3 DecDec--04,16:16.
-Bài 1 - Nhắc lại về CSDL
2
Friday, December 10, 2004
1. Các đối tượng truy cập dữ liệu
§ ADO § OLE DB § ODBC § Mô hình quan hệ giữa các đối tượng
04,16:16. Page 5 DecDec--04,16:16.
ADO
§ ADO (ActiveX Data Object) cần phân biệt với
DAO (Data Access Object)
§ ADO là một tập hợp giao diện cho phép
chúng ta có thể dễ dàng truy cập CSDL OLE DB hoặc ODBC từ bất cứ một ngôn ngữ nào với tốc độ nhanh trong số đó có VBScript. – ADO là đối tượng truy cập dữ liệu mức ứng
dụng, nó dễ sử dụng. Là đối tượng trung gian cho phép truy cập dữ liệu dưới giao diện OLE DB, ODBC.
– ADO cho phép chúng ta có thể sử dụng dữ liệu
của nhiều nhà cung cấp khác nhau.
3
04,16:16. Page 6 DecDec--04,16:16.
OLE DB
§ OLE DB là một tập hợp giao diện chương trình mức hệ thống, nó cho phép truy nhập những thông tin khác nhau và nguồn dữ liệu đặt ở bất kì đâu.
§ Dữ liệu OLE DB có thể được đặt ở trong
CSDL, trong file, trong thư mục e-mail hoặc trong các nguồn dữ liệu khác
§ Chính vì OLE DB là mức hệ thống nên người lập trình có toàn quyền điều khiển tất cả các giao diện
04,16:16. Page 7 DecDec--04,16:16.
ODBC
§ ODBC cung cấp một giao diện cho phép các ứng dụng truy cập đến CSDL từ nhiều nguồn khác nhau.
§ ODBC là một phương thức cung cấp trung gian để truy cập CSDL một cách đồng bộ, thống nhất.
§ Nó là một công cụ được sử dụng rộng rãi để truy cập đến CSDL quan hệ, có thể kết nối với Microsoft Access, SQL Server, Oracle, Foxpro...
4
04,16:16. Page 8 DecDec--04,16:16.
Mô hình
Application (VB, VC, ASP...) Application (VB, VC, ASP...)
ADOADO
OLE DB OLE DB
JETJET
SQLSQL
Oracle Oracle
ODBC ODBC
JETJET
SQLSQL
Oracle Oracle
Access Access
Oracle Oracle
Access Access
SQL SQL Server Server
SQL SQL Server Server
Oracle Oracle 04,16:16. Page 9
DecDec--04,16:16.
2. Các lệnh SQL thao tác trên dữ liệu
§ SELECT § INSERT § UPDATE § DELETE
5
04,16:16. Page 10 DecDec--04,16:16.
-Bài 2 - Truy cập CSDL trong ASP
Friday, December 10, 2004
Các bước chính
§ Sử dụng đối tượng Connection kết nối tới CSDL § Thực hiện câu truy vấn SQL để thao tác với dữ liệu
– Các câu truy vấn có thể thực hiện trực tiếp bởi Connection, có thể thực hiện bởi Command
– Nếu là câu truy vấn SELECT thì sử dụng đối tượng
RecordSet để lưu trữ kết quả § Xử lý kết quả trả về từ truy vấn § Ngắt kết nối, giải phóng các đối tượng đã tạo ra, trả
lại tài nguyên hệ thống
6
04,16:16. Page 12 DecDec--04,16:16.
1. Tạo kết nối đến dữ liệu
§ Để tạo kết nối đến dữ liệu sử dụng đối tượng
Connection ta qua các bước
§ Bước 1: Tạo đối tượng Connection
– Đối tượng Connection được tạo ra bởi lệnh
CreateObject của đối tượng Server
– Cú pháp: Set Conn=Server.CreateObject("ADODB.Connection")
§ Bước 2: Cung cấp chuỗi kết nối
(ConnectionString), mở CSDL bằng Phương thức Open
04,16:16. Page 13 DecDec--04,16:16.
Chuỗi kết nối
§ Chuỗi kết nối, ConnectionString là chuỗi dùng để cung cấp các thông tin cần thiết nhằm báo cho hệ thống biết ta muốn truy cập CSDL nào.
§ ConnectionString bao gồm nhiều cặp: Khoá=Giá_trị phân
cách nhau bởi dấu chấm phảy (;)
§ Ví dụ: Chuỗi kết nối bằng OLE DB đến CSDL MS Access
nằm ở C:\DATA\MyData.MDB Provider=Microsoft.JET.OLEDB.4.0; Data Source=“C:\DATA\MyData.MDB”
§ Thông thường, với CSDL Access ta dùng phương thức
MapPath để xác định đường dẫn vật lý của file trên thư mục ảo
§ Web site: http://www.connectionstrings.com/
7
04,16:16. Page 14 DecDec--04,16:16.
Một số chuỗi kết nối OLE DB thông dụng
Access
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;User Id=admin;Password=;"
SQL Server
"Provider=sqloledb;Data Source=Aron1;Initial Catalog=pubs;User Id=sa;Password=asdasd;"
Oracle
"Provider=msdaora;Data Source=MyOracleDB;User Id=UserName;Password=asdasd;"
Một số chuỗi kết nối ODBC thông dụng
Access
04,16:16. Page 15 DecDec--04,16:16.
"Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;Uid=Admin ;Pwd=;"
SQL Server
"Driver={SQL Server}; Server=Aron1; Database=pubs; Uid=sa;Pwd=asdasd;"
Oracle
"Driver={Microsoft ODBC for Oracle};Server=OracleServer.world; Uid=Username;Pwd=asdasd;"
8
04,16:16. Page 16 DecDec--04,16:16.
Mã lệnh tạo kết nối
<% ...
Dim Conn, StrConn Set Conn=Server.CreateObject(“ADODB.Connection”) StrConn=“PROVIDER=Microsoft.JET.OLEDB.4.0;Data
Source=C:\Data\MyData.mdb;”
Conn.Open StrConn
‘Các lệnh xử lý dữ liệu khác
Conn.Close Set Conn=Nothing
... %>
04,16:16. Page 17 DecDec--04,16:16.
Kết nối đến file dữ liệu Access
§ Thông thường nếu sử dụng CSDL Access thì file dữ liệu .MDB được đặt trong thư mục của web. Khi đó để biết được đường dẫn vật lý của file dữ liệu ta sử dụng Server.MapPath
§ Chuỗi kết nối trở thành: StrConn = “PROVIDER=Microsoft.JET.OLEDB.4.0;Data Source=" & Server.MapPath("MyData.MDB") & ";”
9
04,16:16. Page 18 DecDec--04,16:16.
2. Thực thi SQL § Để thực hiện các lệnh SQL dùng phương thức
Execute của đối tượng Connection đã được tạo trước § Cú pháp:
Conn.Execute "SQL"
Hoặc
Set biến=Conn.Execute("SQL Select")
§ Chú ý:
– Conn là biến được tạo bởi
Server.CreateObject(“ADODB.Connection”)
– Nếu là câu truy vấn SELECT ta cần phải sử dụng “(“ và “)” đồng thời phải gán 1 biến để lưu kết quả truy vấn (kết quả truy vấn là 1 RecordSet)
04,16:16. Page 19 DecDec--04,16:16.
3. Làm việc với RecordSet § RecordSet là tập hợp các bản ghi. Biến có kiểu
RecordSet thường được dùng để chứa kết quả của một câu truy vấn SELECT.
§ Tạo một biến RecordSet (2 cách)
– Sử dụng phương thức Server.CreateObject:
Set rs=Server.CreateObject(“ADODB.RecordSet”) Sau đó, muốn thực hiện truy vấn thì dùng: Rs.Open “SELECT...”, Conn
– Biến RecordSet là kết quả thực thi truy vấn SELECT của
đối tượng Connection Set rs=Conn.Execute(“SELECT...”)
§ Sau khi sử dụng xong RecordSet ta cần giải phóng
đối tượng này bằng: Rs.Close Set rs=Nothing
10
04,16:16. Page 20 DecDec--04,16:16.
Dịch chuyển con trỏ bản ghi
§ Con trỏ bản ghi: Tại một thời điểm ta chỉ có thể truy cập được một bản ghi trong RecordSet, bản ghi này gọi là bản ghi hiện thời. Và ta tưởng tượng có một “Con trỏ” đang trỏ vào bản ghi này. Con trỏ này gọi là “Con trỏ bản ghi”
§ Để dịch chuyển con trỏ bản ghi ta sử dụng các
phương thức: – MoveFirst: Di chuyển con trỏ bản ghi về bản ghi đầu tiên – MoveLast: Di chuyển con trỏ bản ghi về bản ghi cuối cùng – MoveNext: Di chuyển con trỏ bản ghi sang bản ghi tiếp
sau
– MovePrevious: Di chuyển con trỏ bản ghi sang bản ghi
liền trước
04,16:16. Page 21 DecDec--04,16:16.
Hướng dịch chuyển con trỏ bản ghi § Mặc định, khi ta mở một RecordSet ta chỉ có thể dịch chuyển
con trỏ bản ghi tiến lên.
§ Để thay đổi khả năng dịch chuyển con trỏ ta cần thay đổi kiểu
con trỏ bản ghi CursorType.
§ Cách thực hiện:
– Cách 1: ... set rs=Server.CreateObject("ADODB.RecordSet") rs.CursorType = Kiểu_Con_Trỏ rs.Open ... ... – Cách 2: ... rs.Open "SELECT... ", Conn, Kiểu_Con_Trỏ ...
11
04,16:16. Page 22 DecDec--04,16:16.
Danh sách các kiểu con trỏ § adOpenForwardOnly (0):
– Chỉ có thể dịch chuyển tiến lên – Truy xuất dữ liệu nhanh
§ adOpenKeyset (1):
– Giống adOpenDynamic – Không thể nhìn thấy những bản ghi mới thêm vào của NSD khác – Ta không thể truy cập vào bản ghi NSD khác đã xoá đi (việc truy cập
sẽ gây ra lỗi)
– Vẫn thấy việc sửa đổi các bản ghi của NSD khác.
§ adOpenDynamic (2):
– Có thể thấy tất cả sự thay đổi dữ liệu của người SD khác – Có thể dịch chuyển con trỏ theo mọi hướng – Không sử dụng được phân trang và Bookmark
§ adOpenStatic (3):
– Có thể dịch chuyển con trỏ theo mọi hướng – Cho phép phân trang
04,16:16. Page 23 DecDec--04,16:16.
Kiểm tra giới hạn của con trỏ bản ghi
§ BOF: (Begin Of File) kiểu boolean
– True: Con trỏ bản ghi nằm ở trước bản ghi đầu, ta không
thể sử dụng MovePrevious § EOF: (End Of File) kiểu boolean
– True: Con trỏ bản ghi nằm ở sau bản ghi cuối, ta không
thể sử dụng MoveNext
§ Chú ý:
– Trước khi dịch chuyển con trỏ bản ghi ta cần kiểm tra các
giá trị này để tránh gây ra lỗi.
– Một RecordSet là rỗng (không có bản ghi nào) nếu tại một
thời điểm cả 2 giá trị BOF và EOF đều có giá trị TRUE
12
04,16:16. Page 24 DecDec--04,16:16.
Duyệt RecordSet
§ Kiểm tra xem RecordSet có rỗng không?
– Nếu rỗng (rs.Eof=True and Rs.Bof=True):
Thông báo rỗng và kết thúc duyệt
– Nếu không:
• Chuyển con trỏ bản ghi về bản ghi đầu tiên (nếu cần)
(rs.MoveFirst)
• Chừng nào chưa hết bản ghi (rs.Eof=False)
– Làm các việc với bản ghi hiện tại – Chuyển sang bản ghi tiếp (Rs.MoveNext)
04,16:16. Page 25 DecDec--04,16:16.
Đoạn chương trình minh hoạ
<% ... If rs.Eof and rs.Bof then
Response.Write “Khong co DL”
Else
Rs.MoveFirst WhileNot rs.Eof
‘Cac cong viec voi ban ghi hien tai Rs.MoveNext
wend
Endif ... %>
13
04,16:16. Page 26 DecDec--04,16:16.
Đọc giá trị các trường của RecordSet
§ Để truy cập đến các trường của một RecordSet ta sử dụng tập hợp Fields
§ Cú pháp:
– Rs.Fields(“Tên_trường”) – Hoặc Rs.Fields(STT_Trường)
§ Chú ý:
– Tập hợp Fields là tập hợp mặc định của
ta cóth ể bỏ qua chữ Fields trong
RecordSet fi cách viết trên.
– Thông thường ta chỉ sử dụng tập hợp này để đọc
giátr ị của trường (ít dùng để cập nhật giátr ị)
Cập nhật giá trị các trường của bản ghi hiện tại
§ Cách 1: Sử dụng câu truy vấn UPDATE § Cách 2: Sử dụng Edit... Update và AddNew...
04,16:16. Page 27 DecDec--04,16:16.
Update Rs.Edit ‘Thay đổi giá trị các trường Rs.Update
§ Trong trường hợp ta thêm muốn thêm một
bản ghi mới thì ta sử dụng: Rs.AddNew ‘Thay đổi giá trị các trường Rs.Update
14
04,16:16. Page 28 DecDec--04,16:16.
Ví dụ về duyệt RecordSet § Đoạn mã dưới đây hiển thị danh sách khách hàng trong
CSDL Northwind.mdb đặt ở C:\DATA
<% Dim Conn, StrConn, Rs Set Conn=Server.CreateObject(“ADODB.Connection”) StrConn=“PROVIDER=Microsoft.JET.OLEDB.4.0;Data Source=C:\Data\Northwind.mdb;” Conn.Open StrConn Set rs=Conn.Execute(“SELECT * FROM Customers”) If rs.Eof and rs.Bof then Response.Write “Không có khách hàng nào” Else
Response.Write “Danh sách khách hàng
”
whilenot Rs.Eof
Response.Write rs(“ContactName”) & “
”
Rs.MoveNext Wend
Endif Rs.Close Set rs=Nothing Conn.Close Set Conn=Nothing %>
04,16:16. Page 29 DecDec--04,16:16.
Phân trang kết quả
§ Thông thường, khi kết quả trả về là một số
lượng lớn bản ghi ta cần phải thực hiện việc phân trang các kết quả hiển thị.
§ Một RecordSet có thể được chia thành nhiều trang, số lượng bản ghi trong một trang gọi là PageSize (trừ trang cuối cùng có thể có ít bản ghi hơn)
§ Để thực hiện phân trang ta sử dụng một số
thuộc tính: PageSize, PageCount, AbsolutePage của đối tượng RecordSet
15
04,16:16. Page 30 DecDec--04,16:16.
Các thuộc tính sử dụng trong phân trang
§ Để sử dùng được phân trang ta phải đặt
thuộc tính CursorType của RecordSet là 3. § Ta sử dụng 3 thuộc tính sau cho việc phân
trang: – PageSize: Đặt kích thước trang (số lượng bản
ghi trên 1 trang)
– PageCount: Số trang sau khi phân (chỉ đọc) – AbsolutePage: trang hiện tại đang được truy
cập. Có thể thiết lập hoặc đọc giá trị
04,16:16. Page 31 DecDec--04,16:16.
Đoạn mã phân trang RecordSet
<% Dim Conn, StrConn, Rs Set Conn=Server.CreateObject(“ADODB.Connection”) StrConn=“PROVIDER=Microsoft.JET.OLEDB.4.0;Data Source=C:\Data\Northwind.mdb;” Conn.Open StrConn Set rs=Server.CreateObject("ADODB.RecordSet") rs.CursorType=3 rs.Open “SELECT * FROM Customers”, Conn rs.PageSize = 20 If rs.Eof and rs.Bof then Response.Write “Không có khách hàng nào” Else
Response.Write “Danh sách khách hàng ở trang 1
”
Response.Write “Tổng số trang:" & rs.PageCount & "
”
Rs.AbsolutePage = 1
while Rs.AbsolutePage=1
Response.Write rs(“ContactName”) & “
”
Rs.MoveNext Wend
Endif Rs.Close Set rs=Nothing Conn.Close Set Conn=Nothing %>
16
04,16:16. Page 32 DecDec--04,16:16.
-Bài 3 - Xử lý lỗi truy cập CSDL
17
Friday, December 10, 2004
LẬP TRÌNH WEB VỚI ASP
Đào Việt Cường Khoa CNTT – ĐHSP Hà Nội
Friday, December 10, 2004
- Chương 5 - Ứng dụng ví dụ
(cid:252)Chương 1: Những kiến thức cơ sở (cid:252)Chương 2: Ngôn ngữ kịch bản VBScript (cid:252)Chương 3: Lập trình web động với ASP (cid:252)Chương 4: Truy xuất CSDL trong ASP với ADO (cid:144) Chương 5: Một số ứng dụng ví dụ § Chương 6: Giới thiệu ASP.Net và ADO.Net
1
Friday, December 10, 2004
Bài toán
Friday, December 10, 2004
Yêu cầu tổng thể
§ Xây dựng web site cho phép giới thiệu,
quảng cáo, các thể loại sách
§ Cho phép khách hàng có thể tìm kiếm, bình
chọn, đánh giá và đặt mua từ xa dưới một số hình thức (gửi thư, đơn đặt hàng, gọi điện) § Người quản trị có thể cập nhật sách, bổ sung
các thông tin khác
§ Công cụ:
– Hệ quản trị CSDL: SQL Server 2000 – Ngôn ngữ lập trình: Active Server Pages
2
04,16:17. Page 4 DecDec--04,16:17.
Yêu cầu tổng thể
§ Xây dựng web site cho phép giới thiệu,
quảng cáo, các thể loại sách
§ Cho phép khách hàng có thể tìm kiếm, bình
chọn, đánh giá và đặt mua từ xa dưới một số hình thức (gửi thư, đơn đặt hàng, gọi điện) § Người quản trị có thể cập nhật sách, bổ sung
các thông tin khác
§ Công cụ:
– Hệ quản trị CSDL: SQL Server 2000 – Ngôn ngữ lập trình: Active Server Pages
04,16:17. Page 5 DecDec--04,16:17.
Các chức năng chính
1. Biên mục, cập nhật sách 2. Giới thiệu sách 3. Tìm kiếm sách 4. Đánh giá bình luận 5. Đặt hàng 6. Thống kê và cho phép xem thông tin khác
§ Sách bán chạy § Sách liên quan
3
04,16:17. Page 6 DecDec--04,16:17.
Biên mục, cập nhật sách
§ Cho phép cập nhật (thêm, xoá, sửa) danh
sách các quyển sách (có các thông tin kèm theo)
§ Cần có cơ chế phân chia sách thành các loại
khác nhau: Giáo trình, sách tham khảo,... fi Cần cóthêm ch ức năng cập nhật danh mục
phân loại.
04,16:17. Page 7 DecDec--04,16:17.
Giới thiệu sách
Tên sách 1
Ảnh 1
Một số thông tin khác (loại, giá bán, mức độ bình chọn...)
Tên sách 3
§ Cho phép trình bày một số quyển sách trên trang web (dạng như hình bên)
Ảnh 2
Một số thông tin khác (loại, giá bán, mức độ bình chọn...)
Tên sách 3
Ảnh 3
Một số thông tin khác (loại, giá bán, mức độ bình chọn...)
....
§ Kích vào quyển nào thì hiện ra thông tin chi tiết của quyển đó. § Có thêm nút để đưa vào giỏ hàng, bình chọn, bình luận cho sách
4
04,16:17. Page 8 DecDec--04,16:17.
Tìm kiếm sách
§ Cho phép tìm kiếm theo nhiều tiêu chí khác
nhau
§ Cho phép lựa chọn phạm vi tìm kiếm § Có 2 mức độ tìm kiếm: đơn giản, nâng cao § Cho phép tìm chính xác hoặc gần chính xác § Cho phép lựa chọn trình bày kết quả (tiêu chí
sắp xếp, số sách/trang...)
§ Kết quả hiển thị giống chức năng trình bày
sách
04,16:17. Page 9 DecDec--04,16:17.
Đánh giá, bình luận
§ Cho phép khách hàng đánh giá quyển sách
theo mức độ ưa thích
§ Có 5 mức độ ứng với 5 sao § Có thể cho phép ghi thêm lời bình luận cho
sách
5
04,16:17. Page 10 DecDec--04,16:17.
Đặt hàng
§ Khách hàng có thể lựa chọn sách, số lượng
mỗi quyển
§ Có thể gửi đơn đặt hàng kèm phương thức thanh toán, địa chỉ giao hàng, nhận hàng về máy chủ
§ Cho phép người quản lý xem các thông tin
đặt hàng
§ ...
04,16:17. Page 11 DecDec--04,16:17.
Thống kê
§ Dựa vào đặt hàng và sự đánh giá của khách,
thống kê các thông tin § Sách bán chạy § Sách được đánh giá tốt
6
04,16:17. Page 12 DecDec--04,16:17.
Các thông tin của quyển sách
§ Giá tiền § Số trang § Cân nặng § Sách có liên quan § Ảnh bìa § File kèm theo
§ Loại sách § Tên sách § ISBN § Tác giả § Nhà xuất bản § Năm xuất bản § Chủ đề § Từ khoá § Ngôn ngữ
04,16:17. Page 13 DecDec--04,16:17.
CSDL
7
04,16:17. Page 14 DecDec--04,16:17.
8
04,16:17. Page 15 DecDec--04,16:17.