Tải bản đầy đủ (.pptx) (52 trang)

nguyễn kim đức just another wordpresscom weblog

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (454.41 KB, 52 trang )

<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 &lt;


• Ký tự > chuyển thành &gt;


• Ký tự & chuyển thành &amp;


</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>

<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-->

×