1.2.3 Các Assembly mới - System.Core.dll: Các cài đặt cho LINQ to Objects - System.Data.Linq.dll: Các cài đặt cho LINQ to SQL - System.Xml.Linq.dll: Các cài đặt cho LINQ to XML - System.
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC CÔNG NGHỆ TP.HCM
Trang 2LẬP TRÌNH ỨNG DỤNG WEB
Ấn bản 2015
Trang 3I MỤC LỤC
II MỤC LỤC
MỤC LỤC
MỤC LỤC I HƯỚNG DẪN IV BÀI 1:
ASP.NET 1
1.1 TỔNG QUAN ASP.NET
1 1.1.1 Giới thiệu 1
1.1.2 ASP.NET tích hợp với Framework 1
1.1.3 Tính đa ngôn ngữ 1
1.1.4 Tính hướng đối tượng 2
1.1.5 Biên dịch ASP.NET 2
1.1.6 Dễ dàng triển khai và cấu hình 3
1.2 TÍNH NĂNG MỚI TRONG ASP.NET
3 1.2.1 Các công cụ điều khiển mới 4
1.2.2 LINQ 4
1.2.3 Các Assembly mới 4
1.2.4 ASP.NET MVC (Model View Control) 4
1.3 TẠO TRANG WEB VỚI VISIUAL STUDIO 5
1.3.1 Tạo dự án mới 5
1.3.2 Ví dụ 7
1.4 CÁC SỰ KIỆN TRONG ASP.NET
8 1.4.1 Chu kỳ sống của trang web trong ASP.NET (Page Life Cycle)
9 1.4.2 Một số sự kiện của trang web 9
1.4.3 Sự kiện ứng dụng 10
TÓM TẮT
12 BÀI TẬP
13 BÀI 2: CÁC LỚP SỬ DỤNG TRONG ASP.NET 15
2.1 HTTP REQUEST
15 2.1.1 Giới thiệu 15
2.1.2 Các thuộc tính 16
2.2 HTTP RESPONSE
19 2.2.1 Giới thiệu 19
2.2.2 Các thuộc tính/phương thức 20
2.3 HTTP SERVER
20 2.4 SESSION VÀ COOKIE 21
Trang 4I MỤC LỤC
II MỤC LỤC
2.4.1 Giới thiệu Cookie và Session 21
2.4.2 Cookie 22
2.4.3 Session 23
TÓM TẮT
25 BÀI TẬP 26
Trang 5I MỤC LỤC
II MỤC LỤC
BÀI 3: TRUY CẬP DỮ LIỆU
28 3.1 TỔNG QUAN
28 3.2 TRUY CẬP DỮ LIỆU ADO.NET
30 3.3 TRUY CẬP DỮ LIỆU XML
31 3.4 SQLDATASOURCE
32 3.5 TRUY CẬP DỮ LIỆU LINQ
34 3.5.1 LINQ cơ bản 35
3.5.2 Cách làm việc của LINQ 35
3.5.3 Cú pháp LINQ 35
TÓM TẮT
39 BÀI TẬP
40 BÀI 4: LẬP TRÌNH GIAO DIỆN WEB VỚI JQUERY 41
4.1 J QUERY LÀ GÌ?
41 4.1.1 Giới thiệu 41
4.1.2 Sử dụng jQuery trong ASP.NET 42
4.2 LẬP TRÌNH VỚI J QUERY 43
4.2.1 Chạy mã khi trang đã sẵn sàng 43
4.2.2 Hàm $() - function $() 44
4.2.3 Một số API trong jQuery 44
TÓM TẮT
51 BÀI TẬP
51 BÀI 5: TỔNG QUAN VỀ ASP.NET MVC FRAMEWORK
52 5.1 TỔNG QUAN ASP.NET MVC
52 5.1.1 Mô hình MVC cơ bản 52
5.1.2 Đặc tính trong ASP.NET MVC 53
5.1.3 Khác biệt với Web Form 53
5.1.4 Lợi ích của ứng dụng web dựa trên mô hình MVC 54
5.2 XÂY DỰNG ỨNG DỤNG VỚI ASP.NET MVC 56
5.2.1 Tạo Project với ASP.NET MVC Web Application 56
5.3 ĐỊNH TUYẾN URL
58 5.3.1 Giới thiệu 58
5.3.2 Tìm hiểu định tuyến URL 59
TÓM TẮT 61
Trang 6IMỤC LỤC
II MỤC LỤC
BÀI TẬP 62
BÀI 6: MODEL – VIEW CONTROLLER 63 6.1 TÌM HIỂU VỀ CONTROLLER 63
6.2 TÌM HIỂU VỀ VIEW 65
6.3 TÌM HIỂU VỀ MODEL 67
6.4 CẤU TRÚC VIEWS\SHARE\SITE.MASTER 70 TÓM TẮT 72
BÀI TẬP 72
Trang 7III MỤC LỤC
IV HƯỚNG DẪN
BÀI 7: CẬP NHẬT DỮ LIỆU VỚI MVC
73 7.1 THÊM MỚI DỮ LIỆU TRONG MVC
73 7.1.1 Thêm các phương thức dữ liệu với mô hình dbml 73
7.1.2 Các hành động (action) tại các bộ điều khiển (controller) 74
7.2 SỬA ĐỔI DỮ LIỆU TRONG MVC
76 7.3 QUY TRÌNH KIỂM TRA TRONG ỨNG DỤNG MVC
81 7.3.1 Controller trong ứng dụng test 81
7.3.2 Kiểm thử kết quả trả về từ một controller 85
TÓM TẮT
87 BÀI TẬP
87 BÀI 8: THỰC HIỆN BẢO MẬT CHO ỨNG DỤNG ASP.NET MVC 88
8.1 AUTHENTICATION - XAC THƯC NGƯỜI DUNG 88
8.1.1 Tạo ngư i d ng mặc định với ứng dụng ASP.NET MVC 88
8.1.2 Quản l ngư i d ng với công cụ Website Administration 89
8.1.3 Roles - Ph n quyền nh m ngư i d ng 91
8.2 CẤU HÌNH VIỆC XÁC THƯC NGƯỜI DÙNG 93
TÓM TẮT
96 BÀI TẬP
97 LAP
98 TÀI LIỆU THAM KHẢO 204
Trang 8IIIMỤC LỤC
IV HƯỚNG DẪN
HƯỚNG DẪN
MÔ TẢ MÔN HỌC
Môn học trang bị các kiến thức nhập môn về lập trình web Nội dung bao gồm:
- Asp.net web form
- Model – View – Controller
- Bảo mật với Asp.net Membership
NỘI DUNG MÔN HỌC
Bài 1 Giới thiêu tổng quan về ASP.NET
Bài 2 Các lớp thư viện trong ASP.NET
Bài 3 Truy câp dữ liêu
Bài 4 jQuery
Bài 5 Tổng quan về ASP.NET MVC Framework
Bài 6 Model – View - Controller
Bài 7 Chỉnh sửa dữ liệu với MVC
Bài 8 Bảo mật với ASP.NET Membership
KIẾN THỨC TIỀN ĐỀ
Môn Lập trình web cần kiến thức tiền đề của các môn học sau
- Thiết kế web
Trang 9VHƯỚNG DẪN
- Lập trình hướng đối tượng
- Lập trình C# trên Windows
YÊU CẦU MÔN HỌC
Người học vận dụng được kiến thức nền tảng về lập trình web để có thể thiết kếcài đặt các ứng dụng web, như quản lý website, hệ quản trị nội dung, ứng dụngthương mại điện tử, các dịch vụ web
Kỹ năng lập trình, và phân tích thiết kế ứng dụng thành thạo
Người học cần đi học đầy đủ, đọc các nội dung sẽ được học trước khi đến lớp,làm các bài tập về nhà và đảm bảo thời gian tự học ở nhà
CÁCH TIẾP NHẬN NỘI DUNG MÔN HỌC
Để học tốt môn này, người học cần đọc trước các nội dung chưa được học trên lớp;tham gia đều đặn và tích cực trên lớp; hiểu các khái niệm, tính chất và ví dụ tại lớphọc Sau khi học xong, cần ôn lại bài đã học và làm các bài tập, câu trắc nghiệm Tìmđọc thêm các tài liệu khác liên quan đến bài học và làm thêm bài tập
PHƯƠNG PHÁP ĐÁNH GIÁ MÔN HỌC
Môn học được đánh giá gồm hai thành phần
Phần điểm quá trình chiếm 30%, hình thức và nội dung đánh giá điểm quá trình dogiảng quyết định và công bố cho người học đầu khóa học
Phần điểm cuối khóa chiếm 70%, hình thức là đồ án môn học cuối khóa
Trang 11BÀI 1: ASP.NET
BÀI 1: ASP.NET
Học xong bài này người học sẽ nắm được các nội dung sau:
- Hiểu được tổng quan về công nghệ ASP.NET, Khái niệm về ASP.NET.
- Biết được những tính năng mới của ASP.NET 3.5 so với ASP.NET 2.0.
- Biết cách tạo website trong Visual Studio 2008.
1.1 TỔNG QUAN ASP.NET
1.1.1 Giới thiệu
Trước hết, tên đầy đủ của ASP.NET là Active Server Pages NET (.NET ở đây là
.NET framework) Nói đơn giản thì ASP.NET là một công nghệ có tính cách mạng dùng
để phát triển các ứng dụng về mạng hiện nay cũng như trong tương lai ASP.NET là
một phương pháp tổ chức hay khung tổ chức (framework) để thiết lập các ứng dụng
mạnh cho mạng dựa trên CLR (Common Language Runtime).
1.1.2 ASP.NET tích hợp với Framework
.NET Framework được chia thành bộ các tác vụ cho từng chức năng gồm các lớp
(class), các cấu trúc (structures), các giao diện (interfaces) và các lõi (core) thành
phần chương trình Trước khi sử dụng thành phần nào ta phải hiểu cơ bản về chứcnăng, các tổ chức của nó Mỗi một trong hàng ngàn các tầng lớp được nhóm theo
trình tự logic, thứ bậc được gọi là một namespace Mỗi namespace cung cấp một
tính năng
1.1.3 Tính đa ngôn ngữ
Để xây dựng một ứng dụng web chúng ta không chỉ chọn một ngôn ngữ mà có thểchọn nhiều ngôn ngữ khác Điều quan trọng là các ngôn ngữ chúng ta chọn mã của
Trang 12dữ liệu và các sự kiện của đối tượng.
1.1.5 Biên dịch ASP.NET
Một ứng dụng ASP.NET luôn luôn được biên dịch, nó không chạy bằng mã của C#hoặc Visual Basic mà không được biên dịch trước Một ứng dụng ASP.NET thực sự được biên dịch thông qua 2 giai đoạn:
Trang 13Visual Basic hoặc ngôn ngữ
.NET khác) được dịch bởi
Microsoft Intermediate
Language (MSIL) Giai
đoạn dịch này được dịch tự
động khi trang wed đầu tiên
yêu cầu Chúng ta có thể
thực hiện dịch trước Các tập
tin được dịch thành mã IL
- Giai đoạn tiếp theo được dịch trước khi trang Web được thực thi Tại giai đoạn này
mã IL được dịch thành bản mã máy (Native Machine Code) Giai đoạn này được gọi
là Just-In-Time (JIT).
Trang 14Khía cạnh quan trọng nhất của công cụ ASP.NET là nó chạy trong môi trường thời
gian thực (Runtime) của CLR (Common Language Runtime) CLR là máy ảo (virtual
machine) trong Microsoft NET, do có ngôn ngữ trung gian IL nên khi phát triển ứng
dụng trên NET, chúng ta không bị phụ thuộc vào thiết bị, có nghĩa là theo Microsoftnói thì ứng dụng NET có thể chạy trên bất kỳ thiết bị nào có NET Framework Tất cảcác namespace, các ứng dụng, các lớp trong bộ NET Framework được gọi tắt là bộquản lý mã CLR cũng cung cấp các dịch vụ quan trọng khác như:
1.1.6 Dễ dàng triển khai và cấu hình
Mọi sự cài đặt NET Framework đều cung cấp các lớp như nhau Để triển khai ứngdụng ASP.NET chúng ta chỉ cần sao chép các tập tin vào thư mục ảo trên máy chủ(server) và máy chỉ chỉ cần có NET Framework
Việc cấu hình dễ dàng đơn giản không phụ thuộc vào IIS (Internet Information
Services) Cấu hình trong ASP.NET được đặt trong tập tin web.config Tập tin
web.config được để cùng với thư mực chứa trang web của chúng ta Tập tinweb.config không bao giờ bị khóa, chúng ta có thể truy cập bất kỳ lúc nào, việc sửatập tin này hoàn toàn dễ dạng vì chúng được lưu dưới dạng XML
1.2 TÍNH NĂNG MỚI TRONG ASP.NET
Microsoft phát hành ASP.NET vào ngày 19 tháng 11 năm 2007 cùng với VisualStutio 2008 Đây là bước tiến hóa từ ASP.NET 2.0 tới ASP.NET 3.5 Nếu chúng tađang sử dụng ASP.NET 2.0 để sử dụng ASP.NET 3.5 chỉ cần cài đặt thêm các tínhnăng mới của ASP.NET 3.5 Trong phần này ta sẽ giới thiệu một số tính năng mớitrong ASP.NET 3.5
Trang 151.2.1 Các công cụ điều khiển mới
Các công cụ (control) ListView và DataPager có thể dùng mới kiểu dữ liệu mới
LinqDataSource.
ListView linh hoạt hơn và có chứa toàn bộ tính năng của Gridview, Datagrid, Repeater trong ASP.NET 2.0 Nó cung cấp các khả năng và chèn, xóa, sửa, sắp xếp,
phân trang Chúng ta hoàn toàn định dạng được việc dữ liệu hiển thị trên ListView
mà không cần phải sử dụng thẻ <table> Các Template trong ListView rất phong phú và đa dạng Datager cung cấp cho ListView trong việc phân trang.
1.2.2 LINQ
LINQ (Language Integrated Query) cung cấp khả năng lập trình mới trong NET là
giải pháp lập trình hợp nhất, đem đến khả năng truy vấn dữ liệu theo cú pháp SQLtrực tiếp trong C# hay VB.NET, áp dụng cho tất cả các dạng dữ liệu từ đối tượng đến
Cơ sở dữ liệu quan hệ và XML
1.2.3 Các Assembly mới
- System.Core.dll: Các cài đặt cho LINQ to Objects
- System.Data.Linq.dll: Các cài đặt cho LINQ to SQL
- System.Xml.Linq.dll: Các cài đặt cho LINQ to XML
- System.Data.DataSetExtensions.dll
- Các hiện thực cho LINQ đến DataSet
- System.Web.Extensions.dll: Các cài đặt for ASP.NET AJAX
1.2.4 ASP.NET MVC (Model View Control)
Kiến trúc MVC là việc chia tất cả mục của một ứng dụng ra làm ba thành phần
(component) khác nhau Model, View và Controller:
- Model: Model được giao nhiệm vụ cung cấp dữ liệu cho cơ sở dữ liệu và lưu dữ liệu
vào các kho chứa dữ liệu Tất cả các nghiệp vụ logic được thực thi ở Model Dữ liệu
Trang 16vào từ người dùng sẽ thông qua View được kiểm tra ở Model trước khi lưu vào cơ
sở dữ liệu Việc truy xuất, xác nhận, và lưu dữ liệu là một phần của Model
- View: View hiển thị các thông tin cho người dùng của ứng dụng và được giao
nhiệm vụ cho việc nhận các dữ liệu vào từ người dùng, gửi đi các yêu cầu đến bộđiều khiển, sau đó là nhận lại các phản hồi từ bộ điều khiển và hiển kết quả chongười dùng Các trang HTML, JSP, các thư viện thể và các tập tin nguồn là mộtphần của thành phần View
- Controller: Controller là tầng trung gian giữa Model và View Controller được giao
nhiệm vụ nhận các yêu cầu từ phía máy khách Một yêu cầu được nhận từ máykhách được thực hiện bởi một chức năng logic thích hợp từ thành phần Model vàsau đó sinh ra các kết quả cho người dùng và được thành phần View hiển thị
1.3 TẠO TRANG WEB VỚI VISIUAL STUDIO
1.3.1 Tạo dự án mới
- Chúng ta kích hoạt ứng dụng Visual Studio (h1.2)
Hình 1.2: Tạo mới dự án
- Nếu chọn New Project xuất hiện hộp hội thoại New Project (h1.3)
- Trong Project Type:
Visual Basic → Web nếu chọn Visual Basic là ngôn ngữ viết ứng dụng
Trang 17 Visual C# → Web nếu chọn C# là ngôn ngữ viết ứng dụng.
- Trong Templates chọn ASP.NET Web Application,
- Trong Name đặt tên cho Project, tên do ta đặt
- Trong Location là thư mục chứa Project
Nếu chọn New Web Site xuất hiện hộp hội thoại New Project sau
- Trong Languge:
Visual Basic → Web nếu chọn Visual Basic là ngôn ngữ viết ứng dụng
Visual C# → Web nếu chọn C# là ngôn ngữ viết ứng dụng
- Trong Templates chọn ASP.NET Web Application
- Trong Location chọn tên và thư mực chứa Project
Hình 1.3: Chọn ứng dụng Web form application
Trang 181.3.2 Ví dụ
Hình 1.4: Tạo dự án dạng Web form
Ví dụ ta tạo một dự án có tên là ViDu1, đặt tại ổ đĩa D, chọn ngôn ngữ chọn là C# (h1.5) sau đó bấm OK Sau đó chúng ta được tập tin Default.aspx
Hình 1.5: ViDu1 project
Trong ví dụ đầu tiên này chúng ta soạn một đoạn mã sau trong Default.aspx:
Trang 19<% @ Page Language=“C#” AutoEventWireup=“true” CodeFile=“Default.aspx.cs”
1.4 CÁC SỰ KIỆN TRONG ASP.NET
Để thực hiện được đúng các sự kiện trong quá trình lập trình với ASP.Net, chúng ta cần tìm hiểu bảng ý nghĩa các tập tin như sau:
Bảng 1.1: Bảng ý nghĩa các tập tin
đoạn mã nguồn ứng dụng Đây là một trong những trang web đầutiên được bắt đầu khi người sử dụng duyệt web
gồm các cấu hình về an ninh, quản lý trạng thái, quản lý bộ nhớ
ứng với các sự kiện toàn cục
Trong đó:
- Phần giao diện của ứng dụng nằm trong ở các tập tin aspx và html
- Tất cả các tập tin mã nguồn (C#, VB.NET hoặc ngôn ngữ NET) sẽ được biên dịch
thành tập tin DLL và nằm trong thư mục /Bin.
Trang 201.4.1 Chu kỳ sống của trang web trong ASP.NET (Page Life Cycle)
Hình 1.6: Vòng đời của trang ASP.NET
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).
1.4.2 Một số sự kiện của trang web
Các sự kiện xử lý trong vòng đời của trang web được mô tả trong bảng sau:
Trang 21Bảng 1.2: Bảng sự kiện liên quan các diễn tiến của trang web
được sử lý Tạo mới hoặc tạo mới lại các Control động (DynamicControl) Thiết lập trang chủ (Master page), thuộc tính Theme Đọc
và thiết lập giá trị cho thuộc tính Profile
Init Làm nổi (Raised) sau khi các Control đã được khởi động và các
Skin đã được ứng dụng Chúng ta sử dụng sử kiện này để đọc hoặckhởi tạo các thuộc tính của Control
các kết nối với Cơ sở dữ liệu
khởi tạo hoàn thành
out)
Ví dụ sau đếm số người truy cập và số người online, trong đó ta cần chuẩn bị nội
dung tập tin Global.asax như sau:
Trang 22if (! File Exists( “D:\\Dem.txt” ))
File WriteAllText( “D:\\Dem.txt” , “0” );
Application[ “SNTruyCap” ] = int Parse( File ReadAllText( “D:\\Dem.txt” ));
Application[ “SNOnline” ] = ( int )Application[ “SNOnline” ] + 1;
Application[ “SNTruyCap” ] = ( int )Application[ “SNTruyCap” ] + 1;
File WriteAllText( “D:\\Dem.txt” , Application[ “SNTruyCap” ].ToString());
Trang 23BÀI 1: ASP.NET
TÓM TẮT
Chu kỳ sống của trang web trong ASP.NET: 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.
vào các kho chứa dữ liệu Tất cả các nghiệp vụ logic được thực thi ở Model Dữ liệu vào từ ngư i dùng sẽ thông qua View được kiểm tra ở Model trước khi lưu vào cơ
sở dữ liệu Việc truy xuất, xác nhận, và lưu dữ liệu là một phần của Model.
nhiệm vụ cho việc nhận các dữ liệu vào từ ngư i dùng, gửi đi các yêu cầu đến bộ điều khiển, sau đ là nhận lại các phản hồi từ bộ điều khiển và hiển kết quả cho ngư i d ng Các trang HTML, JSP, các thư viện thể và các tập tin nguồn là một phần của thành phần View.
nhiệm vụ nhận các yêu cầu từ phía máy khách Một yêu cầu được nhận từ máy khách được thực hiện bởi một chức năng logic thích hợp từ thành phần Model và sau đ sinh ra các kết quả cho ngư i d ng và được thành phần View hiển thị ActionServlet, Action, ActionForm và struts-config.xml là các phần của Controller.
Trang 24- Làm quen với môi trường Microsoft Visual Studio
- Xây dựng ứng dụng web đơn giản WebCalculator
Tạo Project WebApplication
Thiết kế giao diện WebForm
Viết mã lệnh xử lý đơn giản
Chạy, Debug và sửa lỗi chương trình
Câu 2: Môi trường Microsoft Visual Studio 2010 hoặc mới hơn
- Một số khái niệm cơ sở
Lưu mã nguồn trong tập tin riêng biệt (Yes? No?)
- Giao diện môi trường
Start Page
Option Dialog (Line number,…)
Toolbox
o Thêm control/tab vào toolbox (Bấm phải \ Add …)
o Kéo thả control vào Form
Trang 25 Xem màn hình design form: Shift-F7
Chuyển đổi từ Design sang Code và ngược lại: F7
Chạy chương trình: Ctrl-F5 (hoặc F5 với chế độ Debug)
Trang 26BÀI 2: CÁC LỚP SỬ DỤNG TRONG ASP.NET
BÀI 2: CÁC LỚP SỬ DỤNG TRONG
ASP.NET
Học xong bài này người học sẽ nắm được các nội dung sau
- Hiểu được các khái niệm về đối tượng Http Request, Http Response, Http Server, Session, Cookie.
- Biết vận dụng thành thạo những đối tượng này trong bài lập trình liên quan.
2.1 HTTP REQUEST
2.1.1 Giới thiệu
Request là một thể hiện của lớp HttpRequest Trình duyệt dùng đối tượng Request để gửi thông tin cần thiết tới Server.
Hình 2.1: Người dùng gởi yêu cầu đến server
Đố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ừ Client
Trang 27BÀI 2: CÁC LỚP SỬ DỤNG TRONG ASP.NET
2.1.2 Các thuộc tính
2.1.2.1 RequestType
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: var valMethode=Request.RequestType;
2.1.2.2 Tập hợp Form - Form collection
Form collection được 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.
- Lấy dữ liệu từ các phần tử của form:
Cú phá p: var VarName= Request.Form[“FieldName”];
Ví dụ: tại trang Default.aspx
< 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 >
Hình 2.2: Màn hình giao diện web
Tại trang CheckUser.aspx, ta lấy giá trị của UserName và Password trên form:
<b>UserName:</b>
<%=Request.Form[“txtUser”]%><br />
<b>Password</b>
<%=Request.Form[“txtPwd”]%>
Trang 28BÀI 2: CÁC LỚP SỬ DỤNG TRONG ASP.NET
- Count: trả về số phần tử của form chuyển từ client đến server
string varField, varName;
int num = Request.Form.Count;
for ( int i = 0; i < num; i++) {
Trang 29BÀI 2: CÁC LỚP SỬ DỤNG TRONG ASP.NET
varName));
} }
định nghĩa là chuỗi nằm sau dấu ? trong chuỗi URL (Uniform Resource Locator) trên
phần Address của trình duyệt
Có 3 cách truyền tham số và gọi tập tin xử lý
- Cách 1: dùng action , tham số truyền qua phần tử của form
< form method=““Get”“ action=““FileName.aspx”>
Các phần tử của form
</ form >
Trang 30- Cách 2: dùng action , tham số ghi sau dấu ?
< form method=“Get” action=“FileName.aspx?var1=value1&var2=value2”>
Các phần tử của form
</ form >
cách nhau bởi dấu &, giá trị của mỗi tham số đặt sau dấu =
Hình 2.3: Form đăng nhập tại Login.aspx
<% @ Page Language=“C#” AutoEventWireup=“true” CodeBehind=“Login.aspx.cs”
Trang 31< input type=“password” name=“txtPwd” />< br />
< input type=“submit” name=“btnLogin” value=“Login” />< br />
< asp : Label runat=“server” ID=“ResultTextBox”></ asp : Label >
string strUser = Request.QueryString[ “txtUser” ];
string strPws = Request.QueryString[ “txtPwd” ];
if (strUser == “admin” && strPws == “123” ){
ResultTextBox.Text = “Dang nhap thanh cong” ; }
else { ResultTextBox.Text = “Dang nhap khong thanh cong” ; }
} }
Trang 322.2.2 Các thuộc tính/phương thức
- Thuộc tính Bufer: có 2 giá trị true và false quy định cách truyền tải dữ liệu:
Cú phá p: Response.Bufer=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, kết quả
- End(): Kết thúc tiến trình xử lý trên Server và đẩy dữ liệu tới Client
- Flush(): Kết thúc tiến trình, quay lại thực hiện tiếp
- 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 Boolean=true thì khi thực hiện xong, lệnh Response sẽ thực hiện tiếp
Nếu Boolean =false thì khi thực hiện xong, lệnh Response sẽ dừng
- Write(“Data”): Ghi dữ liệu ra trang web
MachineName: tên server
ScriptTimeout: thiết lập thời gian xử lý tối đa 1 tập tin
Trang 33Ví dụ: Server.ScriptTimeout=100s //thiết lập thgian mặc định
- HtmlEncode(str): dùng để mã hoá HTML thành chuỗi
Cú
p há p : 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:
Ký tự < chuyển thành <
Ký tự > chuyển thành >
Ký tự & chuyển thành &
Dấu nháy đôi “ chuyển thành "
- HtmlDecode(strcontent):giải mã các thẻ HTML
Ví dụ: Str=“n>5”; Str=server.HtmlDecode(str); // kết quả n>5
- Transfer: 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: Tham số path là đường dẫn của tập tin ASP cần chuyển điều khiển.
- Phương thức URLEncode: Tương tự như phương thức HTMLEncode, phương thức
URLEcode dùng để mã hoá URL thành chuỗi
Cú
p h á p : Khi mã hoá chuỗi URL 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:
Ký tự khoảng trắng chuyển thành dấu +
Ký tự không thuộc ký tự chữ và số sẽ chuyển thành số hexadecimal.
2.4 SESSION VÀ COOKIE
2.4.1 Giới thiệu Cookie và Session
Điểm chung giữa Cookie và Session là việc lưu trữ và quản lý một số thông tin
liên quan đến người dùng website, những thông tin này cần dùng trên nhiều trangweb của cùng hệ thống website
Thông tin được lưu trữ với khoảng thời gian quy định trước, và có thể tự hủy khi
hết thời gian cho phép Cookie và Session thuận tiện cho việc gửi thông tin qua lại
Trang 34giữa các trang web mà không cần dùng qua phương thức POST/GET… giảm thiểu việcphát sinh thêm biến.
Ứng dụng thường thấy của Cookie và Session là lưu trữ thông tin đăng nhập của
người dùng, xác định thời điểm đăng nhập, thoát khỏi website … Kết hợp với thao tác
Redirect để có thể quản lý, chặn truy cập từ người dùng khi chưa đăng nhâp…
2.4.2 Cookie
2.4.2.1 Đặc điểm cookie
Cookie được lưu trữ trên trình duyệt, khi người dùng sử dụng trình duyệt truy cập
vào một website nào đó thì server sẽ gửi cookie về trình duyệt và lưu trữ trực tiếp
trên máy người dùng (client).
Cookie sẽ khác nhau cho mỗi loại trình duyệt, IP người dùng cũng như server củawebsite Cookie được tạo ra bởi website và gởi tới browser, do vậy 2 website khácnhau (cho dù cùng host trên 1 server) sẽ có 2 cookie khác nhau gởi tới trình duyệt Mỗi trình duyệt sẽ có cách quản lý và lưu trữ cookie theo cách riêng của mình, chonên 2 trình duyệt cùng truy cập vào 1 website sẽ nhận được 2 cookie khác nhau
Trong ASP.NET các phương thức, thuộc tính liên quan đến việc xử lý Cookie đượclưu trữ trong class HttpCookie Các thuộc tính thường dùng trong Cookie:
- Name: Tên Cookie.
- Domain: Tên miền của Cookie lưu trữ.
- Expires: Xác định thời gian hiệu lực của Cookie.
- Value: Giá trị của Cookie.
- HasKeys: Cho biết Cookie có tập giá trị con hay không.
- Values: Tập các giá trị của Cookie.
Mỗi lần có yêu cầu lên website, trình duyệt sẽ gửi cookie lên server, server sẽ có
cơ chế “đọc” cookie và xử lý cho tác vụ nào đó Mỗi cookie được website gửi đến trìnhduyệt thường bao gồm 3 thành phần chính sau:
- Địa chỉ URL của website mà trình duyệt nhận cookie
Trang 35- Thời gian tồn tại của Cookie
- Giá trị lưu trữ
2.4.2.2 Phương thức thao tác
- Ghi Cookie:
Cú phá p: Respone.Cookies[cookie][key|attribute]=value;
Trong đó, cookie là tên biến cookie, key là tham số mở rộng cho Cookie, attribute
là các thuộc tính của biến Cookie
- Đọc Cookie:
Cú phá p: value = Request.Cookies[cookie][key|attribute];
Thao tác trên Cookie có nhiều Subkey
- Xóa Cookie: Việc xóa Cookie thực chất là thao tác chỉnh thời gian hiệu lực về
trước thời điểm hiện tại so với giờ hệ thống
2.4.3 Session
2.4.3.1 Đặc điểm
Ta có thể chưa thực sự dùng cookie để lưu trữ Shoping Cart Một cookie vừa quánhỏ và quá đơn giản Để làm việc ngoài giới hạn của Cookie, ASP.NET Framework hỗ
trợ một chức năng mới được gọi là Session State Giống với Cookie, Session lưu
trữ dữ liệu trong phạm vi riêng với từng người sử dụng Nhưng không giống với
Cookie, Session không giới hạn dung lượng, nếu ta cần lưu trữ hàng Gigabyte dữ
liệu, hơn thế nữa Session có thể đưa ra điều đối tượng phức tạp hơn là chuỗi Text Ta
có thể lưu trữ một vài đối tượng trong Session Ví dụ ta có thể lưu trữ một Datasethay một Shoping Cart trong Session
2.4.3.2 Session trong ASP.Net
Trong ASP.NET cũng như các công nghệ lập trình web khác, Session được tạo rakhi Client bắt đầu có yêu cầu gửi tới Server và sẽ kết thúc khi Client có thao tác hủySession hoặc sau một thời gian (định trước) không có bất kỳ thao tác nào lên Server
Trang 36Khi Session được tạo đồng thời phương thức Session_OnStart() sẽ được thực thi
và tương tự khi kết thúc Session phương thức Session_OnEnd() sẽ được thực thi.
2.4.3.3 Một số phương thức thao tác trên session
- 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ại Server
Giá trị mặc định của Timeout là 20 Nếu không có yêu cầu nào kể từ lần yêu cầu cuối cùng sau 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
Những yêu cầu sau đó, webserver coi như là một người dùng mới, và sẽ cấp một đối tượng Session mới
Ví dụ: Thiết lập thời gian cho 1 phiên làm việc của user là 100 phút
- 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
- 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ọi thực hiện Những yêu cầu sau đó được Web servercoi như 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
- Cũng có thể dùng Session để lưu các biến giá trị như Cookie
Session[“nameVar”] = value;
Trang 37TÓM TẮT
Bài học này giới thiệu về các đối tượng làm việc thông dụng và quan trọng trong
kỹ thuật lập trình web là Request, Response, Cookie và Session.
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 Đố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.
Http Response được sử dụng để truyền dữ liệu webserver đến webBrowser
Đố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, …
Cookie được lưu trữ trên trình duyệt, khi ngư i d ng sử dụng trình duyệt truy cập vào một website nào đ thì server sẽ gửi cookie về trình duyệt và lưu trữ trực tiếp trên máy ngư i d ng (client) Cookie sẽ khác nhau cho mỗi loại trình duyệt, IP ngư i
d ng cũng như server của website Cookie được tạo ra bởi website và gởi tới browser,
do vậy 2 website khác nhau (cho d c ng host trên 1 server) sẽ c 2 cookie khác nhau gởi tới trình duyệt Mỗi trình duyệt sẽ c cách quản l và lưu trữ cookie theo cách riêng của mình, cho nên 2 trình duyệt c ng truy cập vào 1 website sẽ nhận được
2 cookie khác nhau.
Giống với Cookie, Session lưu trữ dữ liệu trong phạm vi riêng với từng ngư i sử dụng Nhưng không giống với Cookie, Session không giới hạn dung lượng, nếu ta cần lưu trữ hàng Gigabyte dữ liệu, hơn thế nữa Session c thể đưa ra điều đối tượng phức tạp hơn là chuỗi Text Ta c thể lưu trữ một vài đối tượng trong Session Session được tạo ra khi Client bắt đầu c Requset gửi tới Server và sẽ kết thúc khi Client c thao tác hủy Session hoặc sau một th i gian (định trước) không c bất kỳ thao tác nào lên Server.
Trang 38BÀI TẬP
Bài thực hành này ta sẽ sử dụng Visual Studio để thiết kế web với các trang nhậpliệu, truyền tham số giữa các trang và hiển thị thông tin chi tiết, ta có thể thực hiệncác công việc này theo các bước sau:
Tạo WebForm, đặt tên là DVDCatalog.aspx với giao diện thiết kế như sau:
Trong cửa sổ Solution Explorer, ta bấm chuột phải lên file DVDCatalog.aspx, chọnView Code Trong sự kiện Form_Load ta hãy viết lệnh sau:
Ta bấm đúp vào nút Reset để thực hiện viết mã lệnh như sau:
Ta viết sự kiện cho nút Submit và bấm đúp vào nút Submit để thực hiện lệnh:
Trang 39Ta tạo mới một Web Form và đặt tên là Bill.aspx Trong cửa sổ Solution
Explorer, ta bấm chuột phải lên file Bill.aspx, chọn View Code Trong sự
kiện Page_Load ta viết mã lệnh sau:
Trong cửa sổ Solution Explorer, bấm chuột phải lên file DVDCatalog.aspx, chọnView in Browser Ta điền đầy đủ các thông tin và bấm nút Submit và xem kết quả
Trang 4028 BÀI 3: TRUY CẬP DỮ LIỆU BÀI 3: TRUY CẬP DỮ LIỆU 28
BÀI 3: TRUY CẬP DỮ LIỆU
Học xong bài này người học sẽ nắm được các nội dung sau:
- Khái niệm về và ADO.NET, SqlDatasource, LinqDataSource, Linq và phương pháp làm việc của từng đối tượng.
- Biết vận dụng thành thạo những đối tượng này trong bài lập trình liên quan.
3.1 TỔNG QUAN
Phần lớn các ứng dụng hiện nay đều sử dụng cơ sở dữ liệu Có nhiều cách thức
truy cập dữ liệu khác nhau trong các công nghệ của Microsoft như ADO, RDO, DAO,
ODBC Tuy nhiên từ khi NET Framework ra đời thì công nghệ ADO.NET đã được tích
hợp, ADO.NET chứa các lớp cho phép các ứng dụng kết nối với các nguồn dữ liệu
(connect data sources), thực hiện các lệnh (execute commands), quản lý dữ liệu đã ngắt kết nối (manage disconnected data) Với ADO.NET, người lập trình có thể viết ít
mã lệnh thao tác cơ sở dữ liệu hơn so với các công nghệ trước trong các ứng dụngclient-server hoặc các ứng dụng trên desktop
Mặt khác, trong ASP.NET từ phiên bản NET Framework 2.0 trở lên có thêm các thao
tác với cơ sở dữ liệu mà không sử dụng ADO.NET như SqlDataSource, LINQ hoặc
Profiles.
Ngoài ra các ứng dụng truy cập dữ liệu của NET Framework còn có thể truy nhập
vào các nguồn dữ liệu ngoài như tập tin, Stream, XML, Ajax, web services, WCF, data