Bài giảng nhập môn ASP
Trang 1Bài 2 1
BÀI 5 NHẬP MÔN ASP
Khoa CNTT - ĐHKHTN
Khoa CNTT - ĐHKHTN
Nội dung
1 Giới thiệu
2 Các khái niệm căn bản
3 Xử lý dữ liệu nhập từ người dùng
4 Xử lý kết xuất dữ liệu
5 Các ví dụ
6 Kết nối cơ sở dữ liệu
Khoa CNTT - ĐHKHTN
1 Giới thiệu
nASP – Active Server Page: công nghệ phát
triển ứng dụng Web (server-side)
nDễ viết, dễ sửa đổi, tích hợp với các công
nghệ của Microsofft như COM,…
nFile có tên mở rộng asp
nSử dụng ngôn ngữ VBScript , Jscript, Perl,…
nThực hiện tuần tự từ trên xuống (thông dịch)
bởi các bộ SCRIPT ENGINE
nKết quả thực hiện là 1 trang HTML
Trang 2Bài 2 4 Khoa CNTT - ĐHKHTN
2 Các khái niệm cơ bản (1)
n 1 trang ASP thường có 4 phần
q Dữ liệu văn bản (text)
q tag HTML
q Mã client-side (<script>…</script>)
q Mã chương trình ASP : <% … %>
<HTML>
<BODY>
<P> <B>Welcome to my website</B> Today is
<%
Response.Write Date()
%>
</BODY>
</HTML>
Khoa CNTT - ĐHKHTN
2 Các khái niệm cơ bản (2)
<HTML>
<BODY>
<%
Dim dtmHour
dtmHour = Hour(Now())
If dtmHour < 12 Then
Response Write "Good
Morning!"
Else
Response Write "Hello!"
End If
%>
</BODY>
</HTML>
<HTML> <BODY>
<%
Dim dtmHour dtmHour = Hour(Now())
If dtmHour < 12 Then
%>
Good Morning!
<%
Else
%>
Hello!
<%
End If
%>
</BODY></HTML>
2 Các khái niệm cơ bản (3)
nQui định ngôn ngữ (ở đầu trang)
<%LANGUAGE=ScriptingLanguage%>
<%LANGUAGE=VBScript%>
nCác đối tượng xây dựng sẵn trong ASP có
dạng collection:
qRequest, Response, Session, Cookies, Server,
Application,…
Trang 3Bài 2 7 Khoa CNTT - ĐHKHTN
3 Xử lý dữ liệu từ người dùng (1)
nTrang nhập liệu: nhập qua đối tượng FORM,
thực hiện SUBMIT
nTrang xử lý dữ liệu, sử dụng đối tượng
Request
qRequest.QueryString(“FieldName”) – method GET
qRequest.Form(“FieldName”) – method POST
Khoa CNTT - ĐHKHTN
3 Xử lý dữ liệu từ người dùng (2)
FILE : INPỦT.htm
<HTML>
<HEAD>
<TITLE>Input data</TITLE>
</HEAD>
<BODY>
<FORM ACTION="hello.asp"NAME="myform" METHOD="GET">
First Name: <INPUT TYPE="TEXT" NAME="FirstName“ SIZE=20><br>
Gender: <SELECT NAME="Gender" >
<OPTION VALUE="Mr">Male</OPTION>
<OPTION VALUE="Ms">Female</OPTION>
</SELECT>
<INPUT TYPE="SUBMIT" NAME="b1" VALUE=”Submit”>
</FORM>
</BODY>
</HTML>
Khoa CNTT - ĐHKHTN
3 Xử lý dữ liệu từ người dùng (3)
hello.asp
<HTML>
<HEAD>
<TITLE>Output data</TITLE>
</HEAD>
<BODY>
<%
FName = Request.QueryString("FirstName")
Gender = Request.QueryString("Gender")
%>
<p>Hello
<%
Response Write Gender & " " & FName & " " & LName
%>
</BODY>
</HTML>
Trang 4Bài 2 10 Khoa CNTT - ĐHKHTN
4 Xử lý các kết xuất dữ liệu (1)
n Sử dụng lệnh <% Response.Write … %>
n Viết lệnh trên nhiều dòng
<%
Response.Write "Chào mừng các bạn đến với website" &_
"của Trường ĐH Khoa Học Tự Nhiên"
%>
n Sử dụng <%= %>
<%
Response.Write "Trường ĐH Khoa Học Tự Nhiên"
%>
<%="Trường ĐH Khoa Học Tự Nhiên" %>
Khoa CNTT - ĐHKHTN
4 Xử lý các kết xuất dữ liệu (2)
q“” : “In ra ký tự “” nháy “” “
⇒ In ra ký tự “ nháy “
qCHR(34)
qDùng dấu nháy đơn
“In ra ký tự ‘nháy đơn’
Ví dụ
<html>
<body>
<script type="text/vbscript">
dim name
name="Jan Egil"
document.write "are you""ok"""
document.write "<hr>"
document.write "are you ‘ok’ "
document.write "<hr>"
</script>
<% response.write ("are you"&chr(34)&"ok"&chr(34)) %>
</body>
</html>
Trang 5Bài 2 13 Khoa CNTT - ĐHKHTN
4 Xử lý các kết xuất dữ liệu (3)
nIn ký tự HTML < , >, & ,…
qServer.HTMLEncode (str): xuất đầy đủ ký
tự HTML
qServer.URLEncode (str) : xuất chuỗi theo
dạng URL
Khoa CNTT - ĐHKHTN
Ví dụ
<html>
<body>
<%
response.write ("<h1>OK</h1>")
response.write (Server.HTMLEncode("<h1>OK</h1>")&"<p>")
response.write (Server.URLEncode("www.a.com/a.asp?test=test"))
%>
</body>
</html>
Khoa CNTT - ĐHKHTN
4 Xử lý các kết xuất dữ liệu (4)
<HTML>
<HEAD> <TITLE>Output data</TITLE>
</HEAD>
<BODY>
<%
Response.Write "<B>Hyperion</b> by <I>Dan Simmons</i> is a great novel"
Response.Write "<p>"
Response.Write server.htmlencode("<B>Hyperion</b> by <I>Dan Simmons</i> is a
great novel")
Response.Write "<p>"
Response.Write "Joe Smith & Hilda = a team"
Response.Write "<p>"
Response.Write server.URLencode("Joe Smith & Hilda = a team")
%>
</BODY>
</HTML>
Trang 6Bài 2 16 Khoa CNTT - ĐHKHTN
4 Xử lý các kết xuất dữ liệu (5)
Một số ví dụ
Tạo ra trang Web có FORM
<FORM> Year
<SELECT NAME= "Year" >
<OPTION VALUE="1930">1930</OPTION>
<OPTION VALUE="1931">1931</OPTION>
<OPTION VALUE="1932">1932</OPTION>
…
<OPTION VALUE="1980">1980</OPTION>
</SELECT>
</FORM>
Khoa CNTT - ĐHKHTN
Viết lại bằng code ASP
<html>
<Form>
Year <Select name="Year">
<%
for i=1930 to 1980
Response.write ("<OPTION VALUE=" & i & ">")
Response.write (i & "</OPTION>")
next
%>
</Select>
</Form>
</html>
Ví dụ
Cách khác dùng <%=%>
<html>
<Form>
Year <Select name="Year">
<%
for i=1930 to 1980
%>
<OPTION value="<%=i%>"> <%=i%> </OPTION>
<%
next
%>
</Select>
</Form>
</html>
Ví dụ
Trang 7Bài 2 19 Khoa CNTT - ĐHKHTN
4 Xử lý các kết xuất dữ liệu (6)
Một số ví dụ
nTạo bảng dữ liệu động (tĩnh vs động)
A99 990099
99
…
A2 99002
2
A1 99001
1
Ghi chú
Họ tên MSSV
TT
Khoa CNTT - ĐHKHTN
Dùng code ASP (phần header)
<html>
<head>
<title>STT</title>
</head>
<body>
<table border="1" >
<tr>
<td width="25%"> <p align="center">STT</td>
<td width="25%"> <p align="center">MSSV</td>
<td width="25%"> <p align="center">Họ và Tên</td>
<td width="25%"> <p align="center">Ghi chú</td>
</tr>
……
Khoa CNTT - ĐHKHTN
Phần data
n <%
n <tr>
n <td width="25%"> <%=i%> </td>
n <td width="25%">HC00 <%=i%> </td>
n <td width="25%">Nguyễn Văn A <%=i%> </td>
n <td width="25%">Ghi chú <%=i%> </td>
n </tr>
n <%
n next
n </table>
n </body>
n </html>
Ví dụ
Phần code HTML
để hiển thị
Phần dữ liệu động:
-Phát sinh -Truy vấn từ DB
Trang 8Bài 2 22 Khoa CNTT - ĐHKHTN
5 Các ví dụ khác (1)
n Nhận dữ liệu checkbox n Nhận dữ liệu từ listbox
Khoa CNTT - ĐHKHTN
5 Các ví dụ khác (2)
n Nhận dữ liệu từ Radio n Nhận dữ liệu từ
textbox, hidden
Một số vấn đề
nInclude file
q<! #include file=“path/filename >
nNgăn cản cache trang web
<%
Response.ExpiresAbsolute = #2000-01-01# ‘ dùng ngày nhỏ hơn hiện hành
Response.AddHeader "pragma", "no-cache"
Response.AddHeader "cache-control", "private, no-cache, mustrevalidate"
%>
Trang 9Bài 2 25 Khoa CNTT - ĐHKHTN
Ví dụ:
<html>
<body>
<h3>Words of Wisdom:</h3>
<p> <! #include file="wisdom.inc" > </p>
<h3>Bay Gio la:</h3>
<p> <! #include file="time.inc" > </p>
</body>
</html>
Khoa CNTT - ĐHKHTN
Ví dụ (tt)
Wisdom.inc
-“Xin chao”
Ví dụ
Time.inc
-<%
Response.Write(Time)
%>
Khoa CNTT - ĐHKHTN
Một số vấn đề (3)
n Đặt bảng mã xử lý UNICODE
<%@CODEPAGE=65001%>
<%Session.Codepage=65001%>
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;
CHARSET=UTF-8">
</HEAD>
<BODY>
<% các lệnh xử lý %>
</BODY>
</HTML>
Trang 10Bài 2 28 Khoa CNTT - ĐHKHTN
6 Kết nối CSDL (1)
nSử dụng công nghệ ADO
nCác đối tượng trong ADO
qConnection
qRecordSet
qCommand
qParameter
Khoa CNTT - ĐHKHTN
6 Kết nối CSDL (2)
nCác bước xử lý dữ liệu trong ASP
qKết nối với dữ liệu thông qua OLE DB hoặc
ODBC
qXây dựng câu truy vấn dữ liệu
qYêu cầu thực hiện câu truy vấn thực hiện các
thao tác xử lí trên CSDL (thêm, xóa, sửa, lọc dữ
liệu, …)
qXử lí kết quả trả về từ câu truy vấn trong trường
hợp câu truy vấn lọc dữ liệu (SELECT queries)
qNgắt kết nối với cơ sở dữ liệu, giải phóng các tài
nguyên của hệ thống đã dùng.
6 Kết nối CSDL (3)
n Tạo kết nối CSDL (Access, SQL Server,…)
q Tạo connection string (tương tự như trên VB)
q Kết nối CSDL, tạo đối tượng Connection
Server.CreateObject(“ADODB.Connection”)
<%
strDSN = “Driver={Microsoft Access Driver (*.mdb)};DBQ=” &_
server.mappath(“Test.mdb”)
'Create a connection object.
Set Conn = Server.CreateObject("ADODB.Connection")
'Open a connection using the ODBC connection string.
Conn.Open strDSN
%>
Trang 11Bài 2 31 Khoa CNTT - ĐHKHTN
6 Kết nối CSDL (4)
n Xây dựng câu truy vấn
q strSQL = "INSERT INTO Customers (FirstName,
LastName) VALUES ('Jose','Lugo')“
q strSQL = "UPDATE Customers SET FirstName = 'Jeff'
WHERE LastName = 'Smith' "
q strSQL = "DELETE FROM Customers WHERE LastName
= 'Smith'"
n Thực thi câu truy vấn
q Conn.Execute strSQL
Khoa CNTT - ĐHKHTN
6 Kết nối CSDL (5)
n Xử lý kết quả trả về (SELECT)
q Sử dụng đối tượng RecordSet
n Nhận dữ liệu trả về
q Set rs = Conn.Execute (strSQL)
q Tạo đối tượng RecordSet và dùng phương thức Open
Set rs = Server.CreateObject(“ADODB.Recordset”)
strSQL = “…”
rs.Open strSQL, Conn
Khoa CNTT - ĐHKHTN
6 Kết nối CSDL (6)
n Nhận dữ liệu trả về (VD)
<%
strDSN = “Driver={Microsoft Access Driver (*.mdb)};DBQ=” &
server.mappath(“Test.mdb”)
'Create a connection object
Set Conn = Server.CreateObject("ADODB.Connection")
Set rsCustomers = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT FirstName, LastName FROM Customers” &_
“ WHERE LastName = 'Smith' "
rsCustomers.Open strSQL, Conn
%>
Trang 12Bài 2 34 Khoa CNTT - ĐHKHTN
6 Kết nối CSDL (7)
qTruy cập đến FIELD
rsCustomers(“FirstName”)
qDi chuyển giữa các mẫu tin trong RecordSet
n MoveNext , MovePrevious,
n MoveFirst, MoveLast
qKiểm tra vị trí cursor BOF, EOF
Khoa CNTT - ĐHKHTN
6 Kết nối CSDL (8)
nguyên
qDùng phương thức Close
n Conn.Close, rs.Close
qGán đối tượng = nothing
n Set rs = nothing
n Set Conn = nothing
6 Kết nối CSDL- Vấn đề chính
Trang 13Bài 2 37 Khoa CNTT - ĐHKHTN
Một số ví dụ:
Trình bày dữ liệu ra trang Web
nXuất records từ CSDL ra trang HTML
nXuất records dưới dạng bảng
nThêm tên cột vào bảng
nThêm màu vào bảng
Khoa CNTT - ĐHKHTN
SQL
nXuất dữ liệu thoả điều kiện
nSắp xếp records theo tên trường
nCho phép người dùng chon cột để sắp xếp
Khoa CNTT - ĐHKHTN
Recordset
nGetRows
nList
nAdd
nUpdate
nDelete
Trang 14Bài 2 40 Khoa CNTT - ĐHKHTN
Bài tập thực hành
nViết các trang ASP nhận dữ liệu từ
qtextbox, listbox, radio, checkbox,…
nViết trang ASP kiểm tra đăng nhập
qUserName, Pwd
nXây dựng các trang thao tác CSDL
dbbooks.mdb
qLiệt kê DS các sách trong CSDL
qThêm 1 quyển sách mới
qThực hiện kiểm tra đăng nhập trước khi thêm