5/10/2013
1
1
CHƯƠNG IV:
CÁC LỚP SỬ DỤNG
TRONG ASP.NET
2
Lớp Http Request
Request là mộtthể hiệncủalớp HttpRequest,
Browser dùng Request object để gửi thông tin
cầnthiếttớiServer
Data
3
Lớp Http Request
Đốitượng Request nhậntấtcả giá trị mà trình
duyệtcủaclientgởi đếnserverthôngquaHTTP
request.
Request đạidiện cho Client khi yêu cầutrang
Web, Server sẽ dùng vừaResponsevừa
Request để đáp ứng yêu cầuhayđòi hỏi thông
tin từ Client.
4
Lớp Http Request
Các thuộc tính
RequestType: trả về phương thứctruyềndữ
liệutừ client đếnservergồm2phương thức
POST và GET
Cú pháp
valMethode=Request.RequestType;
5/10/2013
2
5
Lớp Http Request
1. Tập hợp Form (Form collection )
Form collection đựơcsử dụng để tậphợpdữ
liệu đượcchứatrongcácphầntử củaform
chuyểntừ client đếnserverbằng phương thức
POST.
Lấy dữ liệu từ các phần tử của form:
Cú pháp
VarName= Request.Form[“FieldName”];
6
Lớp Http Request
Ví dụ:
<form method="Post" action=“CheckUser.aspx">
UserName: <input type="text" name="txtUser" /><br />
Password: <input type="password" name="txtPwd" /><br />
<input type="Submit" name="btnLogin" value="Login" /><br />
</form>
txtUser
txtPwd
Default.aspx
7
Lớp Http Request
Ví dụ (tt):
Tại trang CheckUser.aspx, lấy giá trị của UserName và
Password trên form
<b>UserName:</b>
<%=Request.Form["txtUser"]%><br />
<b>Password</b>
<%=Request.Form["txtPwd"]%>
8
Lớp Http Request
Các thuộc tính của form Collection
:
Count: trả về số phần tử của form chuyển từ
client đến server
Cú pháp:
Numelement=Request.Form.Count;
5/10/2013
3
9
Lớp Http Request
Keys[i]: trả về tên của phần tử tại vị trí thứ i,
trong đó i có giá trị từ 0 đến n-1
với n=Request.Form.Count
Cú pháp:
Varfield=Request.Form.Keys[i];
10
Lớp Http Request
Ví dụ:
<% int i, num;
string varField, varName;
num = Request.Form.Count;
for (i = 0; i < num; i++)
{
varField = Request.Form.Keys[i];
varName = Request.Form[varField];
}
%>
11
Lớp Http Request
2. Tập hợp QueryString
(QueryStringCollection)
Request.QueryString dùng để lấydữ liệu
đượcgửitừ client đếnserverbằng phương
thức GET hoặc truyềndữ liệucóchứatag
liên kết <a> Hyperlink.
QueryString được định nghĩalàchuỗinằm
sau dấu ? trong chuỗi URL (Uniform Resource
Locator) trên phần Address củatrìnhduyệt.
12
Lớp Http Request
<Form method=”Get” action=”FileName.aspx>
Các phần tử của form
</Form>
Có 3 cách truyền tham số và gọi file xử lý
Cách 1
: dùng action , tham số truyền qua
phần tử của form
5/10/2013
4
13
Lớp Http Request
Cách 2
: dùng action , tham số ghi sau dấu ?
<Form method=”Get or Post”
action=”FileName.aspx?var1=value1&var2=value2&
…”>
Các phần tử của form
</Form>
14
Lớp Http Request
Cách 3
: dùng chuỗi link , tham số ghi sau dấu ?
Các tham sốđượckhaibáocáchnhaubởidấu&,
giá trị củamỗithamsốđặtsaudấu=
<a
href=”FileName.aspx?var1=value1&var2=value2&…”>
Text hoặc image
</a>
15
Lớp Http Request
Nếuthamsố không có giá trị thì giá trị trả về
củathamsố khi sử dụng Request.QueryString
là NULL.
Với 3 cách truyềndữ liệutừ Client nêu trên,
phía Server sẽ dùng tậphợp QueryString để
nhậndữ liệu
16
Lớp Http Request
Lấy dữ liệu từ các phần tử của form hay
<a>:
Cú pháp:
Request.QueryString[“varName”];
5/10/2013
5
17
Lớp Http Request
Các thuộc tính của QueryStringCollection
:
Count:trả về số phầntử củaformchuyểntừ
client đếnserver
Cú pháp:
Numelement=Request.QueryString.Count;
18
Lớp Http Request
Keys[i]: trả về tên của phần tử tại vị trí thứ i,
trong đó i có giá trị từ 0 đến n-1 với
n=Request.QueryString.Count
Cú pháp:
Ví dụ:
Varfield=Request.QueryString.Keys[i];
19
Lớp Http Request
<form method=“Get" action=“CheckUser.aspx">
UserName: <input type="text" name="txtUser" /><br /
Password: <input type="password" name="txtPwd" /><br />
<input type="Submit" name="btnLogin" value="Login" /><br />
</form>
txtUser
txtPwd
20
Lớp Http Request
Tại Server (file CheckUser.aspx), lấy giá trị của
UserName và Password
<% string strUser, strPws;
strUser = Request.QueryString["txtUser"];
strPws = Request.QueryString["txtPwd"];
%>
5/10/2013
6
21
Lớp Http Request
Hoặc: Trong các HyperLink
<a
href=“ReadNews.aspx?typeNews=edu&NewsID=98708”>
Scholaship of IBM
</a>
Var1=Request.QueryString[“typeNews”];//Var1=edu
Var2=Request.QueryString[“NewsID”];//Var2=98708
Tại ReadNews.aspx muốn lấy giá typeNews and
NewsID, sử dụng cú pháp:
22
Lớp Http Request
3. Tập hợp Cookies (CookiesCollection)
Cookies
là mộtmẫuthôngtinnhỏ dùng để lưutrữ
thông tin củangười dùng trên máy client
Cookies có 2
dạng:
Cookies[“varcookies”].Value: trả về giá trị
chứa biến cookies là varcookies (1 chiều)
Cookies
[“varcookies”] [“Subvarcookies”]:
trả về giá trị chứa biến cookies là subvarcookies
(nhiều chiều)
Cookies
[“varcookies”]
[“Subvarcookies”][“hhhhhh”]:
23
Lớp Http Request
Thuộc tính của Cookies:
Count
:Xácđịnh máy client có bao nhiêu phần
tử cookies
Cú pháp:
Numelement=Request.Cookies.Count;
24
Lớp Http Request
Keys[i]: trả về tên của phần tử tại vị trí thứ i,
trong đó i có giá trị từ 0 đến n-1 với
n=Request.Cookies.Count
Cú pháp:
Varfield=Request.Cookies.Keys[i];
5/10/2013
7
25
Lớp Http Request
Ví dụ:
<% int i, num;
string varField, varName;
num = Request.Cookies.Count;
for (i = 0; i < num; i++)
{
varField = Request.Cookies.Keys[i];
varName = Request.Cookies.[varField].Value;
}
%>
26
Lớp Http Response
Http Response đượcsử dụng để truyềndữ liệu
webserver đếnwebBrowser
Data
27
Lớp Http Response
Các thuộc tính
Buffer: có 2 giá trị
true
và
false
quy định cách
truyền tải dữ liệu:
True: Hoàn tất công việc và gửi một lần
False: Thực hiện xong đến đâu thì gửi đến
đó
28
Lớp Http Response
Cú pháp:
isClientConnected:Kiểm tra máy client có yêu
cầukếtnối đếnserver,kếtquả trả về giá trị
true/false
Cookies: được sử dụng để ghi Cookies. Cookies
được thể hiện trong asp.Net là lớp
Httpcookies
Response.Buffer=true/false;
5/10/2013
8
29
Lớp Http Response
Khởi tạo biến cookies:
Ghi cookie vào client
Httpcookies varck= new Httpcookies(“CkName”);
varck.Value =value;
30
Lớp Http Response
Server ghi vào máy trạm 1 biến cookies
Xóa cookies
Response.Cookies.Add(varck);
Response.Cookies.Clear();
31
Lớp Http Response
Ví dụ:
khởi tạo biến cookie và gán giá trị
<% string v, v1,v2,v3;
HttpCookie ckInform = new HttpCookie("Infor");
ckInform[“Us"] = "abc";
ckInform["Pwd"] = "xyz";
ckInform["Author"] = "123";
Response.Cookies.Add(ckInform); // server add cookies
vào máy client
%>
32
Lớp Http Response
// Đọc Cookies
v = Request.Cookies[“Infor”].value ;
// result :v=”abc”,”xyz”,”123”
// hay dùng
v1 = Request.Cookies[“Infor”] [“Us”];//abc
v2 = Request.Cookies[“Infor”] [“Pwd”];//xyz
v3 = Request.Cookies[“Infor”] [“Author”];//123
5/10/2013
9
33
Lớp Http Response
Các phương thức
Clear(): Xóa vùng tạm
Cú pháp:
End(): Kết thúc tiến trình xử lý trên Server và
đẩy dữ liệu tới Client
Flush(): Kết thúc tiến trình, quay lại thực hiện
tiếp
Response.Clear()
34
Lớp Http Response
<%
int i;
Response.Buffer = true;
for (i = 1; i < 10000; i++)
{%>
<%=i%>
<%if (i % 10000 == 0)
Response.Flush();%>
<%}%>
Ví dụ:
35
Lớp Http Response
Redirect(url) : dùng để chuyển client sang
mộtURLkhác
Redirect(url, Boolean): dùng để chuyển
client sang một URL khác, trong đó:
Nếuthamsố Boolean =true thì khi thựchiện
xong lệnh Response sẽ thựchiệntiếp
Nếusố Boolean =false thì khi thựchiệnxong
lệnh Response sẽ dừng
36
Lớp Http Response
Ví dụ:
Response.Redirect(“T1.aspx”);
m=m+1;
Try
{
Response.Redirect(“T1.aspx”, false);
m=m+1;
}
Catch
{
Response.Redirect(“T2.aspx”);
}
5/10/2013
10
37
Lớp Http Response
Write(“Data”): Ghi dữ liệu ra trang web
<% = strname %>
hoặc
Response.Write(strname)
38
Lớp Http Server
Đốitượng Server cung cấpcácphương thứcgiúp
chuyển điềukhiểngiữa các trang với nhau, lấy
thông tin về mã lỗi, encode, …
Các thuộc tính
MachineName: tên server
ScriptTimeout: thiết lập thgian xử lý tối đa 1
file
Ví dụ:
Server.ScriptTimeout=100s //thiết lập thgian mặc định
39
Lớp Http Server
Các phương thức
MapPath(“URL”): ánh xạđường dẫn ảothành
đường dẫnvậtlýchomộttậptintrên
Server
Cú pháp:
Path
là chuỗithựchiện đường dẫntương đối
củatậptintrênứng dụng Web
Phương thứcsẽ trả về chuỗihiệnthực đường
dẫnvậtlýcủatậptinđó.
Server.MapPath(path)
40
Lớp Http Server
HtmlEncode(str): dùng để mã hoá HTML
thành chuỗi
Cú pháp:
Server.HTMLEncode(str)
5/10/2013
11
41
Lớp Http Server
Khi mã hoá chuỗiHTMLsangchuỗibìnhthường
nếugặpcáckýtự như sau sẽ chuyểnsangký
tự tương ứng:
Ký tự <chuyển thành <
Ký tự >chuyển thành >
Ký tự & chuyển thành &
Dấu đôi “ chuyển thành "
42
Lớp Http Server
HtmlDecode(strcontent):giải mã các thẻ HTML
Ví dụ:
Str=”n>5”
Str=server.HtmlDecode(str); // kết quả n>5
43
Lớp Http Server
Transfer: gửitấtcả thông tin mà nó đãxử lý
từ trang ASP hiệnhànhsangtrangASPkhác
Cú pháp:
Trong đó, tham số
path
là đường dẫn của tập
tin ASP cần chuyển điều khiển.
Server.Transfer(path)
44
Lớp Http Server
Phương thức URLEncode: Tương tự như
phương thứcHTMLEncode,phương thức
URLEcode dùng để mã hoá URL thành chuỗi
Cú pháp
Server.URLEncode(str)
5/10/2013
12
45
Lớp Http Server
Khi mã hoá chuỗiURLsangchuỗibìnhthường
nếugặpcáckýtự như sau, sẽ chuyểnsangký
tự tương ứng:
Ký tự
khoảng trắng
chuyển thành dấu +
Ký tự
không thuộc ký tự chữ và số
sẽ chuyển
thành số hexadecimal.
46
Lớp Http Server
Phương thức CreateObject: Phương thức
này (không có giá trị trả về) dùng để tạo đối
tượng thành phầntrênServer
Cú pháp
Tham số progid chỉđịnh loại đốitượng cần
tạovới định dạng
[Vendor.] Component[.Version]
Server.CreateObject(progid)
47
Lớp Http Server
Ví dụ:
Tạo đối tượng ADODB.Connection,
ADODB.Recordset, MSWC.AdRotator,
<%
Set myAd=Server.CreateObject(MSWC.AdRotator)
Set myCon=Server.CreateObject(ADODB.Connection)
Set myCon=Server.CreateObject(ADODB.Recordset)
%>`
48
Lớp Http Server
Phương thức Execute: không có giá trị trả về,
dùng để gọimộttậptin.aspvàxử lý nó như một
phầncủakịch bảnASP
Cú pháp
Path
là đường dẫnvàtêntậptinaspcầnthực
thi, tương tự như gọithủ tục trong nhiềungôn
ngữ lậptrìnhkhác.
Server.Execute(path)
5/10/2013
13
49
Session
Đốitượng Session
là mộtwebsevercơ bảnsử
dụng trong ASP và ASP.NET được dùng để lưu
trữ trạng thái.
Thông tin đượclưutrữ trong Session là củamột
người dùng trong mộtphiênlàmviệccụ thể.
Web Server sẽ tựđộng tạomột đốitượng
Session cho mỗingườidùngmớikếtnốivàoứng
dụng và tựđộng hủy chúng nếuphiênlàmviệc
kết thúc
50
Session
Khởi tạo:
Lấy giá trị từ biến Session
Session[“SessionName”]=Session[“SessionName”]
+value + @
@: dùng để tách các giá trị (có thể chọn tùy ý)
Session[“SessionName”]=value
varName=Convert.ToString(Session[“SessionName”])
51
Session
Thuộc tính:
Timeout
:
Qui định khoảng thờigian(tính
bằng phút) Web Server duy trì Session nếu
người dùng không gởiyêucầunàovề lại
Server.
Giá trị mặc định của Timeout là 20. Nếu không
có yêu cầunàokể từ lầnyêucầu sau cùng một
khoảng thời gian là <Timeout> phút, đốitượng
Session mà Web server cấpcholầnlàmviệc đó
sẽ tựđộng đượcgiải phóng.
52
Session
Những yêu cầusauđó, web server coi như là
mộtngười dùng mới, và sẽ cấpmột đốitượng
Session mới
Ví dụ:
Session.TimeOut = 100 //
Thiết lập thời gian
cho 1 phiên làm việc của user là 100 phút
Có thể thiết lập thuộc tính này trong tập tin
Web.config trong <system.web>
<sessionState timeout=“100" />
5/10/2013
14
53
Session
SessionID: chứaIDcủa session đang kích
hoạt, mỗiuserđựơcphânbiệtbởisessionIDgọi
là mã phiên làm việc.
Count: trả về số session trong một ứng dụng
54
Session
Phương thức
Abandon(): giải phóng vùng nhớđược dùng
để duy trì đốitượng Session trên Web Server
ngay khi đượcgọithựchiện. Những yêu cầu
sau đó đượcWebservercoinhư là mộtngười
dùng mới.
Remove(“SessionName”): xoá dữ liệu trên
biến “VarSession”
RemoveAll(): Xoá dữ liệu, nhưng sessionID
vẫn tồn tại
55
Session
Ví dụ: Tạo chức năng đăng nhập và thoát
Từ Menu chọn Website Add new item Web
User Control, đặt tên là Login.aspx
Thiết kế giao diện như sau:
56
Session
Khởi tạo và Huỷ thông tin đăng nhập của người dùng
trong Session
void Session_Start(object sender, EventArgs e)
{
//
Tăng số khách viếng khi có 1 phiên làm việc của user
Application["SoKhachVieng"] =
(int)Application["SoKhachVieng"] + 1;
//
Thiết lập thời gian TimeOut cho mọi phiên là 30 phút
Session.Timeout = 30;
//
Đặt trạng thái ban đầu của user là chưa đăng nhập
Session["LOGIN_OK"] = false;
}
5/10/2013
15
57
protected void btnLogin_Click(object sender, EventArgs e)
{
if (Authority(txtUserName.Text, txtPassword.Text))
{
// Lưu thông tin đăng nhập thành công vào Session
Session["LOGIN_OK"] = true;
// Ẩn chức năng Login
panelLogin.Visible = false;
//
Hiển thị chức năng logout và lời chào mừng
LblGreeting.Text = "Chào mừng bạn " + txtUserName.Text
+ " đã đăng nhập website!";
}
else
{
// Lưu thông tin đăng nhập thất bại vào Session
Session["LOGIN_OK"] = false;
}
}
58
Session
protected bool Authority(string user, string pwd)
{
if (user == "aaa" && pwd == "1234")
{
return true;
}
return false;
}
59
Application
Đốitượng Application đượcsử dụng để quảnlý
tấtcả các thông tin củamột ứng dụng web, bao
gồm các file, trang web, sự kiện, module và code
trong thư mụcwebảo(virtual directory) và các thư
mụcconcủanó
Application chia sẻ thông, nghĩalàmột Application
sau khi khởitạothìmọingườisử dụng có thể truy
cập đốitượng này
60
Application
Sự kiện: global.asax
Application_Start: Khi ứng dụng web lần
đầu tiên được gọi
Application_End: Khi ứng dụng web kết
thúc.
5/10/2013
16
61
Application
Khởi tạo
:
Đối tượng Application được tạo khi client yêu
cầu bất kỳ trang nào trong ứng dụng
Application[“TenBien”] = “Value” ;
62
Application
Lấy giá trị:
string s = (string) Application[“chuoi”] ;
int count = (int) Application[“count”] ;
63
Application
Ví dụ: Khởi tạo và lưu thông tin Số người duyệt
website khi website được kích hoạt lần đầu tiên
void Application_Start(object sender, EventArgs e)
{
Application["SoKhachVieng"] = 0;
// Khởi tạo số khách viếng ban đầu là 0
}
64
Application
Mở trang Global.asax ở chế độ View Code
void Session_Start(object sender, EventArgs e)
{
Application["SoKhachVieng"] =
int)Application["SoKhachVieng"]+1;
//
Tăng số khách viếng khi có 1 phiên làm việc của user
}
5/10/2013
17
65
Application
Ví dụ
:
Lấy thông tin số khách viếng website và
hiển thị ra màn hình
Mở trang Index.aspx ở chế độ View Code, Xử lý
trong hàm Page_Load như sau:
protected void Page_Load(object sender,
EventArgs e)
{
lbtCount.Text = "Số khách viếng thăm :" +
Application["SoKhachVieng"].ToString();
}