CH
NG II:
ƯƠ Ớ Ử Ụ CÁC L P S D NG TRONG ASP.NET
ự
ế Lý thuy t : 3 ti Th c hành : 3 ti
ế t ế t
1
ớ
L p Http Request
ủ ớ ể ệ ộ
Request là m t th hi n c a l p HttpRequest, Browser dùng Request object đ g i thông tin ầ c n thi
ể ử
i Server ế ớ t t
Data
2
ớ
L p Http Request
ậ ấ ả
ố ượ Đ i t ệ ng Request nh n t ế ủ ở
ị t c giá tr mà trình duy t c a client g i đ n server thông qua HTTP request.
ạ ệ ầ
ừ
ừ ầ ẽ ứ ỏ
Request đ i di n cho Client khi yêu c u trang Web, Server s dùng v a Response v a Request đ đáp ng yêu c u hay đòi h i thông tin t
3
ừ ể Client.
ớ
L p Http Request
ả ề ứ ề ộ Các thu c tính RequestType: tr v ph
ế ứ ừ client đ n server g m 2 ph ữ ươ ng th c truy n d ươ ồ ng th c
ệ li u t POST và GET Cú pháp
4
valMethode=Request.RequestType; valMethode=Request.RequestType;
ớ
L p Http Request
ợ ậ
1. T p h p Form (Form collection )
ựơ ể ậ ử ụ
ứ c ch a trong các ph n t
ầ ằ ứ ế ữ ợ c s d ng đ t p h p d ử ủ c a form ươ ng th c client đ n server b ng ph
ầ ử ủ ữ ệ ừ ấ các ph n t c a form:
Form collection đ ượ ệ li u đ ể ừ chuy n t POST. L y d li u t Cú pháp
5
VarName= Request.Form[“FieldName”]; VarName= Request.Form[“FieldName”];
ớ
L p Http Request
Ví d :ụ
txtUser
txtPwd
Default.aspx
6
ạ
ị ủ
ấ
ớ L p Http Request ụ Ví d (tt): T i trang
CheckUser.aspx, l y giá tr c a UserName và
Password trên form
UserName:
<%=Request.Form["txtUser"]%>
Password
7
<%=Request.Form["txtPwd"]%>
ớ
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:
8
Numelement=Request.Form.Count; Numelement=Request.Form.Count;
ớ
L p Http Request
ứ i v trí th i, ả ề Keys[i]: tr v tên c a ph n t
ầ ử ạ ị ủ t ế ị ừ 0 đ n n1
Cú pháp:
trong đó i có giá tr t ớ v i n=Request.Form.Count
9
Varfield=Request.Form.Keys[i]; Varfield=Request.Form.Keys[i];
ớ
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]; } %>
10
ớ
L p Http Request
ợ ậ
2. T p h p QueryString
(QueryStringCollection)
ượ ử ừ ữ ệ ươ ể ấ ằ ế c g i t
client đ n server b ng ph ứ ữ ệ
ế Request.QueryString dùng đ l y d li u ng đ th c ứ GET ho c ặ truy nề d li u có ch a tag liên k t Hyperlink.
ị ượ ằ
ỗ
11
ủ ầ
ỗ c đ nh nghĩa là chu i n m QueryString đ sau d u ấ (Uniform ? trong chu i URL Resource Locator) trên ph n Address c a trình duy t.ệ
ớ
L p Http Request
ề ọ
ử ề ầ ố ố 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
ầ ử ủ ầ ử ủ
ớ
L p Http Request
Cách 2 : dùng action , tham s ghi sau d u ?
ấ ố
ớ
L p Http Request
Cách 3 : dùng chu i link , tham s ghi sau d u ?
ấ ỗ ố
ặ Text ho c image ặ Text ho c image
Các tham s đ ỗ ị ủ
ố ượ ở ấ
14
c khai báo cách nhau b i d u &, ấ ố ặ giá tr c a m i tham s đ t sau d u =
ớ
L p Http Request
ị
ố ố ử ụ
ị ả ề ế N u tham s không có giá tr thì giá tr tr v ủ c a tham s khi s d ng Request.QueryString là NULL.
V i 3 cách truy n d li u t
ớ ề
ữ ệ ậ Client nêu trên, ợ QueryString đ ể
15
ữ ệ ậ ừ ẽ phía Server s dùng t p h p nh n d li u
ớ
L p Http Request
L y d li u t
ữ ệ ừ ầ ử ủ các ph n t c a form hay
16
Request.QueryString[“varName”]; Request.QueryString[“varName”];
ớ
L p Http Request
ộ ủ
ầ ử ủ c a form chuy n t : ể ừ Các thu c tính c a QueryStringCollection Count: tr v s ph n t
ả ề ố ế client đ n server Cú pháp:
17
Numelement=Request.QueryString.Count; Numelement=Request.QueryString.Count;
ớ
L p Http Request
ứ ả ề Keys[i]: tr v tên c a ph n t
ầ ử ạ ị ủ t i v trí th i, ớ ế ị ừ 0 đ n n1 v i
Cú pháp:
trong đó i có giá tr t n=Request.QueryString.Count
Varfield=Request.QueryString.Keys[i]; Varfield=Request.QueryString.Keys[i];
18
Ví d :ụ
ớ
L p Http Request
txtUser
txtPwd
19
ớ
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"];
20
%>
ớ
L p Http Request
Ho c: Trong các HyperLink
ặ
typeNews and
Var1=Request.QueryString[“typeNews”];//Var1=edu Var1=Request.QueryString[“typeNews”];//Var1=edu Var2=Request.QueryString[“NewsID”];//Var2=98708 Var2=Request.QueryString[“NewsID”];//Var2=98708
21
T iạ ReadNews.aspx mu n l y giá ử ụ NewsID, s d ng cú pháp ố ấ :
ớ
L p Http Request
ậ ợ
ể ư
3. T p h p Cookies (CookiesCollection) ữ Cookies là m t m u thông tin nh dùng đ l u tr
ủ ỏ ẫ client i dùng trên máy
ộ ườ thông tin c a ng ạ 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”]
22
ề ề
[“hhhhhh”]:
ớ
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:
23
Numelement=Request.Cookies.Count; Numelement=Request.Cookies.Count;
ớ
L p Http Request
ứ ả ề Keys[i]: tr v tên c a ph n t
ầ ử ạ ị ủ t i v trí th i, ớ ế ị ừ 0 đ n n1 v i trong đó i có giá tr t n=Request.Cookies.Count
Cú pháp:
24
Varfield=Request.Cookies.Keys[i]; Varfield=Request.Cookies.Keys[i];
ớ
L p Http Request
Ví d :ụ
25
<% 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; } %>
ớ
L p Http Response
ượ ữ ệ ể ề c s d ng đ truy n d li u
ử ụ Http Response đ ế webserver đ n webBrowser
Data
26
ớ
L p Http Response
ị ộ Các thu c tính Buffer: có 2 giá tr ị true và false quy đ nh cách
ề ả ữ ệ i d li u:
ộ ầ ử ệ ấ t công vi c và g i m t l n
ử ế ự ệ ế truy n t True: Hoàn t False: Th c hi n xong đ n đâu thì g i đ n
27
đó
ớ
L p Http Response
Cú pháp:
Response.Buffer=true/false; Response.Buffer=true/false;
ả ả ề ế ế ế ố
ể isClientConnected: Ki m tra máy client có yêu ị ầ c u k t n i đ n server, k t qu tr v giá tr true/false
Cookies: đ
ượ ể c s d ng đ ghi Cookies. Cookies
28
ể ệ ượ ử ụ c th hi n trong asp.Net là l p đ ớ Httpcookies
ớ
L p Http Response
Kh i t o bi n cookies
ở ạ ế :
Httpcookies varck= new Httpcookies(“CkName”); Httpcookies varck= new Httpcookies(“CkName”);
Ghi cookie vào client
29
varck.Value =value; varck.Value =value;
ớ
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.Add(varck);
30
Response.Cookies.Clear(); Response.Cookies.Clear();
ớ
ở ạ
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 %>
31
ị
ớ
L p Http Response
// Đ c Cookies
ọ v = Request.Cookies[“Infor”].value ;
// result :v=”abc”,”xyz”,”123” // hay dùng
32
v1 = Request.Cookies[“Infor”] [“Us”];//abc v2 = Request.Cookies[“Infor”] [“Pwd”];//xyz v3 = Request.Cookies[“Infor”] [“Author”];//123
ớ
L p Http Response
ươ ứ ng th c
Các ph Clear(): Xóa vùng t mạ
Cú pháp:
Response.Clear() Response.Clear()
End(): K t thúc ti n trình x lý trên Server và
ử
ế ữ ệ ớ ẩ
Flush(): K t thúc ti n trình, quay l
ạ ự ệ đ y d li u t ế ế i Client ế i th c hi n
33
ti pế
ớ L p Http Response Ví d :ụ <% int i; Response.Buffer = true; for (i = 1; i < 10000; i++) {%> <%=i%>
34
<%if (i % 10000 == 0) Response.Flush();%>
<%}%>
ớ
L p Http Response
ể ộ ể Redirect(url) : dùng đ chuy n client sang m t
URL khác
Redirect(url, Boolean): dùng đ chuy n client
ể ể
ế ệ sang m t ộ URL khác, trong đó: N u tham s Boolean =true thì khi th c hi n ố
ẽ ự ế ệ
N uế s Boolean =false thì khi th c hi n
ự xong l nh Response s th c hi n ti p ự ệ
35
ẽ ừ ệ ố ệ xong l nh Response s d ng
ớ
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”);
}
36
ớ
L p Http Response
Write(“Data”): Ghi d li u ra trang web
ữ ệ
<% = strname %> <% = strname %>
ho cặ ho cặ
37
Response.Write(strname) Response.Write(strname)
ớ
L p Http Server
ố ượ Đ i t ể ấ
ề ề ng Server ữ ể ỗ i, encode, …
ứ ươ ấ ng th c giúp cung c p các ph ớ chuy n đi u khi n gi a các trang v i nhau, l y thông tin v mã l ộ Các thu c tính
MachineName: tên server ScriptTimeout: thi
ế ậ ử ố t l p thgian x lý t i đa 1 file
38
ế ậ ặ ị Ví d : ụ Server.ScriptTimeout=100s //thi t l p thgian m c đ nh
ớ
L p Http Server
ươ
ạ ườ ẫ ả ng d n o thành
ứ Các ph ng th c MapPath(“URL”): ánh x đ ộ ậ ậ ườ ẫ ng d n v t lý cho m t t p tin trên Server
đ Cú pháp:
Server.MapPath(path) Server.MapPath(path)
Path là chu i th c hi n đ ỗ
ườ ẫ ươ ố ng d n t ng đ i
ệ ụ ả ề ủ ậ ươ ứ ự ệ ng th c s tr v chu i hi n th c
39
Ph đ
ủ ậ ườ ậ ẫ ự ứ c a t p tin trên ng d ng Web ỗ ẽ ng d n v t lý c a t p tin đó.
ớ
L p Http Server
HtmlEncode(str): dùng đ mã hoá HTML
ể
thành chu i ỗ Cú pháp:
40
Server.HTMLEncode(str) Server.HTMLEncode(str)
ớ
L p Http Server
ỗ ỗ
Khi mã hoá chu i HTML sang chu i bình nh sau s chuy n
ự ư ể ẽ ườ
th sang ký t ặ ế ng n u g p các ký t ứ ự ươ ng ng: t
Ký t
ự ể Ký t ự ể >chuy n thành > Ký t ự ể & chuy n thành & D u đôi “ chuy n thành " 41 ể ấ HtmlDecode(strcontent):gi
Ví d :ụ ả ẻ i mã các th HTML 42 ế ả Str=”n>5”
Str=server.HtmlDecode(str); // k t qu n>5 ừ t c thông tin mà nó đã x lý t ử ấ ả
Transfer: g i t
ệ ử
trang ASP hi n hành sang trang ASP khác Cú pháp: Server.Transfer(path)
Server.Transfer(path) ủ ậ ẫ ng d n c a t p 43 ườ
ể ề ể ầ Trong đó, tham s ố path là đ
tin ASP c n chuy n đi u khi n. T ứ
ứ ươ
ươ ng
ươ ng th c URLEncode:
ng ng ể tự nh ư
ươ
Ph
ứ
th c
th c HTMLEncode, ph
ph
ỗ
URLEcode dùng đ mã hoá URL thành chu i
Cú pháp 44 Server.URLEncode(str)
Server.URLEncode(str) Khi mã hoá chu i URL sang chu i bình th ườ ư ể ẽ ỗ
ng
nh sau, s chuy n sang ký ự ấ
ố s ẽ 45 ỗ
ự
ặ
ế
n u g p các ký t
ứ
ự ươ
ng ng:
t
t
Ký t
ự kho ng tr ng
ả
Ký t
ự không thu c ký t
ể ắ chuy n thành d u +
ể
ữ
ộ
ch và s
ố
chuy n thành s hexadecimal. Ph ươ ứ Ph ng th c ng th c CreateObject: ươ
ể ạ ố ượ ứ này
ng Cú pháp ầ ị ả ề
(không có giá tr tr v ) dùng đ t o đ i t
thành ph n trên Server Server.CreateObject(progid)
Server.CreateObject(progid) Tham s progid ch đ nh lo i đ i t ạ ố ượ ị ỉ ầ ng c n ạ ố
ớ ị
ạ
t o v i đ nh d ng 46 [Vendor.] Component[.Version] Ví dụ: Tạo đối tượng ADODB.Connection,
ADODB.Recordset, MSWC.AdRotator, ... <%
Set 47 myAd=Server.CreateObject(MSWC.AdRota
tor)
Set myCon=Server.CreateObject(ADODB.Conn
ection)
Set myCon=Server.CreateObject(ADODB.Recor dset) %>` Ph ứ ươ ị ả ề
ư ộ ử Cú pháp ộ ậ
ả ầ không có giá tr tr v ,
ng th c Execute:
ể ọ
dùng đ g i m t t p tin .asp và x lý nó nh m t
ị
ủ
ph n c a k ch b n ASP Server.Execute(path)
Server.Execute(path) ự ậ
ủ ụ ẫ
ư ọ ầ
ề Path là đ
ườ
ng d n và tên t p tin asp c n th c
ự
thi, t
nh g i th t c trong nhi u ngôn
ng t
ng l p trình khác. 48 ươ
ữ ậ ộ ng Session ể ư ượ ử
ơ ả
là m t websever c b n s
c dùng đ l u ố ượ
Đ i t
ụ
ữ ạ d ng trong ASP và ASP.NET đ
tr tr ng thái. Thông tin đ
ườ ượ ư ữ ộ c l u tr trong Session là c a m t ệ ộ ủ
ụ ể ng i dùng trong m t phiên làm vi c c th . Web Server s t ạ ố ượ
ẽ ự ộ
ộ
đ ng t o m t đ i t
ng
ố
ớ ế
ườ
ỗ
i dùng m i k t n i vào
ế
ủ
ự ộ
đ ng h y chúng n u phiên làm 49 ng d ng và t
ệ Session cho m i ng
ụ
ứ
ế
vi c k t thúc Kh i t o: ở ạ Session[“SessionName”]=value
Session[“SessionName”]=value L y giá tr t ị ừ ế ấ bi n Session varName=Convert.ToString(Session[“SessionName”])
varName=Convert.ToString(Session[“SessionName”]) Session[“SessionName”]=Session[“SessionName”] +value + @ 50 ể ể ọ ị @: dùng đ tách các giá tr (có th ch n tùy ý) ộ ị ờ ả ề ạ ế
i Server.
ế ở
ị ờ ố ầ 51 ẽ ự ộ ượ ả Thu c tính:
ằ
Timeout: Qui đ nh kho ng th i gian (tính b ng
ườ
phút) Web Server duy trì Session n u ng
i
ầ
dùng không g i yêu c u nào v l
ủ
ị ặ
Giá tr m c đ nh c a Timeout là 20. N u không
ầ
ể ừ ầ
ầ
l n yêu c u sau cùng
có yêu c u nào k t
ả
ộ
m t kho ng th i gian là ầ Nh ng yêu c u sau đó, web server coi nh là
ng ư
ộ ố ượ ẽ ấ ườ ớ i dùng m i, và s c p m t đ i t ữ
ộ
m t ng
Session m i ớ Ví d :ụ ế ậ t l p th i gian cho Có th thi ờ
Session.TimeOut = 100 //Thi
ủ
ệ
1 phiên làm vi c c a user là 100 phút
ậ
ộ
ế ậ ể t l p thu c tính này trong t p tin Web.config trong 52 SessionID: ch a ID c a ạ ựơ ệ ủ session đang kích
ở
t b i sessionID c phân bi ệ ọ 53 ứ
ỗ
ho t, m i user đ
g i là mã phiên làm vi c.
ả ề ố ộ ứ ụ
Count: tr v s session trong m t ng d ng ứ ươ ớ ượ i phóng vùng nh đ ể ự ữ ư ộ c dùng
ng Session trên Web Server
ầ
c g i th c hi n. Nh ng yêu c u
ườ
i ệ
ượ
c Web server coi nh là m t ng ng th c
Ph
ả
Abandon(): gi
ố ượ
đ duy trì đ i t
ọ
ngay khi đ
ượ
sau đó đ
dùng m i. ớ Remove(“SessionName”): xoá d li u trên ữ ệ ế bi n “VarSession” RemoveAll(): Xoá d li u, nh ng sessionID ữ ệ ư 54 ẫ ồ ạ
v n t n t
i ạ ậ Ví dụ: T o ch c năng đăng nh p và thoát ừ Add new item 55 ứ
ọ
T Menu ch n Website
ặ
Web User Control, đ t tên là Login.aspx
ế ế ư ệ
t k giao di n nh sau: Thi ủ ậ ỷ ườ i dùng Kh i t o và Hu thông tin đăng nh p c a 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; ọ ế ậ t l p th i gian TimeOut cho m i phiên là 30 phút // Thi ầ ư ậ
ủ
// Đ t tr ng thái ban đ u c a user là ch a đăng nh p ờ
Session.Timeout = 30;
ặ ạ
Session["LOGIN_OK"] = false; 56 } protected void btnLogin_Click(object sender, EventArgs e)
{
if (Authority(txtUserName.Text, txtPassword.Text))
{ ư ứ Ẩ ừ ể ờ ị i chào m ng
ạ ậ ậ
// 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
ừ
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; 57 }
} protected bool Authority(string user, string pwd)
{ if (user == "aaa" && pwd == "1234")
{ return true; } return false; 58 } ử ụ ể ả đ ng Application
ủ ụ ộ ứ
ự ệ ả ư ụ
ủ ụ ượ
ố ượ
Đ i t
c s d ng đ qu n lý
ấ ả
t c các thông tin c a m t ng d ng web, bao
t
ồ
g m các file, trang web, s ki n, module và code
ư
trong th m c web o(virtual directory) và các th
m c con c a nó ẻ ộ Application chia s thông, nghĩa là m t Application
i s d ng có th truy ườ ử ụ ể ọ 59 ố ượ ở ạ
sau khi kh i t o thì m i ng
ậ
c p đ i t ng này 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 ụ ứ ế 60 thúc. ở ạ :
ng
ấ ỳ ượ ạ
c t o khi client yêu
ứ ụ 61 Application[“TenBien”] = “Value” ;
Application[“TenBien”] = “Value” ; L y giá tr ấ ị: 62 string s = (string) Application[“chuoi”] ;
string s = (string) Application[“chuoi”] ;
int count = (int) Application[“count”] ;
int count = (int) Application[“count”] ; ở ạ ượ ệ
ườ
ố
ư
Ví d : ụ Kh i t o và l u thông tin S ng
i duy t
ầ
ạ ầ
c kích ho t l n đ u tiên
website khi website đ void Application_Start(object sender, EventArgs e)
{ ở ạ ế ố Application["SoKhachVieng"] = 0;
ầ
// Kh i t o s khách vi ng ban đ u là 0 63 } 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 64 } ố ấ ế ị ể
ở ử ở ch đ View Code, X lý ế ộ
ư 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
trong hàm Page_Load nh sau: protected void Page_Load(object sender,
EventArgs e)
{ ế ố 65 lbtCount.Text = "S khách vi ng thăm :" +
Application["SoKhachVieng"].ToString(); }ớ
L p Http Server
ớ
L p Http Server
ớ
L p Http Server
ớ
L p Http Server
ớ
L p Http Server
ớ
L p Http Server
ớ
L p Http Server
Session
Session
Session
Session
Session
Session
Session
Session
ở ạ
Session
Application
Application
Application
Kh i t o
ố ượ
Application đ
Đ i t
ầ
c u b t k trang nào trong ng d ng
Application
Application
Application
Application