Đặt vấn đề về ý nghĩa, tính cấp thiết và tính thực thi của đề tài. Chƣơng 1: Tổng quan về Json và ứng dụng Trong chương này sẽ trình bày một cách khái quát về định dạng trao đổi dữ liệu JSON như cấu trúc của dữ liệu dạng JSON, quá trình gửi và nhận dữ liệu dạng JSON giữa máy chủ và máy khách và ứng dụng của JSON. Chƣơng 2: Tổng quan kiến trúc hệ quản trị cơ sở dữ liệu MySQL Trong chương này sẽ trình bày một cách khái quát và chi tiết nhất về lịch sử hình thành và kiến trúc của hệ quản trị CSDL MySQL. Chƣơng 3: Mở rộng truy vấn chuyển đổi dữ liệu sang dạng json.
Trong chương này sẽ trình bày các cách khác nhau để thêm mới một hàm vào máy chủ MySQL. Tập trung tìm hiểu cách viết và thêm mới một hàm do người dùng định nghĩa (UDF) vào MySQL từ đó ứng dụng vào xây dựng hàm UDF để chuyển đổi dữ liệu truy vấn sang dạng JSON. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 11 CHƢƠNG 1: TỔNG QUAN VỀ JSON VÀ ỨNG DỤNG 1.1 Khái niệm về JSON JSON (JavaScript Object Notation) là một định dạng trao đổi dữ liệu. Nó gần giống như một tập hợp con của cú pháp JavaScript, mặc dù nó không phải là một tập hợp con nghiêm ngặt.
Nó rất hữu ích khi viết bất kỳ loại ứng dụng dựa trên JavaScript, bao gồm cả các trang web và phần mở rộng trình duyệt. Ví dụ chúng ta có thể lưu trữ thông tin người dùng trong định dạng JSON trong một Cookie hoặc có thể lưu trữ các phần mở rộng trong chuỗi giá trị JSON mà trình duyệt tham khảo tới. JSON có khả năng biểu diễn cho dữ liệu số, các phép toán, chuỗi, giá trị null, mảng và các đối tượng. Nó không biểu diễn cho dữ liệu phức tạp như hàm, biểu thức thông thường, dữ liệu dạng ngày tháng.
Như vậy các đối tượng ngày theo mặc định được sắp xếp như là một chuỗi có chứa các ngày trong định dạng ISO. Trong khi XML (được định nghĩa trong đặc tả kỹ thuật XML 1.0 tại W3C) là một biểu diễn phổ biến để trao đổi thông điệp giữa máy chủ và máy khách. JSON cũng được sử dụng với mục đích này và cho hiệu quả tượng tự như XML. Một trong những lý do để chấp nhận JSON là ở chỗ các đối tượng JSON dễ dàng được thao tác hơn bằng cách sử dụng các ngôn ngữ kịch bản như JavaScript, PHP, hoặc Ruby.2 Cấu trúc của Json JSON được xây dựng trên 2 cấu trúc phổ biến sau: Cấu trúc 1: Là tập hợp của các cặp tên và giá trị (name-value).
Trong những ngôn ngữ khác nhau đây thường là một đối tượng (object), bản ghi (record), cấu trúc (struct), từ điển(dictionary), bảng băm (hash table), danh sách khoá (keyed list) hay mảng liên hợp. Ví dụ: “firstName” : “John”. Cấu trúc 2: Là một tập hợp các giá trị đã được sắp xếp. Trong hầu hết các ngôn ngữ nó có thể là một mảng, véctơ, tập hợp.
Cấu trúc là tập hợp của các cặp tên và giá trị Đây là một cấu trúc dữ liệu phổ dụng. Hầu như tất cả các ngôn ngữ lập trình hiện đại đều hỗ trợ chúng trong một hình thức nào đó. Chúng tạo nên ý nghĩa của một định dạng hoán vị dữ liệu với các ngôn ngữ lập trình cũng đã được cơ sở hoá trên cấu trúc này. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 12 Một đối tượng là một hỗn độn của các cặp tên và giá trị.
Một đối tượng bắt đầu bởi dấu ngoặc đơn trái { và kết thúc với dấu ngoặc đơn phải }. Từng tên được theo sau bởi dấu hai chấm : và các cặp tên/giá trị được tách ra bởi dấu phẩy.1: Cấu trúc của JSON1 Ví dụ: { "firstName":"John" , "lastName":"Doe" } Điều này tương đương với câu lệnh gán trong javascript như sau: firstName = "John" lastName = "Doe" Một mảng là một tập hợp các giá trị đã được sắp xếp. Một mảng bắt đầu bởi dấu mở ngoặc vuông [ và kết thúc với dấu ngoặc vuông phải ]. Các giá trị được cách nhau bởi dấu phẩy.2 Kiểu dữ liệu mảng của json2 Giá trị có thể là một số, một chuỗi hay kiểu dữ liệu đúng sai, giá trị cũng có thể là một mảng hay một đối tượng những cấu trúc này có thể lồng vào nhau.
Ví dụ : { "employees": [ { "firstName":"John" , "lastName":"Doe" }, { "firstName":"Anna" , "lastName":"Smith" }, { "firstName":"Peter" , "lastName":"Jones" } ] } 1,2 Nguồn:http://json.org/ LUAN VAN CHAT LUONG download : add luanvanchat@agmail.3 Các kiểu dữ liệu của các phần tử trong mảng3 Một chuỗi(String) là một tập hợp của không hay nhiều ký tự Unicode, được đặt trong dấu trích dẫn kép ("). Một chuỗi trong JSON rất giống như là chuỗi trong ngôn ngữ lập trình C và Java.4 Dữ liệu kiểu ký tự trong json4 Kiểu số rất giống với kiểu số trong ngôn ngữ lập trình C và Java trừ định dạng bát phân và hex là không thể dùng. 3,4,5 Nguồn:http://json.org/ LUAN VAN CHAT LUONG download : add luanvanchat@agmail.5 Dữ liệu kiểu số trong Json5 1.3 So sánh JSON và XML Cả hai JSON và XML có thể được sử dụng để biểu diễn dữ liệu tự nhiên, các đối tượng trong bộ nhớ, đoạn văn bản, định dạng trao đổi dữ liệu. Hơn nữa định dạng trao đổi giữa liệu của JSON và XML là tương đương.
Ví dụ khi gọi một dịch vụ web truy cập công cộng của Yahoo chúng ta có thể xác định chuỗi tham số được biểu diễn bằng XML hoặc JSON. Vì vậy khi quyết định theo một định dạng trao đổi dữ liệu nó không phải là một vấn đề đơn giản tuy nhiên dựa vào những đặc trưng của ứng dụng cụ thể mà đưa ra sự lựa chọn tốt nhất. JSON có kiểu dữ liệu giống như ngôn ngữ lập trình và có cấu trúc do đó dễ dàng hơn trong việc ánh xạ với những dữ liệu trao đổi có cấu trúc.1 chỉ ra những điểm khác nhau giữa JSON và XML Nội dung so sánh XML JSON Kiểu dữ liệu (Data Không cung cấp kiểu dữ liệu người Cung cấp các kiểu dữ type) ta phải dựa vào lược đồ XML để xác liệu đơn giản cũng như định kiểu dữ liệu kiểu dữ liệu có cấu trúc. Hỗ trợ mảng Mảng được thể hiện qua các qui tắc Hỗ trợ ví dụ sử dụng một phần tử bên ngoài và nội dung của mảng là các phần tử bên trong thông thường tên phần tử bên ngoài sử dụng số nhiều của tên các yếu tố bên trong Hỗ trợ kiểu đối tượng Đối tượng được thể hiện thông qua Hỗ trợ các qui ước, thường sử dụng thông LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 15 qua thuộc tính của các phần tử Hỗ trợ giá trị Null Cần phải sử dụng xsi:nil trên phần tử Hỗ trợ trong XML Chú thích Hỗ trợ Không hỗ trợ Không gian tên Hỗ trợ, loại bỏ nguy cơ xung đột khi Không có khái niệm (Namespaces) kết hợp các tài liệu lại với nhau.
Namespaces Không gian tên cũng cho phép tài liệu XML chuẩn có thể được mở rộng một cách an toàn. Định dạng Phức tạp. Cần phải có sự cố gắng lớn Đơn giản. Cung cấp để lập các tài liệu XML với các phần trực tiếp cách chuyển tử và thuộc tính.
đổi cho các ứng dụng Kích cỡ Tài liệu XML có xu hướng kéo dài Cú pháp ngắn gọn, các kích thước trường định dạng được hầu hết dữ liệu nó biểu diễn Phân tích cú pháp Cần sử dụng XML Dom và các ứng Không cần ứng dụng trong Javascript dụng khác để chuyển đổi sang khác để chuyển đổi Javascript sang javascript chỉ cần sử dụng hàm eval trong Javascript Bảng 1.1 So sánh JSON và XML 1.4 Phân tích JSON JSON chỉ là một chuỗi văn bản và không phải là một đối tượng nó cần được chuyển đổi sang một đối tượng trước khi làm cho nó trở lên hữu ích. Việc phân tích cú pháp có thể được thực hiện với hàm Eval() trong javascript và nó an toàn hơn khi sử dụng một chương trình phân tích cú pháp khác. Chúng ta có thể tải về các phân tích cú pháp JSON bằng JavaScript tại địa chỉ http://www. Tệp tin này bao gồm các hàm cho phép chúng ta tận dụng lợi thế của các đối tượng JSON trong đó có 2 phương thức sau rất hữu ích trong việc phân tích cú pháp của JSON JSON.parse(strJSON) - Chuyển một chuỗi JSON thành đối tượng của Javascript.stringify(objJSON) - Chuyển đối tượng của Javascript thành chuỗi JSON.
LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 16 Quá trình xử lý việc truyền dữ liệu JSON giữa máy khách và máy chủ được mô tả theo hình 1.6 như sau: Máy khách Máy chủ Máy khách Hình 1.6 Quá trình truyền và nhận dữ liệu JSON giữa máy chủ và máy khách Về phía máy khách: 1. Tạo ra một đối tượng Javascript. Sử dụng phương thức stringify để chuyển đối tượng thành một chuỗi JSON. Gửi chuỗi địa chỉ URL đã mã hóa(URL-encode) bao gồm chuỗi JSON như một phần của http request đến máy chủ nó có thể sử dụng phương pháp GET, POST để gửi dữ liệu.7 Quá trình xử lý dữ liệu JSON tại máy chủ LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 17 Về phía máy chủ : 1.
Giải mã chuỗi JSON sau đó chuyển chuỗi JSON thành các đối tượng của ngôn ngữ chúng ta chọn. Thực hiện xử lý đối tượng theo yêu cầu của bài toán.8 Quá trình xử lý dữ liệu JSON trên máy chủ Nếu muốn gửi lại chuỗi JSON trả về phía máy khách Tạo một đối tượng mới để biểu diễn dữ liệu trả về. Chuyển đối tượng thành chuỗi JSON. Chuyển chuỗi JSON lại phía máy khách.
Về phía máy khách : Sau khi nhận được chuỗi JSON sẽ chuyển chuỗi thành các đối tượng của Javascript và xử lý các đối tượng theo yêu cầu. Ví dụ đoạn mã dưới đây chỉ ra làm thế nào để gửi dữ liệu JSON đến máy chủ Về phía máy khách: <html> <head> <script type="text/javascript" src=".js"></script> <script type="text/javascript" src=".js"></script> <script type="text/javascript"> function SendRequest(MSG) { document.innerHTML=""; var objJSON = { "msg" : MSG LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 18 }; var strJSON = encodeURIComponent(JSON.stringify(objJSON)); new Ajax.jsp", { method: "post", parameters: "strJSON=" + strJSON, onComplete: Respond }); } function Respond(REQ) { document.respo nseText; } </script> <title>Using JSON</title> </head> <body> <h1>Request</h1> <form> <input type="button" value="Hi There!" onClick="SendRequest(this.value)"/> <input type="button" value="Good bye!" onClick="SendRequest(this.value)" /> </form> <h1>Response</h1> <div id="ResponseDiv">Waiting.</div> </body> </html> LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 19 Về phía máy chủ: <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" import="java.*"%> <% try { URLDecoder decoder = new URLDecoder(); String strJSON = decoder.parse(strJSON); String Message = objJSON.toString(); if (Message.write("And hi there to you!"); } else { out.5 Ứng dụng của JSON JSON được ứng dụng trong một số trường hợp sau đây: Lưu trữ dữ liệu đơn thuần.