<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>
<b>Bài 2: Các lớp sử dụng trong </b>
<b>ASP.NET </b>
2.1. Request
2.2. Response
2.3. Cookies
2.4. Server
2.5. Session
2.6. Application
</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>
<b>2.1 Lớp Http Request</b>
Khái niệm
Các thuộc tính
</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>
<b>Khái niệm</b>
<b>Request</b>
là một đối tượng của ASP.NET, nó cho phép
</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>
<b>Các thuộc tính</b>
RequestType
Request.Form
Request.QueryString
Cookies
</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>
<b>RequestType</b>
Trả về phương thức truyền dữ liệu từ Client đến Server
Gồm 2 phương thức
<b>POST và GET</b>
Namespace: System.Web
Assembly: System.Web (in System.Web.dll)
Type Value: System.String
Cú pháp:
</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>
6
<b>Request.Form</b>
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
<b>POST</b>
Cú pháp:
Request.Form
( element )[(index)|.Count];
</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7></div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>
<b>Default.aspx</b>
<body>
<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>
</body>
</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>
<b>CheckUser.aspx </b>
<body>
<b>UserName:</b>
<% =
Request.Form
["
txtUser
"] %><br />
<b>Password:</b>
<b><%</b>
=
Request.Form
["
txtPwd
"]
<b>%></b>
</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>
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
</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>
<b>CheckUser.aspx </b>
<body>
<div>
<b>UserName:</b>
<%=Request.Form["txtUser"] %><br/>
<b>Password:</b>
<%=Request.Form["txtPwd"] %> <br />
<b>Số phần tử:</b>
<%=Request.Form.Count %> <br/>
<% int i, num;
string s1;
num = Request.Form.Count;
for (i = 0; i < num; i++)
{
s1 = Request.Form.Keys[i];
</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>
<b>Request.QueryString</b>
Dùng để lấy dữ liệu được gửi từ Client đến Server bằng
phương thức
<b>GET</b>
hoặc truyền dữ liệu có chứa tag liên
kết
<a> Hyperlink
http://<host>[:<port>][<path>
<b>[?<QueryString>]]</b>
[?Tham_so_1=gia_tri_1[
<b>&</b>
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à
<b>NULL</b>
Cú pháp:
Request.QueryString( variable )[(index)|.Count]
</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>
<b>Cách truyền tham số</b>
<Form method=”
<b>Get</b>
”
<b>action</b>
=”FileName.aspx>
Các phần tử của form
</Form>
<Form method=”
<b>Get</b>
”
<b>action</b>
=”FileName.aspx>
Các phần tử của form
</Form>
<a href=”FileName.aspx?var1=value1&var2=value2&…”>
Text hoặc image
</a>
<a href=”FileName.aspx?
var1
=value1
&
var2
=value2
&
…”>
Text hoặc image
</a>
<b>1</b>
</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>
<b>Default.aspx</b>
<body>
<div>
<form method= "
<b>get</b>
" 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>
</div>
</body>
</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>
<b>CheckUser.aspx </b>
<body>
<% string strUser, strPws;
strUser = Request.QueryString["txtUser"];
strPws = Request.QueryString["txtPwd"];
%>
<b>UserName: </b>
<b><%=strUser%> </b>
<br />
<b>Password: </b>
<%=strPws %>
</body>
</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>
<b>Default.aspx</b>
<body>
<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>
<a href= "News.aspx">Tin tức</a><br />
<a href= "News.aspx">Âm nhạc</a><br />
</body>
</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>
<b>CheckUser.aspx </b>
<body>
<a href="News.aspx?
<b>Id</b>
=
<b>3456</b>
&
<b>type</b>
=
<b>hide</b>
"> Tin tuc</a> <br/>
<a href="News.aspx?Id=36586&type=item">Music</a><br/>
<% string strUser, strPws;
strUser = Request.QueryString["txtUser"];
strPws = Request.QueryString["txtPwd"];
%>
<b>UserName: </b> <%=strUser%> <br />
<b>Password: </b> <%=strPws %>
</body>
</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>
<b>New.aspx</b>
<body>
<% String strID, strType;
strID = Request.QueryString["
<b>Id</b>
"];
strType = Request.QueryString["
<b>type</b>
"];
%>
Ban chon ma so : <%=strID%><br/>
Kieu hien thi : <%=strType%><br/>
</body>
</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19>
<b>Request.QueryString.Count;</b>
Trả về số phần tử của form chuyển từ client đến
server
<b>Request.QueryString.Keys[i];</b>
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
</div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20>
<b>2.2 Lớp Http Response</b>
Khái niệm
Các thuộc tính
Các phương thức
</div>
<span class='text_page_counter'>(21)</span><div class='page_container' data-page=21>
<b>Khái niệm</b>
<b>Http Response</b>
được sử dụng để truyền dữ liệu
từ webserver đến webBrowser
</div>
<span class='text_page_counter'>(22)</span><div class='page_container' data-page=22>
<b>Các thuộc tính</b>
<b>Buffer:</b>
Quy định cách truyền tải dữ liệu:
<b>Response.Buffer=true/false; </b>
True: Hồ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 đó
<b>isClientConnected</b>
Kiểm tra máy client có yêu cầu kết nối đến server
<b>Response.isClientConnected=true/false;</b>
</div>
<span class='text_page_counter'>(23)</span><div class='page_container' data-page=23>
<b>Các phương thức</b>
<b>Clear</b>
<b>End</b>
<b>Flush</b>
<b>Redirect</b>
<b>Write</b>
•
Xóa vùng tạm;
•
Cú pháp:
<b>Response.Clear();</b>
•
Kết thúc tiến trình xử lý trên Server và đẩy dữ
liệu tới Client;
•
Cú pháp:
<b>Response.End();</b>
•
Kết thúc tiến trình, quay lại thực hiện tiếp;
•
Cú pháp:
<b>Response.Flush();</b>
•
Dùng để chuyển client sang một URL
khác;
</div>
<span class='text_page_counter'>(24)</span><div class='page_container' data-page=24>
<b>2.3 Lớp HttpCookies</b>
Được sử dụng để ghi Cookies
Cookies trong asp.Net ở lớp
<b>Httpcookies</b>
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);
</div>
<span class='text_page_counter'>(25)</span><div class='page_container' data-page=25>
<b>Ví dụ:</b>
<%
string
v, v1,v2,v3;
HttpCookie
ckInform =
new
HttpCookie
(
"Infor"
);
ckInform[
“Us"
] =
"abc"
;
ckInform[
"Pwd"
] =
"xyz"
;
ckInform[
"Author"
] =
"123"
;
</div>
<span class='text_page_counter'>(26)</span><div class='page_container' data-page=26>
26
<b>Ví dụ:</b>
<%
string
v, v1,v2,v3;
v = Request.Cookies[“Infor”].value ;
Hoặc:
</div>
<span class='text_page_counter'>(27)</span><div class='page_container' data-page=27>
<b>2.4 Lớp Http Server</b>
Khái niệm
Các thuộc tính
</div>
<span class='text_page_counter'>(28)</span><div class='page_container' data-page=28>
<b>Khái niệm</b>
<b>Đối tượng Server</b>
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, …
<b>Đối tượng Server</b>
cung cấp thông tin của
Server cho ứng dụng
</div>
<span class='text_page_counter'>(29)</span><div class='page_container' data-page=29>
<b>Các thuộc tính</b>
<b>MachineName</b>
<b>ScriptTimeout</b>
•
Cho tên server
•
Cú pháp:
<b>Server.MachineName();</b>
•
Thiết lập thời gian xử lý tối đa 1 file
</div>
<span class='text_page_counter'>(30)</span><div class='page_container' data-page=30>
<b>Các phương thức</b>
<b>MapPath</b>
<b>Transfer</b>
<b>HtmlEncode</b>
<b>HtmlDecode</b>
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:
<b>Server.MapPath(path);</b>
•
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:
<b>Server.Transfer(path);</b>
•
Dùng để mã hố HTML thành chuỗi
•
Cú pháp:
<b>Server.HTMLEncode(str);</b>
•
Giải mã các chuỗi thành HTML thành
•
Cú pháp:
<b>Server.HTMLDecode(str);</b>
• Ký tự < chuyển thành <
• Ký tự > chuyển thành >
• Ký tự & chuyển thành &
</div>
<span class='text_page_counter'>(31)</span><div class='page_container' data-page=31>
<b>2.5 Session</b>
Khái niệm
</div>
<span class='text_page_counter'>(32)</span><div class='page_container' data-page=32>
<b>Khái niệm</b>
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
</div>
<span class='text_page_counter'>(33)</span><div class='page_container' data-page=33>
<b>Thuộc tính và phương thức</b>
Timeout
Abandon
• 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ó u cầu nào kể từ lần yêu cầu sau cùng
một khoảng thời gian là <Timeout> 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
<b>Session.TimeOut = 100;</b>
• 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ó u cầu nào kể từ lần u cầu sau cùng
một khoảng thời gian là <Timeout> 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
<b>Session.TimeOut = 100;</b>
• 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
</div>
<span class='text_page_counter'>(34)</span><div class='page_container' data-page=34>
34
<b>Thuộc tính và phương thức</b>
<b>SessionID: </b>
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
<b>Count: </b>
trả về số session trong một ứng dụng
<b>Remove(“SessionName”):</b>
xoá dữ liệu trên biến “VarSession”
<b>RemoveAll():</b>
</div>
<span class='text_page_counter'>(35)</span><div class='page_container' data-page=35>
<b>Thuộc tính và phương thức</b>
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:
</div>
<span class='text_page_counter'>(36)</span><div class='page_container' data-page=36>
<b>Thuộc tính và phương thức</b>
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:
</div>
<span class='text_page_counter'>(37)</span><div class='page_container' data-page=37>
<b>Ví dụ:</b>
Tại trang Login, người dùng nhập user name và
mật khẩu :
Nếu đúng :
<b>asp.net</b>
và
<b>123456</b>
thì được phép truy
cập các trang
<b>Home.aspx</b>
Nếu sai : Thì ở nguyên trang Login.aspx
</div>
<span class='text_page_counter'>(38)</span><div class='page_container' data-page=38>
<b>Thực hiện</b>
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 :
</div>
<span class='text_page_counter'>(39)</span><div class='page_container' data-page=39>
Trang Login.aspx
Trang Login.aspx.cs
<head runat="server">
<title>Login</title>
</head>
<body>
<form id="form1" runat="server">
User name: <asp:TextBox runat="server" ID="txtUserID"> </asp:TextBox><br />
Password:
<asp:TextBox runat="server" ID="txtPassword" TextMode="Password">
</asp:TextBox>
<br />
<asp:Button runat="server" Text="Login" ID="cmdLogin" onclick="cmdLogin_Click"/>
</form>
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")
{
</div>
<span class='text_page_counter'>(40)</span><div class='page_container' data-page=40>
Thiết kế Home.aspx
Thiết kế Home.aspx.cs
40
<head runat="server">
<title>Home</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h1 style="text-align:center">
bạn đã đăng nhập thành công
</h1>
</div>
</form>
</body>
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"); }
</div>
<span class='text_page_counter'>(41)</span><div class='page_container' data-page=41>
<b>Thiết kế Golbal.asax</b>
<script runat="server">
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 }
<b> void Session_Start(object sender, EventArgs e) </b>
<b> { // Code that runs when a new session is started</b>
<b> Session.Add("TrangThai", "chuadangnhap"); }</b>
void Session_End(object sender, EventArgs e)
{ // Code that runs when a session ends.
</div>
<span class='text_page_counter'>(42)</span><div class='page_container' data-page=42>
<b>2.6 Application </b>
Khái niệm
Thuộc tính
</div>
<span class='text_page_counter'>(43)</span><div class='page_container' data-page=43>
<b>Khái niệm</b>
Đố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
</div>
<span class='text_page_counter'>(44)</span><div class='page_container' data-page=44>
Tạo biến Application:
Application.Add(“Tên_Biến”, <Giá trị khởi tạo>);
Truy xuất đến biến Application:
Application.Contents[“Tên_Biến”] ;
hoặc chỉ số: Application.Contents[i];
<b>string s = (string) Application[“chuoi”] ;</b>
<b>int count = (int) Application[“count”] ;</b>
</div>
<span class='text_page_counter'>(45)</span><div class='page_container' data-page=45>
Ngồi ra, đối tượng Application cịn có 2 phương thức
thường dùng là :
<b>Application</b>
.
<b>Lock()</b>
: Để khóa khơng cho người khác sửa đổi
các biến toàn cục
<b>Application.UnLock</b>
() để 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_On
<b>END</b>
: được kích hoạt khi dịch vụ web dừng
</div>
<span class='text_page_counter'>(46)</span><div class='page_container' data-page=46>
<b>Ví dụ:</b>
Đếm số lượng khách truy cập website
Giải quyết:
Tạo website index.aspx
Sử dụng Application
</div>
<span class='text_page_counter'>(47)</span><div class='page_container' data-page=47>
<b>Index.aspx</b>
<head runat="server">
<title>Index</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h1>Chào mừng bạn đã đến website của chúng tôi</h1>
<asp:Label runat="server" ID="lblSLKhach"></asp:Label>
</div>
</div>
<span class='text_page_counter'>(48)</span><div class='page_container' data-page=48>
<b>Index.aspx.cs</b>
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();
}
}
</div>
<span class='text_page_counter'>(49)</span><div class='page_container' data-page=49>
<b>Golbal.asax</b>
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"] =
</div>
<span class='text_page_counter'>(50)</span><div class='page_container' data-page=50>
<b>2.7 Chu trình sống của một trang </b>
<b>web </b>
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:
<b>Application_Start:</b> Người dùng đầu tiên duyệt trang web.
<b>Application_End:</b> Khi khơng cịn người dùng nào duyệt trang web.
<b>Application_Error:</b> Khi có lỗi xảy ra trong ứng dụng
<b>Session_Start:</b> Khi người dùng duyệt một trang web
<b>Session_End:</b> Khi người dùng đóng trình duyệt hoặc Session kết thúc (time
out)
</div>
<span class='text_page_counter'>(51)</span><div class='page_container' data-page=51>
<b>file Global.asax</b>
<%@ Application Language="C#" %>
<%@ Import Namespace="System.IO" %>
<script runat="server">
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;
</div>
<span class='text_page_counter'>(52)</span><div class='page_container' data-page=52>
Cảm ơn.
</div>
<!--links-->