CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1. Tổng quan về Java Java [1] là ngôn ngữ lập trình ban đầu được phát triển bởi Sun Microsystems do James Gosling khởi xướng và phát hành vào năm 1995 (Java 1. Tính đến thời điểm này (tháng 2/2015) phiên bản mới nhất của Java Standard Edition (JSE) là 8. Với ưu thế về đa nền tảng (multi platform) Java càng lúc càng được ứng dụng rộng rãi trên nhiều thiết bị từ máy tính đến mobile và nhiều thiết bị phần cứng khác.
Java là ngôn ngữ lập trình hướng đối tượng nên nó cũng có 4 tính chất [2] chung của các ngôn ngữ hướng đối tượng: - Tính trừu tượng: là tiến trình ẩn các chi tiết triển khai chương trình và tập trung vào các phương thức thuộc tính cần thiết của đối tượng, nó tập trung vào cốt lõi của đối tượng thay vì quan tâm cách thức thực hiện. - Tính đa hình: thể hiện qua việc gọi phương thức của đối tượng. Các phương thức có thể giống nhau hoàn toàn, nhưng việc xử lý kết quả có thể khác nhau. Bản chất của sự việc chính là phương thức này bao gồm cùng một số lượng tham số.
- Tính kế thừa: cho phép xây dựng lớp mới dựa trên các định nghĩa của một lớp đã có, có thể chia sẻ và mở rộng các đặc tính sẵn có mà không cần phải định nghĩa lại. - Tính đóng gói: là tiến trình che giấu việc thực thi những chi tiết của một đối tượng đối với người sử dụng đối tượng ấy. Bên cạnh đó Java còn có một số đặc tính khác: - Độc lập nền: Không giống như nhiều ngôn ngữ lập trình khác như C và C ++, khi Java được biên dịch, nó không được biên dịch sang mã máy cụ thể, mà thay vào 5 đó là mã byte code chạy trên máy ảo Java (JVM). Điều này đồng nghĩa với việc bất cứ thiết bị nào có cài đặt JVM sẽ có thể thực thi được các chương trình Java.
- Đơn giản: Học java thật sự dễ hơn nhiều so với C/C++, nếu bạn đã quen với các ngôn ngữ lập trình hướng đối tượng thì việc học Java sẽ dễ dàng hơn. Java trở nên đơn giản hơn so với C/C++ do đã loại bỏ tính đa kế thừa và phép toán con trỏ từ C/C++. - Bảo mật: Java hỗ trợ bảo mật rất tốt bởi các thuật toán mã hóa như mã hóa một chiều (one way hashing) hoặc mã hóa công cộng (public key). - Đa luồng: Với tính năng đa luồng Java có thể viết chương trình có thể thực thi nhiều task cùng một lúc.
Tính năng này thường được sử dụng rất nhiều trong lập trình game. - Hiệu suất cao: Nhờ vào trình thu gom rác (garbage collection), giải phóng bộ nhớ đối với các đối tượng không được dùng đến. - Linh hoạt: Java được xem là linh hoạt hơn C/C ++ vì nó được thiết kế để thích ứng với nhiều môi trường phát triển. Eclipse Eclipse [3] là một môi trường phát triển tích hợp cho ngôn ngữ lập trình Java, được phát triển ban đầu bởi IBM và hiện nay bởi tổ chức Eclipse.
Ngoài Java, Eclipse còn hỗ trợ nhiều ngôn ngữ lập trình khác như C#, C, C++, PHP, Python, XML, HTML, JavaScript khi sử dụng thêm trình bổ sung (plug-in). Eclipse được các nhóm phát triển Java trên toàn thế giới sử dụng hàng ngày để viết mã, gỡ lỗi và thử nghiệm các cơ sở mã lệnh lên đến hàng triệu dòng. Các tính năng của Eclipse [4] hấp dẫn các nhà phát triển nói chung và các nhà phát triển Java nói riêng gồm có: - Có các trình soạn thảo thông minh để viết Java, HTML, XML. - Tự động làm nổi bật toàn bộ cú pháp trên tất cả trình soạn thảo.
- Kiểm tra toàn bộ cú pháp khi bạn nhập mã lệnh của bạn vào. - Giúp viết mã phân biệt đối với các ngôn ngữ lập trình được hỗ trợ. - Hỗ trợ phát triển các ứng dụng Java chuẩn, Java EE, dịch vụ Web, và các ứng dụng Web. - Hỗ trợ thiết kế các ứng dụng dựa trên POJO có tích hợp JPA.
- Tích hợp chặt chẽ với các hệ thống kiểm soát phiên bản phổ biến, như Subversion và CVS. - Tích hợp với các công cụ xây dựng Java phổ biến, như Apache và Ant Apache Maven một cách chặt chẽ. - Tích hợp với các khung công tác thử nghiệm đơn vị Java phổ biến như Junit một cách chặt chẽ. - Có thể quản lý, kiểm soát và triển khai các ứng dụng tới các máy chủ ngay trong khi thử nghiệm và gỡ lỗi.
- Tích hợp chặt chẽ với các nguồn dữ liệu quan hệ và không quan hệ thông qua JDBC và Open Data Access (ODA). - Khả năng nhấn chuột một lần để tìm khai báo kiểu hay kiểu cơ sở ở bất cứ nơi nào trong mã nguồn. - Khả năng tìm tất cả các tham chiếu đến một ký hiệu hay một kiểu ở bất cứ nơi nào trong mã nguồn. - Công cụ tái cấu trúc mã nguồn (refactoring) để hỗ trợ quá trình tái cấu trúc mã nguồn thường là buồn tẻ, khá phức tạp và dễ mắc lỗi.
Tomcat Apache Tomcat [5] là một Java Servlet được phát triển bởi Apache Software Foundation(ASF). Tomcat là một ứng dụng gọn nhẹ, thường được dùng để triển khai các ứng dụng Web. Tomcat thực thi các ứng dụng Java Servlet và JavaServer Pages(JSP) cung cấp một máy chủ HTTP cho ngôn ngữ Java để thực thi các chương trình lệnh. BOOTSTRAP Bootstrap [6] là một framework HTML, CSS và Javascript cho phép thiết kế web responsive nhanh hơn và dễ dàng hơn, hỗ trợ người dùng thiết kế một website theo một chuẩn nhất định, tạo ra một website thân thiện với các thiết bị cầm tay như mobile, ipad, tablet.
Mô hình MVC MVC [7] viết tắt của 3 từ đó là Model – View – Controller (MVC) là mẫu thiết kế nhằm mục tiêu chia tách phần Giao diện và Code để dễ quản lý, phát triển và bảo trì. Mỗi phần lại có có một nhiệm vụ xử lý khác nhau, đối với trong mô hình MVC trong Java nói riêng và mô hình MVC nói chung thì: - Model: Tương tác và truy xuất dữ liệu đến CSDL. - View: Giao diện mà người dùng có thể nhìn thấy, tuy nhiên thường view chỉ có một nhiệm vụ duy nhất là hiển thị dữ liệu. - Controller: Nó có nhiệm vụ điều khiển tương tác giữa Model và View cũng như xử lý logic nghiệp vụ (Business).
Có thể giải thích kỹ hơn nữa đối với trong Java 6 thì controller lấy dữ liệu từ model sau đó gửi đến view. Trong Java web controller là file servlet. Servlet Servlet [8] là một thành phần được sử dụng để phát triển các chương trình dịch vụ Java ở phía máy chủ. Servlet là một chương trình chạy trên một Web, nó hoạt động như một lớp trung gian giữa một yêu cầu đến từ một trình duyệt Web hoặc HTTP client khác và cơ sở dữ liệu các ứng dụng trên máy chủ HTTP.
Web Server hiển thị các dòng lệnh được viết trong HTML và hồi đáp cho yêu cầu của người sử dụng qua HTTP. Các dòng lệnh HTML chứa các văn bản được đánh dấu (định dạng) để các trình duyệt như IE, Chrome đọc được. Một trình duyệt chấp nhận đầu vào ở dạng HTML, khi người sử dụng nhấn một nút để yêu cầu một số thông tin nào đó, một Servlet hoạt động [9] như sau: - Đọc các dữ liệu tường minh được Client gửi đến từ các yêu cầu (dữ liệu theo các khuôn dạng – form data). - Đọc các dữ liệu không tường minh được Client gửi đến từ các yêu cầu (dữ liệu trong phần đầu của yêu cầu – request headers).
- Xử lý và lưu trữ các dữ liệu được cung cấp dưới dạng HTML. - Gửi trả lời cho Client dưới dạng tường minh (dạng HTML), cung cấp các nội dung động khi Client yêu cầu truy vấn vào các CSDL. - Quản lý các thông tin trạng thái và trả lời dữ liệu không tường minh cho Client (các mã trạng thái và các phần đầu của trả lời). JSP JSP [10] viết tắt của Java Server Pages.
Đây là ngôn ngữ kịch bản được dùng ở Server để hỗ trợ ứng dụng trong việc trình bày trang web động – cập nhật dữ liệu. JSP tích hợp bao gồm HTML, XML, Java Code, và kể cả Servlet nghĩa là: - Thuận lợi cho xây dựng giao diện – bù đắp nhược điểm về giao diện của Servlet. - Mở rộng khả năng sử dụng JSP thông qua định nghĩa các thẻ mới như XML – khắc phục nhược điểm của HTML - Cho phép người dùng nhúng trực tiếp lệnh Java vào trong JSP thông qua Declaration giúp dễ dàng trong việc khai báo biến và hàm, Scriptlets chứa mã lệnh trực tiếp của Java và Expression giúp tính toán biểu thức và in kết quả ra màn hình Bản chất của JSP là Servlet, do vậy các thành phần của Servlet sẽ có tồn tại hết trên JSP. Ngoài ra, JSP không cần phải biên dịch mà nó được biên dịch khi có request lần đầu tiên yêu cầu đến server, do vậy JSP khắc phục nhược điểm chỉnh sửa phải cần có source code và biên dịch lại khi triển khai sau khi chỉnh sửa của Servlet.
JSP cung cấp các thành phần đối tượng ẩn để người dùng có thể sử dụng các thành phần tương tác trên server mà không cần khai báo và khởi tạo. Kết xuất của JSP thực chất là HTML. File JSP có phần mở rộng là jsp. Hệ quản trị CSDL SQL Server SQL [11] là viết tắt của cụm từ Structure Query Language (ngôn ngữ truy vấn có cấu trúc).
SQL Server hiện đang được xem là một phần mềm quản lý hệ thống cơ sở dữ liệu đơn giản và phổ biến hiện nay. SQL Server Management 2017 đang là bản phần mềm Sql Server được sử dụng phổ biến nhất hiện nay. Nó có thể đọc phần lớn các ngôn ngữ lập trình cao cấp hiện nay, giúp cho việc lưu trữ và phân tích dữ liệu trở nên dễ dàng hơn. Hơn thế nữa SQL Server Management 2017 lại dễ cài đặt và sử dụng nên nó được sử dụng rất nhiều.
Ứng dụng này giúp ích rất nhiều trong việc quản lý cơ sở dữ liệu cho một doanh nghiệp nhỏ, hay thậm chí cả một doanh nghiệp lớn. Ngoài ra, SQL Server còn có thể sử dụng để cập nhật thông tin cho cơ sở dữ liệu đã có. Kiến trúc của Microsoft SQL Server [12]: - Client: Nơi bắt đầu các yêu cầu. - Query: Truy vấn SQL ngôn ngữ bậc cao.
- Logical Units: Từ khóa, biểu thức và các toán tử. - N/W Packets: Những gói mã hóa liên quan đến mạng.