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:

chú_thích

§ 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

method="phương_thức" name="tên_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 – Thêm selected 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

+, -, *, /

^

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)

LOGIN

Username:
Password:

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.