Phát triển Web nâng cao - Bài 2: Các lớp sử dụng trong ASP.Net
2.1. Request 2.2. Response 2.3. Cookies 2.4. Server 2.5. Session 2.6. Application 2.7. Chu trình sống của một trang web
Bạn đang xem trước 20 trang tài liệu Phát triển Web nâng cao - Bài 2: Các lớp sử dụng trong ASP.Net, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1Bài 2: Các lớp sử dụng trong
ASP.NET
2.1. Request
2.2. Response
2.3. Cookies
2.4. Server
2.5. Session
2.6. Application
2.7. Chu trình sống của một trang web
2.1 Lớp Http Request
Khái niệm
Các thuộc tính
2
3Khái niệm
Request là một đối tượng của ASP.NET, nó cho phép
đọc các thông tin do các trang khác gửi (Submit) đến
Các thuộc tính
RequestType
Request.Form
Request.QueryString
Cookies
4
5RequestType
Trả về phương thức truyền dữ liệu từ Client đến Server
Gồm 2 phương thức POST và GET
Namespace: System.Web
Assembly: System.Web (in System.Web.dll)
Type Value: System.String
Cú pháp:
public string RequestType { get; set; }
6Request.Form
Form collection sử dụng để tập hợp dữ liệu được chứa
trong các phần tử của form chuyển từ Client đến Server
bằng phương thức POST
Cú pháp:
Request.Form( element )[(index)|.Count];
Request.Form.Keys[i];
Ví dụ 1 - Request.Form( element )
7
Default.aspx
UserName:
Password:
8
CheckUser.aspx
UserName:
Password:
9
Request.Form.Count;
Trả về số phần tử của form chuyển từ Client đến
Server
Request.Form.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
10
CheckUser.aspx
UserName:
Password:
Số phần tử:
<% int i, num;
string s1;
num = Request.Form.Count;
for (i = 0; i < num; i++)
{
s1 = Request.Form.Keys[i];
Response.Write(Request.Form[s1]);
}
%>
11
Request.QueryString
Dùng để lấy dữ liệu được gửi từ Client đến Server bằng
phương thức GET hoặc truyền dữ liệu có chứa tag liên
kết Hyperlink
http://[:][[?]]
[?Tham_so_1=gia_tri_1[&Tham_so_2=gia_tri_2[&]]]
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
Cú pháp:
Request.QueryString( variable )[(index)|.Count]
12
Cách truyền tham số
13
Các phần tử của form
Text hoặc image
1
2
Default.aspx
UserName:
Password:
14
1
CheckUser.aspx
<% string strUser, strPws;
strUser = Request.QueryString["txtUser"];
strPws = Request.QueryString["txtPwd"];
%>
UserName:
Password:
15
1
Default.aspx
UserName:
Password:
Tin tức
Âm nhạc
16
2
CheckUser.aspx
Tin tuc
Music
<% string strUser, strPws;
strUser = Request.QueryString["txtUser"];
strPws = Request.QueryString["txtPwd"];
%>
UserName:
Password:
17
2
New.aspx
<% String strID, strType;
strID = Request.QueryString["Id"];
strType = Request.QueryString["type"];
%>
Ban chon ma so :
Kieu hien thi :
18
2
Request.QueryString.Count;
Trả về số phần tử của form chuyển từ client đến
server
Request.QueryString.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
19
2.2 Lớp Http Response
Khái niệm
Các thuộc tính
Các phương thức
20
21
Khái niệm
Http Response được sử dụng để truyền dữ liệu
từ webserver đến webBrowser
Data
Các thuộc tính
Buffer:
Quy định cách truyền tải dữ liệu:
Response.Buffer=true/false;
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 đó
isClientConnected
Kiểm tra máy client có yêu cầu kết nối đến server
Response.isClientConnected=true/false;
22
Các phương thức
Clear
End
Flush
Redirect
Write
• Xóa vùng tạm;
• Cú pháp: Response.Clear();
• Kết thúc tiến trình xử lý trên Server và đẩy dữ
liệu tới Client;
• Cú pháp: Response.End();
• Kết thúc tiến trình, quay lại thực hiện tiếp;
• Cú pháp: Response.Flush();
• Dùng để chuyển client sang một URL khác;
• Cú pháp: Response.Redirect(url, boolean);
• Dùng để ghi dữ liệu ra web;
• Cú pháp: Response.Write(strname);
Hoặc
2.3 Lớp HttpCookies
Được sử dụng để ghi Cookies
Cookies trong asp.Net ở lớp Httpcookies
Ví dụ:
Khởi tạo biến cookies:
Httpcookies varCk = new Httpcookies(“CkName”);
Ghi giá trị vào biến cookie: varCk.Value =value;
Server ghi vào Client một biến Cookie:
Response.Cookies.Add(varck);
Xóa Cookie: Response.Cookies.Clear(varck);
24
25
Ví dụ:
<% string v, v1,v2,v3;
HttpCookie ckInform = new HttpCookie("Infor");
ckInform[“Us"] = "abc";
ckInform["Pwd"] = "xyz";
ckInform["Author"] = "123";
Response.Cookies.Add(ckInform);
%>
26
Ví dụ:
<% string v, v1,v2,v3;
v = Request.Cookies[“Infor”].value ;
Hoặc:
v1 = Request.Cookies[“Infor”] [“Us”];
v2 = Request.Cookies[“Infor”] [“Pwd”];
v3 = Request.Cookies[“Infor”] [“Author”];
%>
2.4 Lớp Http Server
Khái niệm
Các thuộc tính
Các phương thức
27
Khái niệm
Đối tượng Server cung cấp các phương thức
giúp chuyển điều khiển giữa các trang với nhau,
lấy thông tin về mã lỗi, encode,
Đối tượng Server cung cấp thông tin của
Server cho ứng dụng
28
Các thuộc tính
MachineName
ScriptTimeout
29
• Cho tên server
• Cú pháp: Server.MachineName();
• Thiết lập thời gian xử lý tối đa 1 file
• Cú pháp: Server. ScriptTimeout=100s;
Các phương thức
MapPath
Transfer
HtmlEncode
HtmlDecode
30
• Ánh xạ đường dẫn ảo thành đường dẫn vật lý
cho một tập tin trên Server
• Cú pháp: Server.MapPath(path);
• Gửi tất cả thông tin mà nó đã xử lý từ trang
ASP hiện hành sang trang ASP khác
• Cú pháp: Server.Transfer(path);
• Dùng để mã hoá HTML thành chuỗi
• Cú pháp: Server.HTMLEncode(str);
• Giải mã các chuỗi thành HTML thành
• Cú pháp: Server.HTMLDecode(str);
• 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
"
2.5 Session
Khái niệm
Thuộc tính và phương thức
31
Khái niệm
Dùng để lưu trữ thông tin của người dùng trong ứng
dụng
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 Session cho
mỗi người dùng mới kết nối vào ứng dụng và tự động
hủy chúng nếu người dùng còn không làm việc với ứng
dụng nữa
32
Thuộc tính và phương thức
Timeout
Abandon
33
• Qui định khoảng thời gian (tính bằng phút) mà Web
Server duy trì đối tượng Session nếu người dùng
không gởi yêu cầu nào về lại Server. Giá trị mặc định
của thuộc tính này là 20 phút
• Nếu không có yêu cầu nào kể từ lần yêu cầu sau cùng
một khoảng thời gian là phút, đối tượng
Session mà Web server cấp cho lần làm việc đó sẽ tự
động được giải phóng => Yêu cầu sau coi như ngời
dùng mới
Session.TimeOut = 100;
• Giải phóng vùng nhớ được dùng để duy trì đối tượng
Session trên Web Server ngay khi được gọi thực hiện
• Những yêu cầu sau đó được Web server coi như là
một người dùng mới
Session.Abandon();
34
Thuộc tính và phương thức
SessionID:
chứa ID của session đang kích hoạt, mỗi user đựơc
phân biệt bởi sessionID gọi là mã phiên làm việc
Count:
trả về số session trong một ứng dụng
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
Thuộc tính và phương thức
Tạo biến Session:
Session.Add("Tên_Biến","Giá trị khởi tạo");
Đọc giá trị của một biến sesstion:
Session.Contents[“Tên_Biến”];
hoặc dùng chỉ số: Session.Contents[i];
Ghi (thay đổi) giá trị của biến session:
Session.Contents[“Tên_Biến”] = ;
35
Thuộc tính và phương thức
Các sự kiện tự động được gọi mỗi khi một
phiên làm việc được tạo ra :
On_Start
On_End
Các sự kiện được đặt trong file Global.asax:
36
Ví dụ:
Tại trang Login, người dùng nhập user name và
mật khẩu :
Nếu đúng : asp.net và 123456 thì được phép truy
cập các trang Home.aspx
Nếu sai : Thì ở nguyên trang Login.aspx
Trang Home.aspx (chỉ có 1 dòng giới thiệu)
37
Thực hiện
Thiết kế Login.aspx :
Trang Login.aspx
Trang Login.aspx.cs
Thiết kế Home.aspx :
Thiết kế Home.aspx
Thiết kế Home.aspx.cs
Thiết kế Golbal.asax :
38
Trang Login.aspx
Trang Login.aspx.cs
39
Login
User name:
Password:
public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void cmdLogin_Click(object sender, EventArgs e)
{
if (txtUserID.Text == "asp.net" && txtPassword.Text == "123456")
{
Session.Contents["TrangThai"] = "DaDangNhap";
Response.Redirect("Home.aspx");
}
}
}
Thiết kế Home.aspx
Thiết kế Home.aspx.cs
40
Home
bạn đã đăng nhập thành công
public partial class Home : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Session.Contents["trangthai"].ToString()=="chuadangnhap")
{ Response.Redirect ("Login.aspx"); }
}
}
Thiết kế Golbal.asax
void Application_Start(object sender, EventArgs e)
{ // Code that runs on application startup }
void Application_End(object sender, EventArgs e)
{ // Code that runs on application shutdown }
void Application_Error(object sender, EventArgs e)
{ // Code that runs when an unhandled error occurs }
void Session_Start(object sender, EventArgs e)
{ // Code that runs when a new session is started
Session.Add("TrangThai", "chuadangnhap"); }
void Session_End(object sender, EventArgs e)
{ // Code that runs when a session ends.
// Note: The Session_End event is raised only when the sessionstate mode
// is set to InProc in the Web.config file. If session mode is set to StateServer
// or SQLServer, the event is not raised. }
41
2.6 Application
Khái niệm
Thuộc tính
42
Khái niệm
Đối tượng Application được sử dụng để quản lý
tất cả các thông tin của một ứng dụng web
Thông tin được lưu trữ trong đối tượng
Application có thể được xử lý trong bất kỳ trang
aspx nào trong suốt chu kỳ sống của ứng dụng
43
Tạo biến Application:
Application.Add(“Tên_Biến”, );
Truy xuất đến biến Application:
Application.Contents[“Tên_Biến”] ;
hoặc chỉ số: Application.Contents[i];
string s = (string) Application[“chuoi”] ;
int count = (int) Application[“count”] ;
44
Ngoài ra, đối tượng Application còn có 2 phương thức
thường dùng là :
Application.Lock(): Để khóa không cho người khác sửa đổi
các biến toàn cục
Application.UnLock() để mở khóa
Đối tượng Application cũng có 2 sự kiện :
Application_OnStart : chỉ được kích hoạt duy nhất một lần khi
yêu cầu đầu tiên phát sinh
Application_OnEND : được kích hoạt khi dịch vụ web dừng
(unload)
Mã lệnh viết cho 2 sự kiện này cũng được đặt trong file
Global.asax
45
Ví dụ:
Đếm số lượng khách truy cập website
Giải quyết:
Tạo website index.aspx
Sử dụng Application
46
Index.aspx
Index
Chào mừng bạn đã đến website của chúng tôi
47
Index.aspx.cs
public partial class Index : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
lblSLKhach.Text = "Bạn là vị khách thứ : " +
Application.Contents["SLTruyCap"].ToString();
}
}
48
Golbal.asax
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
//Tạo một biến Applciation là SLTruyCap và khởi tạo giá trị 0
Application.Add("SLTruyCap", 0);
}
void Session_Start(object sender, EventArgs e)
{
// Code that runs when a new session is started
//Tăng số lượng người truy cập lên 1 khi có một người mới thăm
Application.Contents["SLTruyCap"] =
int.Parse(Application.Contents["SLTruyCap"].ToString()) + 1;
}
49
2.7 Chu trình sống của một trang
web
Chu kỳ sống được bắt đầu khi trình duyệt yêu cầu một trang web gọi là Session.
Chu kỳ sống vẫn tiếp tục nếu:
Session đang hoạt động.
Người sử dụng tương tác với giao diện web cho đến khi kích hoạt một sự kiện.
Dữ liệu của trang (View State) wed được gửi về cho Server.
Server nhận được View State và trả lại yêu cầu từ View State.
Chu kỳ sống kết thúc khi:
Người dùng kết thúc trình duyệt.
Session kết thúc (timeout).
Mỗi khi người dùng duyệt web của mình sẽ có các sự kiện ứng dụng sau:
Application_Start: Người dùng đầu tiên duyệt trang web.
Application_End: Khi không còn người dùng nào duyệt trang web.
Application_Error: Khi có lỗi xảy ra trong ứng dụng
Session_Start: Khi người dùng duyệt một trang web
Session_End: Khi người dùng đóng trình duyệt hoặc Session kết thúc (time
out) 50
file Global.asax
void Application_Start(object sender, EventArgs e)
{
//Kiểm tra nếu chưa tồn tại file thì tạo file Count_Visited.txt
if (!File.Exists(Server.MapPath("Count_Visited.txt")))
File.WriteAllText(Server.MapPath("Count_Visited.txt"), "0");
Application["DaTruyCap"] =int.Parse(File.ReadAllText(Server.MapPath("Count_Visited.txt")));
}
void Application_End(object sender, EventArgs e)
{
}
void Application_Error(object sender, EventArgs e)
{
}
void Session_Start(object sender, EventArgs e)
{ // Tăng số đang truy cập lên 1 nếu có khách truy cập
if (Application["DangTruyCap"] == null)
Application["DangTruyCap"] = 1;
else
Application["DangTruyCap"] = (int)Application["DangTruyCap"] + 1;
// Tăng số đã truy cập lên 1 nếu có khách truy cập
Application["DaTruyCap"] = (int)Application["DaTruyCap"] + 1;
File.WriteAllText(Server.MapPath("Count_Visited.txt"), Application["DaTruyCap"].ToString());
}
void Session_End(object sender, EventArgs e)
{ //Khi hết session hoặc người dùng thoát khỏi website thì giảm số người đang truy cập đi 1
Application["DangTruyCap"] = (int)Application["DangTruyCap"] - 1;
}
51
Cảm ơn.
52