1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình ASP.NET Applications và State Management

68 209 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 68
Dung lượng 1,41 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Demo Query String Tạo một ứng dụng truy cập CSDL GameList gồm: o GameList.aspx: hiển thị tên tất cả các game có trong database, với mỗi game tạo url dạng querystring với id của game đ

Trang 2

Chương 3:

ASP.NET Application & State Management

Trang 4

Tổng quan

Trang 5

Request Object

 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ết tới

Server

 Dùng để đọc thông tin từ client gửi lên (header, query

string, cookies, …)

Data

Trang 6

Request Object (tt)

Các thuộc tính

 RequestType: 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

Cú pháp

valMethod=Request RequestType

Trang 7

Lấy dữ liệu gửi đi

Trang 8

Request Object - POST

 Ví dụ: thiết kế giao diện như hình

Trang 9

<tr><td style="width: 100px" colspan="2"><asp:Button ID="Button1"

runat="server" Text="Button" PostBackUrl=" ~/Default2.aspx "/></td></tr>

</table>

</form>

</body></html>

Trang 10

Request Object - POST

Ví dụ (tt):

Lấy giá trị của UserName và Password trên form

string sUser, sPass;

sUser = Request.Form ["txtUser"];

sPass = Request.Form ["txtPass"];

//Xuất ra màn hình

Trang 11

Request Object - GET

Cú pháp:

 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

Request.QueryString[“ varName ”]

Trang 12

Request Object - GET

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

Trang 13

Request Object - GET

 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["txtPass"];

Trang 14

Request Object - GET

 Hoặc

<a href=“ReadNews.aspx?CatID=edu&NewsID=98708”>

Tin Giáo dục

</a>

Var1=Request.QueryString[“ CatID ”];// Var1=edu

Var2=Request.QueryString[“ NewsID ”];// Var2=98708

T ại ReadNews.aspx m uốn lấy giá catID and NewsID , s ử

dụng cú pháp :

Trang 15

Demo Query String

 Tạo một ứng dụng truy cập CSDL GameList

gồm:

o GameList.aspx: hiển thị tên tất cả các game

có trong database, với mỗi game tạo url dạng querystring với id của game đó, user kích vào

sẽ mở ra trang GameDetail.aspx cho phép xem chi tiết thông tin của game đó

o GameDetail.aspx: lấy id từ querystring, đọc

CSDL GameList và trả về chi tiết tất cả thông tin của game.

Trang 16

Query String

Trang 17

Query String

 Tạo trang GameList.aspx

o Trang này có control là label sẽ hiển thị danh sách các tên game.

Label: có id là “lblGameList”

Trang 18

Query String

 Trang GameList.aspx khi thực thi

Danh sách các tên game lấy trong database

Hyperlink xem chi tiết của “Thuận Thiên Kiếm”

Trang 19

Query String

 Tạo trang GameDetail.aspx

o Trang này có 4 label chứa các thông tin chi tiết của game:

• Tên game: lblTenGame , nhà sản xuất: lblNSX , nhà phát hành: lblNPH , thể loại: lblTheLoai

Trang 20

SqlCommand cmd = new SqlCommand(query, conn);

SqlDataReader reader;

reader = cmd.ExecuteReader(); // thực thi câu truy vấn // phần tiếp theo trong slide kế…

Trang 21

Query String

// tiếp theo của silde trước

if (reader.HasRows) // nếu có dữ liệu {

reader.Read(); // đọc 1 dòng dữ liệu lblTenGame.Text = reader["TenGame"].ToString();

lblNSX.Text = reader["NhaSanXuat"].ToString();

lblNPH.Text = reader["NhaPhatHanh"].ToString();

lblTheLoai.Text = reader["TheLoai"].ToString();

} reader.Close(); conn.Close(); // đóng kết nối }

catch (Exception ex) {

Response.Write(ex.Message); // hiển thị thông báo lỗi }

} // end if (sid !=null) } // end method Page_Load

Trang 22

Query String

Chạy demo

id = 5 là mã game Cổ Long

Trang 23

Response Object

nội dung (một xâu) bất kỳ về cho trình duyệt

Trang 24

Response Object (tt)

Các phương thức

 Response.Clear(): Xóa vùng tạm

Cú pháp:

 Response.Flush() dùng để đưa dữ liệu còn trong bộ

đệm phía server về cho phía trình duyệt

 Response.End(): Kết thúc tiến trình xử lý trên Server và

đẩy dữ liệu tới Client

Response.Clear()

Trang 25

Response Object

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:

o True : Hoàn tất công việc và gửi một lần

o False : Thực hiện xong đến đâu thì gửi đến đó

Trang 26

Server Object

 Đối tượng Server cung cấp thông tin của Web server choứng dụng, bao gồm các phương thức giúp chuyển điều khiểngiữa các trang với nhau, lấy thông tin về mã lỗi, encode, …

 Các thuộc tính

o MachineName : tên server

o ScriptTimeout : thiết lập thời gian xử lý tối đa 1 file

Ví dụ:

Server.ScriptTimeout = 100s //thiết lập thời gian mặc định

Trang 27

Server Object

Các phương thức

 MapPath(“URL”): ánh xạ đường dẫn ảo thành đường

dẫn vật lý cho một tập tin trên Server

Trang 28

Server Object

 Transfer: gửi tất cả thông tin mà nó đã xử lý từ trang

ASPX hiện hành sang trang ASPX khác Cú pháp:

Trong đó, tham số path là đường dẫn của tập tin ASPX

cần chuyển điều khiển

o sử dụng ký hiệu “~” để chỉ đến đường dẫn tương đối

o sử dụng ký hiệu “ ” để chỉ đến đường dẫn tuyệt đối

Server Transfer (path)

Phân biệt Server.Tranfer vs Reponse.Redirect

Trang 30

Server Object

 Khi mã hoá chuỗi HTML sang chuỗi bình

thường nếu gặp các ký tự như sau sẽ chuyển

sang ký tự tương ứng:

o Ký tự <chuyển thành &lt;

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

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

o Dấu đôi “ chuyển thành &quot;

Trang 32

Server Object

 Phương thức URLEncode: Tương tự như

URLEcode dùng để mã hoá URL thành chuỗi

Cú pháp:

 Quy tắc chuyển:

o Ký tự khoảng trắng chuyển thành dấu +

o Ký tự không thuộc ký tự chữ và số sẽ chuyển thành

số hexadecimal

Server URLEncode (str)

Trang 33

Quản lý trạng thái

Trang 34

Quản lý trạng thái

 Mỗi ứng dụng cần chia sẽ thông tin giữa các

request

 ASP.NET cung cấp các cơ chế cho phép chia

sẽ thông tin giữa các Request:

o Các đối tượng quản lý trạng thái (State) phía client và server.

o Cơ chế Cache

Trang 35

Các đối tượng quản lý trạng thái

 Client-based State

o Được lưu trữ ở máy Client

o Gồm: ViewStates, Hidden Fields, QueryStrings, Cookies

 Server-based State

o Được lưu trữ ở máy Server

o Gồm: Session, Application

Trang 36

View state

 Cho phép lưu các kiểu dữ liệu của NET

 Lưu trữ ở client side, trong hidden field của trang web

 Lưu trữ trong các lần post back của trang Mất dữ liệu

khi user nhập vào URL mới

 Phạm vi giới hạn trong một trang web

 Bảo mật: mặc định ở trạng thái insecure Tuy nhiên ta

có thể thiết lập page directive để mã hóa

 Hạn chế: lưu trữ số lượng lớn thông tin trong viewstate

sẽ làm chậm thời gian response và request

 Thường dùng để cài đặt thông tin đặc biệt nào đó của

page

Trang 37

View state

 View state là ưu tiên chọn lựa đầu tiên khi cần lưu trữ

thông tin trong phạm vi của một trang web

 View state cũng được sử dụng bởi ASP.NET Web

control, cho phép các control này duy trì những thuộc tính giữa các lần postback

 Có thể add dữ liệu vào

view state collection thông qua thuộc tính Page.ViewState

int count;

if (ViewState["Count"] == null) count = 0;

else count = (int) ViewState["Count"]; count += 1;

ViewState["Count"] = count;

Label1.Text = string.Format("Số lần postback {0}", count);

Trang 38

View state

 Thuận lợi:

 View state không sử dụng memory trên server

 View state cũng không bị ràng buộc nào (như time out)

 Tình huống hạn chế khi sử dụng view state

 Cần thiết lưu trữ dữ liệu có mức độ nhạy cảm cao View state cũng có thể mã hóa, nhưng session lựa chọn tốt hơn

 Cần thiết lưu trữ thông tin được sử dụng trong nhiều trang Trong tình huống này ta sử dụng session , cookie hoặc

query string

 Cần thiết lưu trữ thông tin lớn và không muốn làm chậm thời gian truyền tải, nên sử dụng database , cache hoặc

session

Trang 40

Session là gì?

Khái niệm phiên làm việc

• Mỗi khi user request một trang web lần đầu tiên thì

phiên làm việc được tạo ra.

• Một nhận dạng phiên làm việc được cấp bởi server

• Phiên làm việc kết thúc khi

Trang 41

 Cho phép lưu trữ dữ liệu kiểu NET

 Lưu trữ trên bộ nhớ của server

 Thời gian sống kết thúc sau một khoảng thời gian định

nghĩa trước (thường là 20 phút, có thể thay đổi, hoặc lập trình hủy)

 Phạm vi toàn bộ ứng dụng NET

 Tính bảo mật cao, do dữ liệu lưu trữ trên server, không

bao giờ chuyển cho client và mỗi client có client session

id riêng

 Lưu trữ session với dữ liệu lớn cũng có thể làm chậm

server, đặc biệt nếu nhiều người truy cập đồng thời, do mỗi user sẽ có bản copy session riêng!

Trang 43

Session – cấu hình

• Thời gian sống của session có thể thiết lập thông qua

web.config (đơn vị là phút)

• Session có thể làm việc mà không cần cookie

• Trong trường này Session ID lưu trữ trong URL

Trang 44

Phương thức

 Abandon(): giải phóng vùng nhớ được dùng để duy trì

đối tượng Session trên Web Server ngay khi được gọithực hiện Những yêu cầu sau đó được Web server coinhư là một ngườ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

Trang 45

Ví dụ: Tạo trang (Page) hoặc User Control là Login.aspx

Thiết kế giao diện như sau:

Trang 46

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)

Trang 47

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;

} }

Trang 49

• Là mẫu tin nhỏ (dạng chuỗi) dùng để lưu trữ thông tin

người dùng trên máy của client (trong bộ nhớ hoặc file

Trang 50

Để thiết lập một cookie:

• Tạo đối tượng System.Net.HttpCookie

• Tạo dữ liệu dạng chuỗi

• Add đối tượng cookie vào đối tượng Response của

trang web hiện tại

HttpCookie cookie = new HttpCookie(“Account");

cookie[“Username"] = “Nguyen Mai Chi";

Response.Cookies.Add(cookie);

HttpCookie cookie = new HttpCookie(“Account");

cookie[“Username"] = “Nguyen Mai Chi";

Response.Cookies.Add(cookie);

Trang 51

Để truy cập cookie

• Sử dụng đối tượng Request để lấy cookie

• Kiểm tra xem cookie khác null?

• Truy cập giá trị cookie qua thuộc tính key

Trang 52

• Persistent cookies/permanent cookie

• Lưu trữ trong đĩa cứng của client cho đến khi hết hạn, dạng cookie này được thiết lập ngày hết hạn (expiration date)

• Non persistent cookie/temporary cookie

• Không định nghĩa thời gian hết hạn, cookie được lưu trữ trong browser memory, kết thúc khi đóng trình duyệt!

và non persistent cookie

Trang 53

HttpCookie cookie = new HttpCookie("Account");

cookie["Username"] = "Nguyen Mai Chi";

cookie["email"] = “chiaki2412@yahoo.com";

// khai báo thời gian hết hạn cho cookie

cookie.Expires = DateTime.Now.AddDays(5);

// add cookie vào response của trang web

Response.Cookies.Add(cookie);

HttpCookie cookie = new HttpCookie("Account");

cookie["Username"] = "Nguyen Mai Chi";

cookie["email"] = “chiaki2412@yahoo.com";

// khai báo thời gian hết hạn cho cookie

cookie.Expires = DateTime.Now.AddDays(5);

// add cookie vào response của trang web

Response.Cookies.Add(cookie);

Trang 54

Cross-page Postback

• Cross page postback là dạng postback gởi tới

trang khác

• Các button control như Button, ImageButton và

LinkButton đều có thuộc tính PostBackUrl

• Để sử dụng Cross-page postback

• Thiết lập PostBackUrl cho web form cần chuyển

đến

• Khi user click vào button

• Page sẽ được gởi tới URL mới với tất cả các giá trị

của các control trong trang hiện thời.

Trang 55

lblInfo.Text = "You came from " + PreviousPage.Header.Title;

} }

protected void Page_Load(object sender, EventArgs e)

{

if (PreviousPage != null) {

lblInfo.Text = "You came from " + PreviousPage.Header.Title;

} }

Trang 56

Cross-page Postback

Để truy cập chi tiết hơn, các giá trị của control trên

form, thì cần phải gán tham chiếu PreviousPage

cho lớp page tương ứng

Ta có thể add thuộc tính vào trang nguồn và đọc

lblInfo.Text = "Welcome" + prevPage.NameEntry;

lblInfo.Text = "Welcome" + prevPage.NameEntry;

}

Thuộc tính của lớp SourcePage

Trang 57

Cross-page Postback

• Minh họa cross-page Postback

• Tạo 2 trang

• SendInfo.aspx: chứa form nhập thông tin user

• TargetPage.aspx: lấy thông tin từ user từ

SendInfo.aspx và hiển thị lên trình duyệt.

Trang 58

Cross-page Postback

Mô tả control của trang SendInfo.aspx

Id control Kiểu control Thuộc tính Diễn giải

txtUsername TextBox Nhập tên user

txtEmail TextBox Nhập địa chỉ email

txtCompany TextBox Nhập tên công ty

btnPostInfo Button PostBackUrl =

~/TargetPage.aspx

Button thực thi thao tác Cross Page Postback

Trang 60

Cross-page Postback

• Mô tả trang TargetPage.aspx

• Lấy thông tin từ SendInfo.aspx và hiển thị ra

trình duyệt

Id control Kiểu control Thuộc tính Diễn giải lblUsername Label - Hiển thị tên user lblEmail Label - Hiển thị email lblCompany Label - Hiển thị công ty

Trang 61

Cross-page Postback

Phần xử lý của TargetPage lấy thông tin từ SourcPage.aspx

protected void Page_Load(object sender, EventArgs e) {

// lấy thông tin từ previous page

if (PreviousPage != null) {

// biến đối tượng source tham chiếu đến previous page

SendInfo source = PreviousPage as SendInfo;

// lấy các control của previous page (SourcePage.aspx)

TextBox username = (TextBox) source.FindControl(" txtUsername ");

TextBox email = (TextBox) source.FindControl(" txtEmail ");

TextBox company = (TextBox)source.FindControl(" txtCompany ");

// gán thông tin cho các label

lblUsername.Text = username.Text;

lblEmail.Text = email.Text;

lblCompany.Text = company.Text;

}// end if

} // end method Page_Load

ID của control trong SendInfo.aspx

SendInfo là class page của SendInfo.aspx

Trang 62

 Đố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, bao 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 sau khi khởi tạo thì mọi người sử dụng có thể truy cập đối tượng này.

Trang 64

Sự kiện Application và Session

 Application_Start: Người dùng đầu tiên viếng thăm

1 trang web trong ứng dụng web được gọi

 Application_End: Khi ứng dụng web kết thúc (không

có người dùng nào mở trang web của ứng dụng)

 Application_Error: Xảy ra khi có lỗi trong ứng dụng

 Session_Start: Một người dùng mới, ghé thăm 1

trang web của ứng dụng

 Session_End: Người dùng đó đóng trình duyệt hoặc

sau một khoảng thời gian timeout không request lên ứng dụng

Trang 65

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.Lock();

Application[“ TenBien ”] = “Value” ;

Application.UnLock();

Trang 66

 Lấy giá trị:

<biến> = Application[“tên biến”];

string s = (string) Application[“chuoi”] ; int count = (int) Application[“count”] ;

Trang 67

Ví dụ dùng Application

 Đọc số lượt truy cập, số người online

Trang 68

THE END

Ngày đăng: 17/03/2015, 17:56

TỪ KHÓA LIÊN QUAN