Bài giảng Lập trình mạng (Phần 2)
3.1. Javascript
3.1.1. Giới thiệu Javascript
JavaScript là ngôn ngữ dưới dạng script có thể gắn với các file HTML. Nó không
được biên dịch mà được trình duyệt diễn dịch. Không giống Java phải chuyển thành các
mã để biên dịch, trình duyệt đọc JavaScript dưới dạng mã nguồn. Chính vì vậy Chúng ta có
thể dễ dàng học JavaScript qua ví dụ bởi vì Chúng ta có thể thấy cách sử dụng JavaScript
trên các trang Web.
JavaScript là ngôn ngữ dựa trên đối tượng, có nghĩa là bao gồm nhiều kiểu đối tượng,
ví dụ đối tượng Math với tất cả các chức năng toán học. Tuy vậy JavaScript không là ngôn
ngữ hướng đối tượng như C++ hay Java do không hỗ trợ các lớp hay tính thừa kế.
JavaScript có thể đáp ứng các sự kiện như tải hay loại bỏ các form. Khả năng này cho
phép JavaScript trở thành một ngôn ngữ script động.
Giống với HTML và Java, JavaScript được thiết kế độc lập với hệ điều hành. Nó có
thể chạy trên bất kỳ hệ điều hành nào có trình duyệt hỗ trợ JavaScript. Ngoài ra JavaScript
giống Java ở khía cạnh an ninh: JavaScript không thể đọc và viết vào file của người dùng.
Các trình duyệt web như Nescape Navigator 2.0 trở đi có thể hiển thị những câu lệnh
JavaScript được nhúng vào trang HTML. Khi trình duyệt yêu cầu một trang, server sẽ gửi
đầy đủ nội dung của trang đó, bao gồm cả HTML và các câu lệnh JavaScript qua mạng tới
client. Client sẽ đọc trang đó từ đầu đến cuối, hiển thị các kết quả của HTML và xử lý các
câu lệnh JavaScript khi nào chúng xuất hiện.
Các câu lệnh JavaScript được nhúng trong một trang HTML có thể trả lời cho các sự
kiện của người sử dụng như kích chuột, nhập vào một form và điều hướng trang. Ví dụ
Chúng ta có thể kiểm tra các giá trị thông tin mà người sử dụng đưa vào mà không cần đến
bất cứ một quá trình truyền trên mạng nào. Trang HTML với JavaScript được nhúng sẽ
kiểm tra các giá trị được đưa vào và sẽ thông báo với người sử dụng khi giá trị đưa vào là
không hợp lệ.
Mục đích của phần này là giới thiệu về ngôn ngữ lập trình JavaScript để Chúng ta có
thể viết các script vào file HTML của mình.

Trang 1

Trang 2

Trang 3

Trang 4

Trang 5

Trang 6

Trang 7

Trang 8

Trang 9

Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Bài giảng Lập trình mạng (Phần 2)
Giá trị mặc định
3) Đối tƣợng Recordset
Các phƣơng thức của đối tƣợng Recordset
Phƣơng thức Diễn giải
Addnew Tạo mới Record
Cancel Hủy thao tác đang thực thi
Close Đóng Recordset và đối tƣợng liên quan
Delete Xóa record hay tập record hiện thời
Find Tìm một record thỏa mãn điều kiện
MoveFirset Đƣa vị trị của record hiện hành về record đầu tiên
MoveLast Đƣa vị trị của record hiện hành về record cuối cùng
MoveNext Đƣa vị trị của record hiện hành về record tiếp theo
MovePrivious Đƣa vị trị của record hiện hành về record trƣớc đó
195
Open Mở một recordset
Requery Cập nhật lại dữ liệu bằng cách thực hiện lại cậu lệnh
truy vấn ban đầu
Resync Làm tuơi lại dữ liệut rong đối tƣợng Recorset hiện thời
Save Lƣu Recordset vào tệp
Seek Tìm chỉ mục Recordset
Update Lƣu thay đổi
GetRows Lấy nhiều record đƣa vào một mảng
GetString Trả về recordset dƣới dạng chuỗi
a. Phương thức Open
Cú pháp: objRs.Open Source, Connection, CursorType, Locktype, Options
b. Phương thức Addnew
Cho phép tạo một bản ghi mới, gán dữ liệu mới cho các field của các bản ghi và nó
chỉ đƣợc cập nhật vào CSDL khi ta gọi phƣơng thức Update hay Updatebatch
c. Phương thức Update
Phƣơng thức này dùng để cập nhật bản ghi hiện thời trong CSDL
d. Phương thức Delete
phƣơng thức này cho phép xóa bản ghi trong Recordset
Cú pháp: objRs.Delete
e. Phương thức Close: Ngắt kết nối với CSDL
Lưu trữ dữ liệu trả về
ADO sử dụng đối tƣợng Recordset để lƣu trữ kết quả trả về từ câu truy vấn dữ liệu
SELECT. Vì kết quả trả về của một câu truy vấn SELECT có nhiều bản ghi, cho nên có thể
xem Recordset nhƣ mảng các bản ghi.
Có 2 cách lấy dữ liệu từ câu truy vấn đặt vào biến Recordset:
Thực hiện phƣơng thức Exexute của đối tƣợng Connection nhƣ câu lệnh truy vấn và
trả về kết quả cho Recordset.
Ví dụ: Set rs = Conn.Execute(strSQL)
196
Tạo một thực thể cho đối tƣợng Recordset và sử dụng phƣơng thức Open, kết hợp với
đối tƣợng Connection đã tạo.
Hiển thị dữ liệu trả về
Khi muốn lấy dữ liệu của một trƣờng trong bản ghi hiện hành, lấy chuỗi tên của
trƣờng đó nhƣ là đối số cho đối tƣợng Recordset hay đối số của thuộc tính Fields của đối
tƣợng Recordset. Ví dụ objRS(―HOTEN‖) hay objRS.Fields(―HOTEN‖).
Khi muốn dịch chuyển qua lại đến các bản ghi đƣợc lƣu trong đối tƣợng Recordset,
sử dụng phƣơng thức MoveNext, MovePrevious, MoveFirst, MoveLast và phải đi kèm với
việc kiểm tra bản ghi hiện thời đang ở vị trí đầu hay cuối bản ghi. Để làm điều đó, dùng
thuộc tính BOF hoặc EOF để kiểm tra.
Ví vụ 4.63: Đọc dữ liệu từ bảng cơ cở dữ liệu sinhvien trong cơ sở dữ liệu
Quanlysinhvien.mdb
<%
'khai báo biến kết nối cơ sở dữ liệu
Dim cnn
' tạo đối tượng kết nối
set cnn = Server.CreateObject("ADODB.Connection")
' Tạo xâu kết nối
cnn.Connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0; Data
Source=D:\asp\quanlysinhvien.mdb"
' Mở kết nối
cnn.open
Dim rs, sql
' tạo đối tượng RecordSet
set rs = Server.CreateObject("ADODB.RecordSet")
' Tạo câu lệnh sql
sql = "Select * from sinhvien"
' Mở RecordSet
rs.open sql, cn, 1, 3
while (Not rs.eof )
response.write(rs("masv") &" " & rs("Tensv") &" " & rs("malop")& ""
)
rs.MoveNext
wend
%>
197
4) Đối tƣợng Record
Đối tƣợng này lƣu trữ bản ghi trong Recordset, một thực mục hay tệp tin trong File
System. Để sử dụng đối tƣợng này cần phải khai báo thực thể cho đối tƣợng Recordset.
Dim objRec
Set objRec = Server.CreateObject (“ADODB.Record”)
Đối tƣợng Recordset có các phƣơng thức sau:
Phƣơng thức Diễn giải
Cancel Hủy thực hiện trên Record
Close Đóng đối tƣợng Record
CopyRecord Copy tệp hay thƣ mục
DeleteRecord Xóa một tệp hoặc thƣ mục
GetChildren
Trả về một đối tƣợng Recordset, mỗi dòng của Recordset lƣu
trong tệp hoặc thƣ mục
MoveRecord Di chuyển một tệp hay một thƣ mục
Open Mở một đối tƣợng Record tồn tại, tạo mới một tệp hoặc thƣ mục
a. Phương thức Open
Sau khi tạo thực thể của Record, có thể dùng phƣơng thức này để open, tạo mới một
tệp hay tạo mới một thƣ mục:
Cú pháp:
objRec.Open
Source,ActiveConnection,[Model],[CreateOption],[Option],[user],[Passwd])
b. Phương thức CopyRecord; dùng để chép một tệp hay một thư mục đến nơi khác.
Cú pháp:
objRec.CopyRecord (Source, Destionation, Username, Password,opt,async)
c. Phương thức DeleteRecord xóa một tệp hoặc thư mục chỉ định
Cú pháp:
objRec.DeleteRecord(Source,Async)
5) Đối tƣợng Stream
Dùng để lƣu trữ luồng dữ liệu dạng text hoặc nhị phân. Trƣớc khi sử dụng cần phải khai
báo
198
Set objStream = Server.CreateObject(“ADODB.Stream”)
Các phƣơng thức Stream:
Close Đóng đối tƣợng Stream
Copyto Chép một số kí tự hoặc byte từ đối tƣợng Stream này sáng đối
tƣợng Stream khác
Flush Gửi nội dung của đối tƣợng Stream
LoadFromFile Lấy nội dung của một đối tƣợng vào đối tƣợng Stream
Open Mở một đối tƣợng stream từ URL hay đối tƣợng Record
Read Đọc số lƣợng byte trong đối tƣợng Stream chứa dữ liệu nhị phân
ReadText Đọc số kí tự trong đối tƣợng Stream chứa nội dung là text
SaveToFile Lƣu nội dụng đối tƣợng Stream vào tệp
SetEOS Thiết lập thuộc tính của EOS đối với vị strí hiện thời
SkipLine Bỏ qua một dòng khi đọc một Text Stream
Write Ghi một số lƣợng byte của dữ liệu nhị phần và đối tƣợng Stream
WriteText Ghi dữ liệu dạng Text vào đối tƣợng Stream
4.8.3. Tập hợp các Errors
Tập hợp Errors (Errors Collection) chứa tất cả các đối tƣợng Errors (Error objects).
Tất cả các đối tƣợng Errors thuộc về hệ điều hành riêng kết hợp với ADO. Tập hợp Errors
là chức năng chỉ có hiệu lực với các cơ sở dữ liệu đặc biệt nhƣ SQL server. Điều này đặc
biệt có lợi khi thực hiện các câu lệnh có hơn nhiều một lỗi.
Tập hợp Errors có một phƣơng thức và hai thuộc tính:
- Clear method : Phƣơng thức xoá bỏ tất cả các đối tƣợng Errors trong tập hợp.
Phƣơng thức này đƣợc sử dụng để xoá bỏ hoàn toàn các lỗi.
- Count property : Thuộc tính trả lại số của đối tƣợng Errors hiện tại có trong tập hợp.
- Item property : Thuộc tính trả lại đối tƣợng Errors đƣợc chỉ định.
Đối tƣợng Error
Chứa chi tiết lỗi ADO bị máy chủ bắt lỗi của nhà cung cấp dữ liệu. Tập này đƣợc xoá
bỏ mỗi lần hoạt động mới gây ra lỗi. Từ đối tƣợng Errors có thể truy tìm tên, số và miêu tả
của lỗi gây ra.
Các thuộc tính của đối tƣợng Error
199
Description: chuỗi miêu tả gắn với lỗi.
HelpContext: giá trị ngữ cảnh trong file Help (nếu thuộc tính HelpFile kèm theo chỉ
rằng có file trợ giúp Windows kết hợp với đối tƣợng Errors).
HelpFile: chuỗi đƣờng dẫn và tên file của file Help Windows.
NativeError: mã lỗi do nhà cung cấp dữ liệu địa phƣơng gây ra.
Number: số lỗi đối với đối tƣợng Error (bằng 0 nếu không có lỗi).
Source: chuỗi đại diện cho tên đối tƣợng hoặc ứng dụng gây lỗi ADO.
SQLState: mã lỗi 5 ký tự do nhà cung cấp trả lại.
Ví dụ 4.64: đoạn mã sau đây đọc các và hiển thị các lỗi
<%
For Each dbError In Conn.Errors
Response.Write "" & dbError.Description & ""
Response.Write "" & CStr(dbError.NativeError) & ""
Response.Write "" & dbError.SQLState & ""
Next
Conn.Errors.Clear
%>
4.8.4. Stored Procedure và truyền tham số
Thủ tục lƣu trữ là một đối tƣợng trong CSDL, bao gồm nhiều câu lệnh T-SQL đƣợc
tập hợp lại với nhau thành một nhóm, và tất cả các lệnh này sẽ đƣợc thực thi khi thủ tục
lƣu trữ đƣợc thực thi.Với thủ tục lƣu trữ, một phần nào đó khả năng của ngôn ngữ lập trình
đƣợc đƣa vào trong ngôn ngữ SQL.
Thủ tục lƣu trữ có thể có các thành phần sau: Các cấu trúc điều khiển (IF, WHILE,
FOR ) có thể đƣợc sử dụng trong thủ tục. Bên trong thủ tục lƣu trữ có thể sử dụng các biến
nhƣ trong ngôn ngữ lập trình nhằm lƣu giữ các giá trị tính toán đƣợc, các giá trị đƣợc truy
xuất đƣợc từ cơ sở dữ liệu. Một tập các câu lệnh SQL đƣợc kết hợp lại với nhau thành một
khối lệnh bên trong một thủ tục. Một thủ tục có thể nhận các tham số truyền v ào cũng nhƣ
có thể trả về các giá trị thông qua các tham số (nhƣ trong các ngôn ngữ lập trình). Khi một
thủ tục lƣu trữ đã đƣợc định nghĩa, nó có thể đƣợc gọi thông qua tên thủ tục, nhận các tham
số truyền vào, thực thi các câu lệnh SQL bên trong thủ tục và có thể trả về các giá trị sau
khi thực hiện xong.
1) Lợi ích của việc sử dụng thủ tục lƣu trữ:
SQL Server chỉ biên dịch các thủ tục lƣu trữ một lần và sử dụng lại kết quả biên dịch
này trong các lần tiếp theo trừ khi ngƣời dùng có những thiết lập khác. Việc sử dụng lại kết
200
quả biên dịch không làm ảnh hƣởng đến hiệu suất hệ thống khi thủ tục lƣu trữ đƣợc gọi
liên tục nhiều lần.
Thủ tục lƣu trữ đƣợc phân tích, tối ƣu khi tạo ra nên việc thực thi chúng nhanh hơn
nhiều so với việc phải thực hiện một tập rời rạc các câu lệnh SQL tƣơng đƣơng theo cách
thông thƣờng. Thủ tục lƣu trữ cho phép chúng ta thực hiện cùng một yêu cầu bằng một câu
lệnh đơn giản thay vì phải sử dụng nhiều dòng lệnh SQL. Điều này sẽ làm giảm thiểu sự
lƣu thông trên mạng.
Thay vì cấp phát quyền trực tiếp cho ng ƣời sử dụng trên các câu lệnh SQL và trên
các đối tƣợng cơ sở dữ liệu, ta có thể cấp phát quyền cho ngƣời sử dụng thông qua các thủ
tục lƣu trữ, nhờ đó tăng khả năng bảo mật đối với hệ thống.
Các thủ tục lƣu trữ trả về kết quả theo 4 cách:
- Sử dụng các tham số output.
- Sử dụng các lệnh trả về giá trị, các lệnh này luôn trả về giá trị số nguyên.
- Tập các giá trị trả vể của mỗi câu lệnh SELECT có trong thủ tục lƣu trữ hoặc của
quá trình gọi một thủ tục lƣu trữ khác trong một thủ tục lƣu trữ.
- Một biến con trỏ toàn cục có thể tham chiếu từ bên ngoài thủ tục.
2) Tạo thủ tục lƣu trữ
Thủ tục lƣu trữ đƣợc tạo thông qua câu lệnh Create Procedure.
Cú pháp nhƣ sau:
Create Procedure tên_thủ_tục [(danh_sách_tham_số)]
[With Recompile|Encryption|Recompile,Encryption]
As
Các_câu_lệnh_của_thủ_tục
Trong đó:
With Recompile: yêu cầu SQL Server biên dịch lại thủ tục lƣu trữ mỗi khi đƣợc gọi.
With Encryption: yêu cầu SQL Server mã hóa thủ tục lƣu trữ.
Các_câu_lệnh_của_thủ_tục: Các lệnh T-SQL. Các lệnh này có thể nằm trong cặp
BEGINEND hoặc không.
3) Truyền tham số
Cách viết nhƣ trên có hạn chế là: trong quá trình làm việc sẽ có rất nhiều đơn đặt
hàng mới, do đó ngƣời dùng sẽ phải viết đi viết lại những câu lệnh tƣơng tự nhau cho các
khách hàng khác nhau. Một cách giải quyết vấn đề này là dùng thủ tục lƣu trữ và dùng
tham số để nhận các thông tin thay đổi.
Ví dụ 4.65:
create procedure sp_InsertOrderAndOrderDetail
201
@customerid int,
@orderdate datetime,
@orderid int,
@itemid int,
@quantity decimal,
as
begin
insert into orders
values(@customerid, @orderdate)
insert into orderdetail
values(@orderid, @itemid, @quantity)
end
Thực hiện thủ tực lưu trữ này như sau:
sp_InsertOrderAndOrderDetail „3‟, „22/7/2008‟, „4‟, „1‟, „10‟)
4) Thực thi một Store Procedure
Thủ tục lƣu trữ đƣợc gọi theo cấu trúc
Tên_thủ_tục_lƣu _trữ [danh_sách_tham_số]
Cần lƣu ý là danh sách tham số truyền vào trong lời gọi phải theo đúng thứ tự khai
báo
các tham số trong thủ tục lƣu trữ.
Nếu thủ tục đƣợc gọi từ một thủ tục khác, thực hiện b ên trong một trigger hay phối
hợp
với câu lệnh SELECT, cấu trúc nhƣ sau;
Exec Tên_thủ_tục_lƣu _trữ [danh_sách_tham_số]
Ví dụ 4.66: Thực thi một procedure sp_InsertOrderAndOrderDetail bằng asp
<%
Dim customerid,orderdate, orderid, itemid, quantity
customerid = 4
orderdate = ―22/7/2008‖
orderid = 4
itemid = 1
quantity = 10
sql = "EXEC sp_InsertOrderAndOrderDetail " &_
" @ customerid =" & customerid & "," &_
" @ orderdate ='" & orderdate & "'," &_
" @ orderid ='" & orderid & "'," &_
202
" @ itemid =" & itemid & "," &_
" @ quantity =" & quantity
set conn = CreateObject("ADODB.Connection")
conn.open ""
conn.execute sql, , 129
Response.write("Record updated.")
conn.close
set conn = nothing
%>
203
Câu hỏi và Bài tập chƣơng 4
1. Dùng câu lệnh Response.Write() để tạo ra giao diện nhƣ sau
2. Dùng vòng lặp for để hiển thị các dòng tiêu đề nhƣ sau (hiển thị qua thẻ )
Header 1
Header 2
Header 3
Header 4
Header 5
Header 6
3. Viết chƣơng trình bằng asp hiện ra màn hình ngày hiện hành trong tuần bằng tiếng
việt.
4. Viết chƣơng trình in ra màn hình 10 dòng chữ Helloworld kích thƣớc tăng dần
5. Tạo CSDL EShop trong SQL Server hoặc Access gồm các bảng sau:
-Tạo bảng catalogs
-Tạo bảng products
-Tạo bảng customers
204
6. Tạo trang kết nối tới CSDL (Connection.asp) cho phép kết nối đến cơ sở dữ liệu đã tạo
trong câu 5
7. Tạo trang hiển thị dữ liệu (DisplayCategories.asp) trang này hiển thị tất cửa các loại sản
phẩm của cửa hàng, nó cho phép ngƣời sử dụng nhấn vào đó để xem các sản phẩm thuộc
loại đó.
8. Tạo trang hiển thị sản phẩm theo từng loại (productsByCateogry.asp) trang này hiển thị
danh sách sản phẩm theo từng loại, Khi nhấn vào đƣờng link ở trang danh mục loại sản
phẩm, thì trang này sẽ hiển thị ra.
9. Tạo trang hiển thị thông tin sản phẩm chi tiết (productDetail.asp) trang này hiển thị
thông tin chi tiết của từng sản phẩm khi bạn nhấn vào đƣờng link trang trƣớc.
10. Tạo trang nhập thông tin sản phẩm (ProductNew.asp) cho phép nhập thông tin vào bảng
sản phẩm.
11. Tạo trang nhập dữ liệu (InsertCategories.asp) cho phép nhập vào một loại sản phẩm
mới cho cửa hang.
12. Tạo trang tìm kiếm thông tin về sản phẩm (FindProduct.asp) cho phép tìm kiếm thông
tin về mặt hàng theo tên mặt hang.
13. Tạo trang login (Signin.asp) trang này hiển form login để admin login.
14. Tạo Trang xử lý thông tin login (LoginVerify.asp) trang này xử lý thông tin login, nếu hợp lệ thì
sẽ chuyển hƣớng sang trang dành cho user, nếu không sẽ thông báo lỗi.
15. Tạo trang nhập thông tin đăng ký của khách hàng (RegisterForm.asp) trang này dùng để hiển thị
form đăng ký, nhập dữ liệu ở đây sau đó gọi tời file RegisterAction.
16. Tạo Trang xử lý thông tin đăng ký (RegisterAction.asp) trang này dùng để đƣa thông
tin đăng ký của khách hàng vào trong database.
17. Tạo Trang dành cho khách hàng (UserInfo.asp) trang này dùng để hiển thị thông tin dành cho
admin, nếu bạn chƣa đăng nhập thì sẽ chuyển hƣớng về trang đăng nhập.
18. Tạo Trang Logout (Logout.asp) trang này dùng để logout, nó sẽ hủy bỏ session của
khách hàng, hủy bỏ thông tin đăng nhập của khách hàng.
205
TÀI LIỆU THAM KHẢO
[1]. Nguyễn Đức Hải, Nguyễn Phƣơng Lan, Lê Hữu Đạt, ―Giáo trình lý thuyết và bài tập
ASP‖, NXB Lao động - Xã hội
[2]. Hoàng Mạnh Hùng, Giáo trình lập trình web, Đại học Đà Lạt
[3]. Phạm Hữu Khang, Hoàng Đức Hải, Phƣơng Lan, ―Giáo trình lập trình web bằng ASP
3.0‖, NXB Lao động - Xã hội
[4]. Bùi Thu Giang, Lê Hoàng Nhân, Nguyễn Trƣờng Sinh, Việt Dũng, Thiết kế trang web
với Microsoft FrontPage, NXB Lao động - Xã hội
[5]. Jerry Honeycutt, Special Edition Using HTML 4, Macmillan Computer Publishing
[6]. WallPearl, Simple CSS Standard Edition, WallPearl‘sBlog, 2008
File đính kèm:
bai_giang_lap_trinh_mang_phan_2.pdf

