Đi lại là nhu cầu không thể thiếu trong cuộc sống hằng ngày, hiện nay đi lại chúng ta có thể sử dụng nhiều loại phương tiện khác nhau như xe khách, tàu lửa, máy bay,... Khi đi lại ta thường gặp các khó khăn: Thứ nhất là việc mua vé, trả vé và thay đổi tuyến đi. Thứ hai là tình trạng như mua vé nhưng không được ngồi đúng chỗ, tình trạng xe dù, chèo kéo thêm khách dọc đường, tài xế chạy không đúng quy định hay là thu tiền cao hơn so với giá mà bến xe đã đưa ra ...Vì vậy mà trong thời đại công nghiệp hóa, hiện đại hóa đất nước việc quản lý bến xe là một vấn đề cấp thiết và đáng quan tâm. Hiện nay một số bến xe và nhà xe đang còn quản lý theo kiểu truyền thống tức là khách hàng phải đến tận công ty để mua hoặc hủy hoặc thay đổi lịch trình của mình và việc quản lý nhân sự, tuyến mang tính thủ công, như vậy sẽ rất lãng phí thời gian và tiền bạc. Với sự phát triển ngày càng cao của mạng Internet thì ứng dụng công nghệ thông tin vào việc quản lý các bến xe là một nhu cầu tất yếu và thiết thực trong cuộc sống hằng ngày.Bên cạnh việc quản lý bến xe thì việc mua bán vé cũng là vấn đề quan trọng. Với sự phát triển ngày càng mạnh của xu hướng mua bán qua mạng Internet. Phát triển đặt vé qua mạng sẽ có nhiều thuận lợi cho khách hàng như họ không cần đến công ty nhưng vẫn có thể đặt mua và trả vé theo nhu cầu của mình.Song song với các yêu cầu ngoài thực tế thì ngày nay các công nghệ của ngành công nghệ thông tin phát triển một cách nhanh chóng, ứng dụng các công nghệ này vào bài toán cụ thể là rất quan trọng và cần thiết đối với người lập trình. Với các lý do trên em quyết định chọn đề tài: “Tìm Hiểu Linq và Quản Lý Bán Vé Xe” trong khóa luận của mình. Bố cục của khóa luận được chia thành 3 chương:Chương 1: Tìm hiểu LINQ chương này trình bày tổng quan về LINQ, ưu nhược điểm, cú pháp của LINQ và so sánh với các công nghệ khác.Chương 2: Các công cụ hỗ trợ để thiết kế web chương này giới thiệu một số khái niệm và làm quen với Javascript, Ajax, Ajaxtoolkit, Jquery, Captcha.Chương 3: Phân tích thiết kế và cài đặt bài toán quản lý bán vé xe chương này trình bày về các vấn đề khảo sát, đặc tả, phân tích, và thiết kế hệ thống.
Trang 1CHƯƠNG 1 TỔNG QUAN VỀ LINQ 6
1.1 TÌM HIỂU LINQ 6
1.1.1 Giới thiệu về linq 6
1.1.2 Các loại linq 7
1.1.3 So sánh Linq và các công cụ khác 8
1.1.4 Cú pháp của linq to sql 12
CHƯƠNG 2 CÁC CÔNG CỤ HỖ TRỢ ĐỂ THIẾT KẾ WEB 19
2.1 JAVASCRIPT 19
2.1.1 Làm quen với Javascript 19
2.1.2 Các thành phần chính 19
2.1.3 Quản lý lỗi 24
2.1.4 Phạm vi ảnh hưởng của lỗi 25
2.2 AJAX 25
2.3 AJAXTOOLKIT 26
2.4 JQUERY 28
2.4.1 Tự host Jquery 30
2.4.2 Dùng phiên bản có sẵn trên server của Google 30
2.4.3 Cách sử dụng jquery 30
2.5 CAPTCHA 32
2.5.1 Đặc điểm 33
2.5.2 Nguồn gốc 33
2.5.3 Ứng dụng 34
2.5.4 Ứng dụng captcha trong ASP.Net 34
CHƯƠNG 3 PHÂN TÍCH, THIẾT KẾ VÀ CÀI ĐẶT BÀI TOÁN QUẢN LÝ BÁN VÉ XE 36
3.1 KHẢO SÁT HIỆN TRẠNG VÀ ĐẶC TẢ HỆ THỐNG 36
3.1.1 Mục tiêu của hệ thống thông tin 36
3.1.2 Đặc tả các yêu cầu của hệ thống 37
3.2 PHÂN TÍCH HỆ THỐNG 39
3.2.1 Xác định các ca sử dụng của hệ thống 39
Trang 23.2.2 Xác định các gói ca sử dụng, lược đồ ca sử dụng chi tiết 40
3.3 THIẾT KẾ HỆ THỐNG 45
3.3.1 Thiết kế ca sử dụng “Đăng nhập hệ thống” 45
3.3.2 Thiết kế ca sử dụng “Đổi mật khẩu” 47
3.3.3 Thiết kế ca sử dụng “Quản lý lịch trình” 49
3.3.4 Quản lý đặt vé 51
3.3.5 Thiết kế cơ sở dữ liệu 53
3.4 CÀI ĐẶT 61
Trang 3PHỤ LỤC HÌNH ẢN
Hình 1.1 Cơ sở dữ liệu 12
Hình 3.1 Lược đồ ca sử dụng tổng quát 40
Hình 3.2 Quản lý đăng nhập 41
Hình 3.3 Quản lý danh mục phương tiện 42
Hình 3.4 Quản lý khách hàng 43
Hình 3.5 Quản lý bán vé 44
Hình 3.6 Quản lý thống kê - báo cáo 44
Hình 3.7 Uc đăng nhập 45
Hình 3.8 Biểu đồ hoạt động đăng nhập 47
Hình 3.9 Uc đổi mật khẩu 47
Hình 3.10 Biểu đồ hoạt động đổi mật khẩu 49
Hình 3.11 Uc quản lý lịch trình 49
Hình 3.12 Biểu đồ hoạt động quản lý lịch trình 51
Hình 3.13 Uc đặt vé 51
Hình 3.14 Biểu đồ hoạt động quản lý đặt vé 52
Hình 3.15 Mô hình E-R Loại tài khoản và Tài khoản 53
Hình 3.16 Bảng cơ sở dữ liệu Loại tài khoản và Tài khoản 53
Hình 3.17 Mô hình E-R Bán vé và Trả vé 54
Hình 3.18 Bảng cơ sở dữ liệu Bán vé và Trả vé 54
Hình 3.19 Mô hình E-R Bến và Tuyến 55
Hình 3.20 Bảng cơ sở dữ liệu Bến và Tuyến 55
Hình 3.21 Mô hình E-R Xe và Đơn vị vận tải 56
Hình 3.22 Bảng cơ sở dữ liệu Xe và Đơn vị vận tải 56
Hình 3.23 Mô hình E-R Xe và Loại xe 57
Hình 3.24 Bảng cơ sở dữ liệu Xe và Loại xe 57
Hình 3.25 Mô hình E-R Xe, Tuyến, Tài xế và Bán vé 58
Hình 3.26 Bảng cơ sở dữ liệu Xe, Tuyến, Tài xế và Bán vé 59
Hình 3.27 Bảng cơ sở dữ liệu tổng quát 60
Trang 4KÝ HIỆU VÀ VIẾT TẮT
Ado.net (ActiveX Data Objects - là công nghệ cho phép các ứng dụng có
thể kết nối và làm việc với các loại cơ sở dữ liệu khác nhau
CAPTCHA Completely Automated Public Turing test to tell Computers and
Humans Apart - Phép thử Turing công cộng hoàn toàn tự động
để phân biệt máy tính với người
CLR Common Language Runtime - môi trường thời gian chạy
CSS Cascading Style Sheet - bảng kiểu xếp chồng
DBA database administrator - người quản trị cơ sở dữ liệu
DOM XML API Document Object Model eXtensible Markup Language
-Application Programming Interface: Mô hình đối tượng tài liệu.HTML HyperText Markup Language - Ngôn ngữ đánh dấu siêu văn bản.Jquery Jquery chính là một thư viện kiểu mới của Javascript giúp đơn
giản hóa cách viết Javascript và tăng tốc độ xử lý các sự kiệntrên trang web
Linq Language Integrated Query - ngôn ngữ tích hợp truy vấn
MSDN Microsoft Software Developer Network
O/ RM Object Relational Mapping
OCR Optical Character Recognition -Nhận dạng ký tự quang học.Sql Structure Query Language - Ngôn ngữ truy vấn cấu trúc
Xml eXtensible Markup Language - Ngôn ngữ đánh dấu mở rộng
Trang 5LỜI NÓI ĐẦU
Đi lại là nhu cầu không thể thiếu trong cuộc sống hằng ngày, hiện nay đi lạichúng ta có thể sử dụng nhiều loại phương tiện khác nhau như xe khách, tàu lửa, máybay, Khi đi lại ta thường gặp các khó khăn: Thứ nhất là việc mua vé, trả vé và thayđổi tuyến đi Thứ hai là tình trạng như mua vé nhưng không được ngồi đúng chỗ, tìnhtrạng xe dù, chèo kéo thêm khách dọc đường, tài xế chạy không đúng quy định hay làthu tiền cao hơn so với giá mà bến xe đã đưa ra
Vì vậy mà trong thời đại công nghiệp hóa, hiện đại hóa đất nước việc quản lýbến xe là một vấn đề cấp thiết và đáng quan tâm Hiện nay một số bến xe và nhà xeđang còn quản lý theo kiểu truyền thống tức là khách hàng phải đến tận công ty đểmua hoặc hủy hoặc thay đổi lịch trình của mình và việc quản lý nhân sự, tuyến mangtính thủ công, như vậy sẽ rất lãng phí thời gian và tiền bạc Với sự phát triển ngày càngcao của mạng Internet thì ứng dụng công nghệ thông tin vào việc quản lý các bến xe làmột nhu cầu tất yếu và thiết thực trong cuộc sống hằng ngày
Bên cạnh việc quản lý bến xe thì việc mua bán vé cũng là vấn đề quan trọng.Với sự phát triển ngày càng mạnh của xu hướng mua bán qua mạng Internet Phát triểnđặt vé qua mạng sẽ có nhiều thuận lợi cho khách hàng như họ không cần đến công tynhưng vẫn có thể đặt mua và trả vé theo nhu cầu của mình
Song song với các yêu cầu ngoài thực tế thì ngày nay các công nghệ của ngànhcông nghệ thông tin phát triển một cách nhanh chóng, ứng dụng các công nghệ nàyvào bài toán cụ thể là rất quan trọng và cần thiết đối với người lập trình Với các lý dotrên em quyết định chọn đề tài: “Tìm Hiểu Linq và Quản Lý Bán Vé Xe” trong khóaluận của mình
Bố cục của khóa luận được chia thành 3 chương:
Chương 1: Tìm hiểu LINQ chương này trình bày tổng quan về LINQ, ưu nhượcđiểm, cú pháp của LINQ và so sánh với các công nghệ khác
Chương 2: Các công cụ hỗ trợ để thiết kế web chương này giới thiệu một sốkhái niệm và làm quen với Javascript, Ajax, Ajaxtoolkit, Jquery, Captcha
Chương 3: Phân tích thiết kế và cài đặt bài toán quản lý bán vé xe chương nàytrình bày về các vấn đề khảo sát, đặc tả, phân tích, và thiết kế hệ thống
Trang 6CHƯƠNG 1 TỔNG QUAN VỀ LINQ
1.1 TÌM HIỂU LINQ
1.1.1 Giới thiệu về linq
a Sự ra đời của linq
Đã lâu lắm rồi, hơn 2 thập niên, ngành công nghiệp phần mềm mới chứng kiếnmột cuộc đổi thay mang tính bước ngoặc về mặt ngôn ngữ Đó chính là LINQ, mộtcuộc cách tân khá táo bạo LINQ mang hơi hướng của một ngôn ngữ lập trình khônghướng đối tượng Bản chất của LINQ chính là thống nhất sự khác biệt giữa hai môhình: Đối tượng và dữ liệu Bên Java có Hibernate thì LINQ cũng tương tự như vậy,
nó đưa ra khả năng lập trình mới trong NET kiểu truy vấn: Sql database, Objects vàXml (eXtensible Markup Language - ngôn ngữ đánh dấu mở rộng) - Giải pháp lậptrình hợp nhất, đem đến khả năng truy vấn dữ liệu theo cú pháp SQL(Structure QueryLanguage - ngôn ngữ truy vấn cấu trúc) trực tiếp trong C# hay Visual Basic.NET, ápdụ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 Xử
lý thông tin hay dữ liệu là nhiệm vụ quan trọng nhất của bất kỳ phần mềm nào và mộttrong những trở ngại chính mà các nhà phát triển hiện nay phải đối mặt là khác biệtgiữa ngôn ngữ lập trình hướng đối tượng và ngôn ngữ truy vấn dữ liệu, vấn đề càngphức tạp hơn với sự xuất hiện của XML Hiện tại, cách phổ biến nhất để ứng dụng lấy
dữ liệu từ các hệ cơ sở dữ liệu là sử dụng SQL
Để giảm gánh nặng thao tác trên nhiều ngôn ngữ khác nhau và cải thiện năng suấtlập trình, Microsoft đã phát triển giải pháp tích hợp dữ liệu cho NET Framework cótên gọi là LINQ (Language Integrated Query), do Anders Hejlsberg xây dựng, thườngđược gọi Microsoft Linq Đây là thư viện mở rộng cho các ngôn ngữ lập trình C# vàVisual Basic.NET (có thể mở rộng cho các ngôn ngữ khác) cung cấp khả năng truyvấn trực tiếp dữ liệu Object, cơ sở dữ liệu và XML Truy vấn dữ liệu đối tượng trong
bộ nhớ dữ liệu cần phải đổ vào bộ nhớ để xử lý, nhưng một khi tách khỏi nơi gốc của
nó thì khả năng truy vấn rất kém Chúng ta có thể dễ dàng truy vấn thông tin kháchhàng móc nối với thông tin đơn hàng của họ từ cơ sở dữ liệu SQL Server nhưng không
dễ gì thực hiện tương tự với thông tin trong bộ nhớ Trong môi trường NET, thông tin
Trang 7(trong bộ nhớ) thường được thể hiện ở dạng các đối tượng và trước LINQ, không cócách nào để móc nối các đối tượng hay thực hiện bất kỳ thao tác truy vấn nào LINQchính là giải pháp cho vấn đề này Với Microsoft NET platform, ngôn ngữ hỗ trợchính đó chính là C# và Visual Basic.NET Những người lập trình viên họ thường gặprắc rối và cảm thấy khó chịu với việc truy cập dữ liệu ở những nguồn khác nhau Đặcbiệt là hai loại dữ liệu XML và cơ sở dữ liệu Các vấn đề về truy xuất dữ liệu như sau: Chúng ta không lập trình tương tác với cơ sở dữ liệu tại cấp độ dữ liệu cục bộ Vìthế lỗi thường khó phát hiện rõ Khó khăn trong việc quản lý lỗi xảy ra.
Kiểu dữ liệu khác nhau trong mỗi nguồn dữ liệu ở XML và cơ sở dữ liệu Đặcbiệt date và time Chính các nhà phát triển ở Microsoft đưa ra 1 nền tảng mới trongviệc truy vấn dữ liệu với các nguồn khác nhau (Object, XML, cơ sở dữ liệu) Đó làLINQ, đây là công nghệ hỗ trợ cơ chế truy vấn dữ liệu ở tất cả các kiểu Những kiểunày bao gồm mảng(List, Vector), XML, cơ sở dữ liệu và hơn thế nữa Kết quả trả vềcủa LINQ người ta gọi là sequence Hầu hết sequence là IEnumerable<T> với T làkiểu dữ liệu của những đối tượng trong sequence LINQ sẽ cung cấp cách duy nhất đểtruy cập dữ liệu từ bất kể nguồn dữ liệu nào với cú pháp giống nhau
1.1.2 Các loại linq
a Linq to sql
Là một phiên bản hiện thực hóa của O/ RM (Object Relational Mapping) có bêntrong NET Framework 3.5, cho phép mô hình hóa một số cơ sở dữ liệu dùng cáclớp NET Sau đó chúng ta có thể truy vấn cơ sở dữ liệu dùng LINQ, cũng như cậpnhật / thêm/ xóa dữ liệu từ đó
LINQ to SQL hỗ trợ đầy đủ transaction (giao dịch), view (khung nhìn) và cácstored procedure (thủ tục lưu trữ) Nó cũng cung cấp một cách dễ dàng để thêm khảnăng kiểm tra tính hợp lệ của dữ liệu và các quy tắc vào trong mô hình dữ liệu
Trang 8b Linq to xml
XML là một ngôn ngữ được ứng dụng rất nhiều trong lập trình, xử lý dữ liệu cũngnhư truyền tải thông tin Trước đây việc thao tác và tạo ra các tài liệu XML thông quaDOM XML API trong Net rất dài dòng và rắc rối Vì thế để khắc phục điều này,Microsoft đã cho ra đời LINQ cùng với LINQ to XML API
c Linq to Objects
“LINQ to Objects” ở đây có nghĩa là nói đến cách sử dụng LINQ đối với các đốitượng Collection mà đã được thực thi giao diện IEnumerable hoặc IEnumerable<T>tức những collection có thể “liệt kê” ra được Đây là trường hợp sử dụng đơn giản nhấtcủa LINQ khi làm việc với dữ liệu Các kiểu Collection có sẵn trong NET nhưList<T>, Array, Dictionary<TKey, TValue>, … đều có thể sử dụng được với LINQ vàchúng ta hoàn toàn có thể tạo những kiểu Collection có thể làm việc được với LINQ
Về mặt hình thức, LINQ là một cách thể hiện của các vòng lặp for, foreach Nhưng
về thực tế LINQ đem lại nhiều lợi ích hơn: Cách viết dễ dàng cho việc đọc và phântích Trường hợp này sẽ được thể hiện rõ ràng khi chúng ta cần lọc những dữ liệu vớinhiều điều kiện phân cấp nhau thì LINQ sẽ thể hiện rõ tính ưu việt của mình; LINQcũng cung cấp những bộ lọc, sắp xếp thứ tự, nhóm dữ liệu với khối lượng code tốithiểu nhưng vẫn bảo đảm tính rõ ràng như ở trên; Trong trường hợp chúng ta cầnchuyển dữ liệu từ nguồn dữ liệu này sang nguồn dữ liệu khác, thì LINQ sẽ giảm thiểu
sự thay đổi của dữ liệu trong quá trình di chuyển
1.1.3 So sánh Linq và các công cụ khác
a Linq và ado.net
LINQ là tập mở rộng cho phép viết các câu truy vấn ngay trong các ngôn ngữ lậptrình Nó cho phép chúng ta làm việc với các kiểu tập hợp dữ liệu, như XML,collection, array,… và cả cơ sở dữ liệu
ADO.NET là công nghệ cho phép các ứng dụng có thể kết nối và làm việc với cácloại cơ sở dữ liệu khác nhau (truy vấn, cập nhật, thêm, xóa, gọi thủ tục…)
Bản thân LINQ không phải là một công nghệ được tạo ra để thay thế ADO.NET,chúng ta có thể làm việc với LINQ mà không dính gì đến cơ sở dữ liệu Tuy nhiên,LINQ to SQL, là một phần mở rộng của LINQ, cho phép chúng ta có thể làm việcđược với cơ sở dữ liệu SQL Server, trong trường hợp này thì khi viết chúng ta có thể
Trang 9bỏ qua các câu lệnh ADO.NET mà chỉ quan tâm tới cú pháp mà LINQ cung cấp.
Ta không hề dùng đến ADO.NET khi viết chương trình sử dụng LINQ to SQL,nhưng đằng sau nó, ADO.NET vẫn được dùng để thực hiện kết nối, gửi các câu lệnh,các lời gọi thủ tục…
b Linq với sql
SQL chỉ được dùng để truy vấn dữ liệu trong các cơ sở dữ liệu dạng quan hệ, nếumuốn truy cập các dạng dữ liệu khác như HTML, XML v.v… thì đây là điều không thểđối với SQL và có thể đối với LINQ Do đó có thể nói đây là một ưu điểm khác củaLINQ mà SQL không có
Ưu điểm của LINQ
Nói về quy luật cơ bản trong lập trình là dữ liệu phải nằm trong bộ nhớ chính Do
đó khi cần dữ liệu chúng ta phải dùng cách nào đó để đưa dữ liệu vào bộ nhớ (đọc filevăn bản, truy vấn từ database …) Trong môi trường NET, dữ liệu trong bộ nhớthường được thể hiện ở dạng các đối tượng và trước LINQ, chúng ta không có cáchnào để móc nối các đối tượng hay thực hiện bất kỳ thao tác truy vấn nào LINQ chính
là giải pháp cho vấn đề này
Trước đây, cách phổ biến nhất để ứng dụng lấy dữ liệu từ các hệ cơ sở dữ liệu là
sử dụng SQL SQL có cú pháp rất khác với những ngôn ngữ lập trình phổ dụng nhưC# và Visual Basic.NET, do vậy chúng ta phải tốn công “hàn gắn” hai thực thể khácbiệt này với nhau trong mỗi dự án phần mềm LINQ ra đời để giảm gánh nặng thao tác
“hàn gắn” trên nhiều ngôn ngữ khác nhau
Một vấn đề khác với SQL là nó chỉ dùng để truy vấn dữ liệu trong các cơ sở dữliệu dạng quan hệ Nếu muốn truy cập dữ liệu XML hay dạng khác (như trang HTML,email…), chúng ta lại phải sử dụng cú pháp truy vấn khác Cách giải quyết vấn đề tốtnhất hiện nay là LINQ
Về vấn đề “Error” chúng ta không lập trình tương tác với cơ sở dữ liệu tại cấp độnative language Vì thế lỗi thường khó phát hiện rõ Khó khăn trong việc quản lý lỗixảy ra
Về vấn đề cú pháp truy vấn thì trước khi có LINQ chúng ta chưa có 1 cú phápchung nào cho truy vấn dữ liệu từ những nguồn khác nhau Với LINQ nó sẽ cung cấpcách duy nhất để truy cập dữ liệu từ bất kể nguồn dữ liệu nào với cú pháp giống nhau
Trang 10Ngoài ra cách viết dễ dàng cho việc đọc và phân tích Trường hợp này sẽ được thể hiện
rõ ràng khi chúng ta cần lọc những dữ liệu với nhiều điều kiện phân cấp khác nhau thìLINQ sẽ thể hiện rõ tính ưu việt của mình LINQ cũng cung cấp những bộ lọc, sắp xếpthứ tự, nhóm dữ liệu với khối lượng code tối thiểu nhưng vẫn bảo đảm tính rõ ràng
c LINQ to SQL và Entity Framework
LINQ to SQL và Entity Framework có rất nhiều điểm chung, nhưng mỗi côngnghệ có những đặc tính riêng nhắm đến những trường hợp khác nhau trong Orcas (bản
VS 2008)
LINQ to SQL có các đặc tính hướng đến việc phát triển nhanh ứng dụng với cơ sở
dữ liệu Microsoft SQL Server LINQ to SQL cho phép chúng ta có một cái nhìn chặtchẽ về kiểu với cấu trúc của cơ sở dữ liệu LINQ to SQL hỗ trợ việc ánh xạ 1-1 trựctiếp cấu trúc dữ liệu của chúng ta vào các lớp; một bảng đơn có thể được ánh xạ vàomột cấu trúc phân cấp và các khóa ngoài có thể ánh xạ thành các quan hệ strongly-typed Chúng ta có thể thực hiện truy vấn trên các các bảng, các view hay thậm chí cáckết quả dạng bảng trả về bởi một function thông qua các phương thức Một trongnhững mục tiêu thiết kế chính của LINQ to SQL là nhằm làm cho nó có thể dùng đượcngay đối với những trường hợp thông thường; vậy nên, ví dụ chúng ta truy cập một tậpcác order thông qua thuộc tính Orders của một customer, và các order của customer đóchưa được đọc vào, LINQ to SQL sẽ tự động đọc vào từ cơ sở dữ liệu cho chúng ta.LINQ to SQL dựa trên những quy ước cho trước, chúng ta có thể dựa trên các quy ướcnày để tùy biến, chẳng hạn như thay đổi các thao tác mặc nhiên cho việc insert, update
và bằng cách tạo ra những câu lệnh thao tác với cơ sở dữ liệu Các phương thức này cóthể gọi các thủ tục trong cơ sở dữ liệu hay thực hiện thêm các thao tác để xử lý cácthay đổi
Entity Framework có các đặc tính nhắm đến các ứng dụng doanh nghiệp Trongmột doanh nghiệp, một cơ sở dữ liệu thông thường được kiểm soát bởi DBA (ngườiquản trị cơ sở dữ liệu), cấu trúc của cơ sở dữ liệu thông thường được tối ưu cho việclưu trữ (hiệu năng, tính toàn vẹn, phân hoạch) hơn là cho một mô hình ứng dụng tốt,
và có thể thay đổi qua thời gian khi dữ liệu và việc sử dụng phát triển lên Với ý tưởngnày, Entity Framework được thiết kế xung quanh việc xây dựng một mô hình dữ liệuhướng tới ứng dụng, ít phụ thuộc, thậm chí có thể khác một chút so với cấu trúc cơ sở
Trang 11dữ liệu thực sự Ví dụ: chúng ta có thể ánh xạ một lớp đơn (hay “thực thể”) và nhiềutable/view, hay ánh xạ nhiều lớp vào cùng một table/view Chúng ta có thể ánh xạ vàomột cấu trúc phân cấp vào một table/view đơn (như trong LINQ to SQL) hay vàonhiều table/view (ví dụ: person, customer, employee có thể nằm trong các bảng riêngbiệt vì customer và employee chỉ chứa thêm một số thông tin không có trong person,hoặc lặp lại các cột từ bảng person) Chúng ta có thể nhóm các thuộc tính vào các kiểuphức hợp (“complex” hay “composite”), ví dụ một kiểu Customer có thể có thuộc tính
“Address” với kiểu Address có các thuộc tính Street, City, Region, Country và Postal).Entity Framework cũng cho phép chúng ta biểu diễn quan hệ nhiều-nhiều một cáchtrực tiếp, mà không cần tới bảng kết nối như một thực thể trong mô hình dữ liệu và cómột đặc tính mới được gọi là “Defining Query”, có thể được dùng cho việc biểu diễnmột bảng ảo với dữ liệu lấy từ một câu truy vấn (ngoài trừ việc cập nhật phải thôngqua một stored procedure) Khả năng ánh xạ mềm dẻo này, bao gồm tùy chọn dùng cácstored procedure để xử lý các thay đổi, có thể được thực hiện chỉ bằng cách khai báo,hoặc chỉnh sửa lại khi yêu cầu thay đổi, mà không cần phải biên dịch lại ứng dụng.Entity Framework bao gồm LINQ to Entities đưa ra nhiều tính năng giống vớiLINQ to SQL trên mô hình ứng dụng ở mức khái niệm; chúng ta có thể xây dựng cáccâu truy vấn trong LINQ (hay trong “entity SQL”, một phiên bản mở rộng của SQL để
hỗ trợ các khái niệm như strong-typing, đa hình, kiểu phức hợp…) trả về kết quả ởdạng các đối tượng CLR (Common Language Runtime - môi trường thời gian chạy),thực thi các thủ tục hay các hàm trả về kiểu bảng thông qua các phương thức, và chophép gọi một phương thức để lưu lại các thay đổi
Tuy nhiên, Entity Framwork còn hơn cả LINQ to Entities; nó bao gồm một lớp lưutrữ cho phép chúng ta dùng cùng mô hình ứng dụng mức khái niệm thông qua giaodiện ADO.NET ở mức thấp dùng Entity SQL và trả lại kết quả một cách hiệu quả nhờcác DataReader, giảm thiểu tải khi dùng trong các ngữ cảnh chỉ có đọc và không cócác xử lý thêm
Vậy nên, trong khi có nhiều phần bị trùng lắp, LINQ to SQL được nhắm đến việcphát triển nhanh ứng dụng cùng SQL Server, còn Entity Framework cung cấp các lớptruy xuất đối tượng và lưu trữ dữ liệu cho Microsoft SQL Server cũng như các cơ sở
dữ liệu khác thông qua khả năng ánh xạ mềm dẻo và ít phụ thuộc vào cấu trúc của cơ
Trang 12sở dữ liệu.
1.1.4 Cú pháp của linq to sql
Để dễ dàng thể hiện cú pháp của linq to sql, giả sử đã có CSDL:
QuanLy_BenXePhiaNam gồm hai bảng có quan hệ:
tblBanVe
maBan thoiDiemBan daTraTien nguoiXacNhan maLichTrinh soTien soLuongVe nguoiMua mailQuaHan daNhanVe
tblBen
tblDonViVanTai
tblLichTrinh
maLichTrinh soXe maTuyen thoiDiemDi moTa hoatDong maTaiXe
tblLoaiTaiKhoan tblLoaiXe
tblTaiKhoan
tblTraVe tblTuyen
tlbXe
Hình 1.1.4.a.1 1 Cơ sở dữ liệu
Khi tạo ra lớp DataContext chứa hai bảng ở trên thì C# tự động tạo ra chuỗi kếtnối đến cơ sở dữ liệu (CSDL), chuỗi kết nối lưu trong file web.config Do đó, khi thayđổi các thông tin như tên máy chủ, user name, password thì ta có thể sửa ở file này:
<connectionStrings>
<add name="QuanLyConnectionString" connectionString="Data Source
=.\sqlexpress;Initial Catalog=QuanLy_BenXePhiaNam;Persist Security Info=True;User ID=sa;Password=123"
providerName="System.Data.SqlClient" />
</connectionStrings>
Khi tạo ra file DataContext thì C# sẽ tự động tạo ra lớp <tên file> + DataContexttrong lớp này có:
• 5 hàm dựng để người dùng tùy biến kết nối đến CSDL
• Cứ mỗi bảng tham gia vào DataContext thì sẽ có:
- Một thuộc tính có tên <tên bảng> + s hoặc es để lấy tất cả dữ liệu của bảng nàyvề
Trang 13- Một lớp có tên là tên bảng với số lượng trường của bảng và của lớp giống nhau,
có bao nhiêu trường sẽ tạo ra bấy nhiêu thuộc tính
Ví dụ: Bảng tblLichTrinh tham gia vào DataContext thì C# sẽ tự động phát sinhlớp tblLichTrinh bao gồm các thuộc tính và trường như sau:
public System.Data.Linq.Table<tblLichTrinh> tblLichTrinhs
{
get{
return this.GetTable<tblLichTrinh>();
}}
public partial class tblLichTrinh: INotifyPropertyChanging, INotifyPropertyChanged
{
private long _maLichTrinh;
private string _soXe;
private System.Nullable<long> _maTuyen;
private System.Nullable<System.DateTime>
_thoiDiemDi;
private string _moTa;
private System.Nullable<bool> _hoatDong;
private System.Nullable<long> _maTaiXe;
public long maLichTrinh
{
get{
return this._maLichTrinh;
}set{
if ((this._maLichTrinh != value)) {
this.OnmaLichTrinhChanging(value);
this.SendPropertyChanging();
this._maLichTrinh = value;
this.SendPropertyChanged("maLichTrinh");this.OnmaLichTrinhChanged();
}}}
public string soXe
{
get{
return this._soXe;
}set{
if ((this._soXe != value))
Trang 14}
public System.Nullable<long> maTuyen
{
get{
return this._maTuyen;
}set{
if ((this._maTuyen != value)){
this.OnmaTuyenChanging(value);
this.SendPropertyChanging();
this._maTuyen = value;
this.SendPropertyChanged("maTuyen");this.OnmaTuyenChanged();
}}
}
public System.Nullable<System.DateTime> thoiDiemDi
{
get{
return this._thoiDiemDi;
}set{
if ((this._thoiDiemDi != value)){
this.OnthoiDiemDiChanging(value);this.SendPropertyChanging();
this._thoiDiemDi = value;
this.SendPropertyChanged("thoiDiemDi");
this.OnthoiDiemDiChanged();
}}
}
public string moTa
{
get{
return this._moTa;
}
Trang 15if ((this._moTa != value)){
}
public System.Nullable<bool> hoatDong
{
get{
return this._hoatDong;
}set{
if ((this._hoatDong != value)){
}public System.Nullable<long> maTaiXe
{
get{
return this._maTaiXe;
}set{
if ((this._maTaiXe != value)){
this.OnmaTaiXeChanging(value);
this.SendPropertyChanging();
this._maTaiXe = value;
this.SendPropertyChanged("maTaiXe");this.OnmaTaiXeChanged();
}}
}}
Để thao tác trên CSDL thì bước đầu tiên ta cần kết nối đến CSDL, để làm điều này tachỉ cần tạo ra một thể hiện của lớp dbDataContext:
Trang 16dbDataContext db=new dbDataContext();
Khi đó hàm dựng đầu tiên của lớp dbDataContext sẽ thực hiện và nó kết nối đếnCSDL Sau đó, ta sử dụng câu lệnh LINQ để truy xuất dữ liệu Để dễ dàng thể hiện cúpháp của LINQ ta sử dụng câu lệnh SQL sau đó đổi sang câu lệnh LINQ như sau:
- Lệnh Select
• Trong sql: SELECT * FROM tblBanVe
• Trong linq: var q=from p in db.tblBanVes select p;
Trong đó p, q là biến do người lập trình tạo, db.tblBanVes lấy về toàn bộ dữ liệucủa bảng tblBanVe
- Lệnh Take
• Trong sql: SELECT TOP (2) * FROM tblBanVe
• Trong linq: var q=(from p in db.tblBanVes select p).Take(2);
Trang 17on banve.maLichTrinh equals lichtrinh.maLichTrinh
SELECT daTraTien, SUM(soTien) AS 'TongTien'
FROM tblBanVe GROUP BY daTraTien
Trang 18• Trong sql ta xây dựng thủ tục lưu trữ: xoaQuaHan
• Trong Linq ta sử dụng thủ tục lưu trữ như 1 hàm: db.xoaQuaHan();
• Sử dụng View trong LINQ giống như sử dụng một bảng thông thường
Trang 19CHƯƠNG 2 CÁC CÔNG CỤ HỖ TRỢ ĐỂ THIẾT
KẾ WEB
2.1 JAVASCRIPT
2.1.1 Làm quen với Javascript
JavaScript, theo phiên bản hiện hành, là một ngôn ngữ lập trình kịch bản dựa trênđối tượng được phát triển từ các ý niệm nguyên mẫu Ngôn ngữ này được dùng rộngrãi cho các trang web, nhưng cũng được dùng để tạo khả năng viết script sử dụng cácđối tượng nằm sẵn trong các ứng dụng Giống Java, JavaScript có cú pháp tương tự C,nhưng nó gần với Self hơn Java .js là phần mở rộng thường được dùng cho tập tin mãnguồn JavaScript
Trên thực tế, hai ngôn ngữ lập trình Java và JavaScript không có liên quan gì đếnnhau, ngoại trừ việc cú pháp của cả hai ngôn ngữ cùng được phát triển dựa trên cúpháp của C Java Script gồm 2 mảng là client-server thực hiện lệnh trên máy của end-user và web-server
JavaScript là một ngôn ngữ lập trình dựa trên nguyên mẫu với cú pháp phát triển
từ C Giống như C, JavaScript có khái niệm từ khóa, do đó, JavaScript gần như khôngthể được mở rộng
Cũng giống như C, JavaScript không có bộ xử lý xuất/nhập (input/output) riêng.Trong khi C sử dụng thư viện xuất/nhập chuẩn, JavaScript dựa vào phần mềm ngônngữ được gắn vào để thực hiện xuất/nhập
Trên trình duyệt, rất nhiều trang web sử dụng JavaScript để thiết kế trang webđộng và một số hiệu ứng hình ảnh thông qua DOM JavaScript được dùng để thực hiệnmột số tác vụ không thể thực hiện được với chỉ HTML như kiểm tra thông tin nhậpvào, tự động thay đổi hình ảnh
Bên ngoài trình duyệt, JavaScript có thể được sử dụng trong tập tin PDF củaAdobe Acrobat và Adobe Reader
2.1.2 Các thành phần chính
a Khoảng trắng
Dấu cách, tab và ký tự dòng mới sử dụng bên ngoài một chuỗi ký tự được gọi là
Trang 20khoảng trắng Khác với C, khoảng trắng trong JavaScript có thể ảnh hưởng trực tiếptới ý nghĩa của câu lệnh Sử dụng phương pháp "tự động thêm dấu chấm phẩy", bất cứmột dòng JavaScript nào thích hợp sẽ được coi là một câu lệnh hợp lệ (giống như códấu chấm phẩy trước ký tự dòng mới)
b Chú giải
Cú pháp chú giải của JavaScript giống với C++ Lập trình viên có thể chú giải trênnhiều dòng bằng cách bao bọc chú giải với /* và */ hoặc sử dụng // để chú giải từ vịtrí // đến hết dòng
Kiểu của JavaScript được chia ra làm hai loại: Kiểu cơ bản và đối tượng
Đối tượng trong JavaScript là một thực thể có tên xác định và có thuộc tính trỏ đếngiá trị, hàm hoặc cũng có thể là một đối tượng khác Có nghĩa là, đối tượng trongJavaScript là một mảng kết hợp (associative array) tương tự như mảng trong PHP hay
từ điển trong Python, PostScript hoặc Smalltalk
e Cấu trúc dữ liệu
Một cấu trúc dữ liệu tiêu điểm là mảng (Array), mảng trong JavaScript là mộtbảng liên kết chỉ mục đến giá trị Trong JavaScript, tất cả các đối tượng đều có thể liênkết chỉ mục đến giá trị, nhưng mảng là một đối tượng đặc biệt có thêm nhiều tính năng
xử lý chỉ mục và dữ liệu đặc biệt
f Cấu trúc điều khiển if, while, for giống như cú pháp của java
• Rẽ nhánh theo điều kiện với if else
Cú pháp:
<script language="JavaScript">
Trang 21Khối lệnh cần lặp;
}
</script>
Trang 23Các kiểu cơ bản sẽ được chuyển vào hàm theo giá trị, đối tượng sẽ được chuyểnvào hàm theo tham chiếu.
Hàm là đối tượng hạng nhất trong JavaScript Tất cả các hàm là đối tượng củanguyên mẫu Function Hàm có thể được tạo và dùng trong phép toán gán như bất kỳmột đối tượng nào khác, và cũng có thể được dùng làm đối số cho các hàm khác Do
đó, JavaScript hỗ trợ hàm cấp độ cao Ví dụ:
<script language="JavaScript">
Array.prototype.fold =
function (value, functor) {
var result = value;
for (var i = 0; i < this.length; i++) {
result = functor(result, this[i]);
Đoạn mã nguồn trên sẽ trả lại kết quả là 55
Vì hàm trong JavaScript là đối tượng, lập trình viên có thể khởi tạo hàm khôngtên:
Trang 242.1.3 Quản lý lỗi
Tùy theo môi trường phát triển, sửa lỗi JavaScript có thể sẽ rất khó khăn VớiJavaScript dùng trên trang web, hiện tại, các trình duyệt dựa trên Gecko (như Mozilla,Mozilla Firefox) có công cụ tìm diệt lỗi rất tốt (Venkman), ngoài ra còn kèm theo mộtcông cụ kiểm tra DOM
Các phiên bản của JavaScript (từ Internet Explorer 5 và Netscape 6 trở lên) hỗ trợmệnh đề quản lý lỗi try catch finally, mệnh đề này bắt nguồn từ Java giúp lậptrình viên quản lý lỗi thời gian chạy hoặc quản lý ngoại lệ xuất phát từ cú pháp throw
Cú pháp của mệnh đề này như sau:
Trang 25Trong cú pháp trên error là một đối tượng Error có hai thuộc tính theo chuẩnECMAScript phiên bản 3:
* error["message"]: Thông điệp diễn giải lỗi
* error["name"]: Tên lỗi
Tuy nhiên mỗi trình duyệt sử dụng một bản JavaScript khác nhau, trong các trìnhduyệt lớn và phổ dụng không có trình duyệt nào hoàn toàn tuân thủ theo chuẩnECMAScript phien bản 3 Ví dụ như Internet Explorer 6 SP 1 có thêm hai thuộc tính:
* error["number"]: Bí số của lỗi
* error["description"]: Thông điệp diễn giải lỗi
Còn Mozilla Firefox 1.07 có thêm ba thuộc tính:
* error["fileName"]: Tên tập tin xảy ra lỗi
* error["lineNumber"]: Dòng xảy ra lỗi
* error["stack"]: Cả hai thuộc tính trên gộp lại trong một chuỗi ký tự
Phần finally là không bắt buộc Lập trình viên hoàn toàn có thể sử dụng try catch mà không có finally
2.1.4 Phạm vi ảnh hưởng của lỗi
Các ngôn ngữ lập trình kịch bản rất dễ bị ảnh hưởng bởi lỗi, hơn nữa, mỗi mộttrình duyệt, mỗi một website ứng dụng JavaScript một cách hoàn toàn khác nhau nênlập trình viên JavaScript thường phải dành rất nhiều thời gian sửa lỗi để đảm bảo đoạn
mã nguồn của mình sẽ hoạt động tốt Trong những trang HTML mà thẻ script và cácđoạn mã HTML khác xen kẽ lẫn nhau, lỗi cú pháp có thể được phát hiện dễ dàng hơnbằng cách để mỗi hàm trong một thẻ script riêng biệt hoặc có thể sử dụng nhiều tệp jskhác nhau Trong nhiều trường hợp, cách này còn giúp tránh làm hỏng cả trang webtrong trường hợp có lỗi trong một đoạn mã nguồn
Trang 26tượng XMLHttpRequest trao đổi dữ liệu không đồng bộ với máy chủ web, còn XML
là định dạng chủ yếu cho truyền dữ liệu và Javacript có nhiệm vụ lắp ráp chúng lại vớinhau
Một trong những lý do khiến sự phổ biến của AJAX ngày càng tăng là ngôn ngữkịch bản dùng trong JavaScrip của nó Ngôn ngữ này cho phép tạo các form động chohoạt động kiểm tra lỗi tích hợp sẵn, tạo ra các vùng tính toán trên trang web, tương tácvới người dùng thông qua cảnh báo và kiểm chứng thông tin, có thể thay đổi thườngxuyên chương trình nền và màu sắc văn bản hay “các nút”, đọc URL lịch sử và đưa rahành động dựa trên danh sách đó, mở ra và điều khiển các cửa sổ, cung cấp văn bảnhoặc các phần trong văn bản khác theo yêu cầu người dùng
Trước đây, nếu muốn đọc email chúng ta phải qua một loạt cú kích chuột và gửitruy vấn một loạt các khung tạo nên giao diện hiển thị nhiều email người dùng khácnhau Điều này thực sự làm giảm đáng kể tốc độ truy cập và sử dụng ứng dụng web.Với truyền tải không đồng bộ, ứng dụng AJAX hoàn toàn loại bỏ được thao tác “chạy-dừng-chạy” rất khó chịu vốn tồn tại tự nhiên trong tương tác trên web Yêu cầu gửi tớiserver bây giờ hoàn toàn rõ ràng và dễ hiểu với người dùng
Rõ ràng điểm khác biệt là thay phải tải cả trang web thì với AJAX chúng ta chỉcần tải về phần của trang web mà chúng ta muốn thay đổi Điều này giúp cho ứngdụng web của chúng ta phản hồi nhanh hơn, thông minh hơn Ngoài ra, điểm đặc biệtquan trọng trong công nghệ AJAX nằm ở chữ A (Asynchronous) - bất đồng bộ - tức làchúng ta cứ gửi yêu cầu của mình tới server và quay lại với công việc mà không cầnchờ trả lời Khi nào server xử lý xong yêu cầu của chúng ta, nó sẽ báo hiệu và chúng ta
có thể “bắt lấy ” để thể hiện những thay đổi cần thiết
Thông thường một ứng dụng AJAX cần có hai thanh phần: tạm gọi là front-end vàback-end Front-end dùng để gửi các XMLHttpRequest và thể hiện các thay đổi, cònback-end để xử lý các request và trả lại kết quả cho front-end
2.3 AJAXTOOLKIT
Ajax Server Extensions bao gồm một số server control và các dịch vụ, có thể được
sử dụng để thiết kế và phát triển ứng dụng web tốt hơn, thời gian truyền tải dữ liệu tốthơn
Để sử dụng Ajax Server Extensions chúng ta cần cài đặt:
Trang 27• Microsoft Visual Studio 2005 trở lên.
• Microsoft ASP NET Ajax Server Extensions
ASP.NET Ajax Server Controls bao gồm:
- Để sử dụng ScriptManager control kéo nó từ Ajax extensions trong thanh công
cụ vào trang web
- Trước khi sử dụng bất kỳ một AJAX CONTROL nào chúng ta đều phải thêmScriptManager vào trước
b UpdatePanel
- Điều khiển UpdatePanel cho phép chúng ta tải lại một phần của trang WEB
- Bên trong điều khiển UpdatePanel có 2 tag con là: <ContentTemplate> và
• Thuộc tính UpdateMode: Có 2 giá trị “Always”(mặc định) và
“Conditional” Nếu đặt UpdateMode là Conditional, thì khi UpdatePanel đótải lại thì tất cả các UpdatePanel khác trong trang web cũng sẽ bị tải lại
• Các sự kiện của UpdatePanel: Init, Load, PreRender, Unload
- Tag <Triggers>: Một trigger là một sự kiện làm cho UpdatePanel được tải lại
Sự kiện đó có thể được sinh ra bởi mọi thẻ trong form Có 2 loại trigger:
Trang 28• AsyncPostBackTrigger – Tải lại một cách không đồng bộ.
• PostBackTrigger – Tải lại bình thường
• Mặc định UpdatePanel sẽ chiếm quyền điều khiển sự kiện của controlchứa trong nó, và khi có một sự kiện xảy ra UpdatePanel thực hiện tải lạiPanel
• Chúng ta cũng có thể thực hiện tải lại UpdatePanel bởi các control bênngoài bằng AsyncPostBackTrigger
- Interval chỉ định khoảng thời gian mà Timer control thực hiện tải lại
- Timer control sẽ kích hoạt sự kiện Tick khi đến thời gian
2.4 JQUERY
Jquery là một thư viện JavaScript, tức là nó viết bằng mã JavaScript và được đónggói thành 1 file *.js Jquery luôn có khẩu hiệu "write less, do more" (viết ít, làm nhiều)
để nói lên tính tối ưu trong cách code
Thư viện Jquery chứa các tiện ích sau:
Trang 29• Jquery có các hàm giúp chúng ta định dạng trang web, thay đổi nội dungcác thành phần trong trang web.
• Jquery giúp chúng ta tạo nhiều hiệu ứng như mờ dần, chạy dọc chạy ngangv.v
• Jquery hỗ trợ tạo các request ngầm (Ajax), nhờ đó mà chúng ta có thể tải vềclient dữ liệu mà không cần nạp lại toàn bộ trang web…
• Jquery cho phép tạo ra các Plugin Vì thế cộng đồng sử dụng Jquery đã tạo
ra nhiều plugin rất hay
• Mỗi trình duyệt hiện thực trang web có phần khác nhau, cho nên để trangweb hiển thị tốt trên mọi trình duyệt là vấn đề khá mệt mỏi của người thiết
kế Đôi khi phải viết nhiều phần code phức tạp để đảm bảo trang web đượchiển thị giống nhau giữa các trình duyệt Jquery giúp chúng ta thêm một lớpbảo vệ cho sự khác biệt này
• Jquery luôn làm việc với Set (tập hợp các đối tượng cho 1 đặc điểm chungnào đó)
• Jquery trở nên phổ biến là do cách sử dụng đơn giản và bên cạnh đó còn cómột cộng đồng sử dụng mạnh mẽ vẫn ngày ngày phát triển thêm Plugin vàhoàn thiện những tính năng trọng tâm của Jquery
Jquery ra đời với mục đích chuẩn hóa cách viết javascript của người phát triển
Để thêm thư viện Jquery, chúng ta cũng thêm giống như thêm 1 file JavaScript vàotrang web như sau:
Bởi vì Jquery là một thư viện JavaScript do vậy để sử dụng nó chúng ta phải chèn
nó vào trang web thì mới có thể sử dụng được Có hai cách để chèn Jquery vào mộttrang web đó là tự host Jquery hoặc dùng phiên bản có sẵn trên server của google
Trang 302.4.1 Tự host Jquery
Vào trang chủ của Jquery và download phiên bản mới nhất Thường thì có 2 phiênbản của Jquery cho chúng ta download Phiên bản chưa nén dành cho những ngườiphát triển và đang học Còn phiên bản nén kia dành cho phần sử dụng trực tiếp trêntrang vì nó có dung lượng nhỏ hơn rất nhiều so với phiên bản chưa nén Chúng takhông cần phải cài đặt Jquery, chúng ta chỉ cần đặt đường link tới thư viện đó là được.Bất cứ khi nào chúng ta cần sử dụng Jquery, chúng ta chỉ cần gọi nó trong tài liệuHTML đến nơi lưu trữ nó trên host của chúng ta
2.4.2 Dùng phiên bản có sẵn trên server của Google
Ngoài cách trên ra chúng ta cũng có thể sử dụng phiên bản nén của Jquery có sẵntrên server của Google Sử dụng cách này có hai ưu điểm:
• Tiết kiệm băng thông cho trang web của chúng ta
• Jquery sẽ được load nhanh hơn nếu máy của người dùng đã cache Jquery.Tuy nhiên trong phần sắp tới chúng ta sẽ sử dụng phiên bản có sẵn trên server củaGoogle mà không cần phải download về máy Cú pháp để chèn Jquery sử dụng file cósẵn trên server của Google như sau:
<script src="http://ajax.googleapis.com/ajax/libs/Jquery/1.4.2/Jquery.min.js"type="text/javascript"></script>
• $ là kí hiệu đặc biệt, xác định đây là câu lệnh Jquery
• Action là hàm sẽ tác động lên các phần tử được chọn (click, change…)
• Query là câu truy vấn, chọn phần tử trong trang HTML Jquery có nhiềucách để giúp chúng ta chọn phần tử trong trang
Trang 31$("p#tieude") Chọn tất cả các tag có id là "tieude"
$(this) Diễn tả phần tử hiện hành
$(".tensp") Chọn các phần tử có class là tensp
$("#left") Chọn phần tử có tên là left
c Attribute Selectors
Chọn các phần tử với các thuộc tính cho trước
$("[href]") Chọn tất cả các phần tử có thuộc tính href
$("[href='#']") Chọn tất cả các phần tử với href ="#" _cke_saved_href ="#"_cke_saved_href ="#"
$("[href!='#']") Chọn tất cả các phần tử với chuỗi href khác “#”
$("[src$='.jpg']") Chọn tất cả các phần tử mà src chứa ".jpg"
d Hiệu ứng trong Jquery
Jquery giúp chúng ta tạo các hiệu ứng như Hide, Show, Toggle, Slide, Fade Cúpháp như sau:
$(selector).hide(speed): Ẩn phần tử
$(selector).toggle(speed): Ẩn hiện phần tử
$(selector).fadeIn(speed): Mờ dần
$(selector).fadeOut(speed): Hiện dần
$(selector).fadeTo(speed, opacity): Độ trong suốt(opacity)
speed có thể là "slow", "fast", "normal", hoặc số milli giây
e Sự kiện trong Jquery
Dưới đây là một số hàm xử lý sự kiện phổ biến, hay dùng trong Jquery
$(document).ready(function): Sự kiện trang web nạp xong
$(selector).click(function): Nhắp vào phần tử được chọn
$(selector).dblclick(function): Nhắp đúp phần tử được chọn
$(selector).focus(function): Phần tử được chọn có focus
$(selector).mouseover(function): Đưa chuột vào phần tử được chọn
$(selector).mouseout(function): Đưa chuột ra khỏi phần tử được chọn
$(selector).change(function): Chuyển giá trị của phần tử được chọn
$(selector).blur(function): Phần tử được chọn mất focus