MỤC LỤC DANH MỤC THUẬT NGỮ TIẾNG ANH………………………………… LỜI NÓI ĐẦU………………………………………………………………… Chương TỔNG QUAN VỀ LẬP TRÌNH JAVA………………………… 10 1.1 Lịch sử đời phát triển Java 10 1.2 Đặc trưng ngôn ngữ Java 10 1.3 Các ứng dụng Java 12 1.4 Dịch thực thi chương trình viết Java 13 1.5 Kiến trúc chương trình xây dựng Java 13 1.5.1 Kiến trúc chương trình Java 13 1.5.2 Chương trình Java 16 Chương CẤU TRÚC LẬP TRÌNH CƠ BẢN TRONG JAVA……………….20 2.1 Các kiểu liệu 20 2.2 Biến 21 2.3 Toán tử 22 2.4 Strings StringBuider 23 2.4.1 Lớp String 23 2.4.2 StringBuffer StringBuilder 27 2.5 Nhập/Xuất liệu 27 2.6 Câu lệnh cấu trúc lệnh Java 31 2.6.1 Lệnh, khối lệnh Java 32 2.6.2 Câu lệnh if …else 32 2.6.3 Câu lệnh switch-case 33 2.6.4 Vòng lặp While 35 2.6.5 Vòng lặp do-while 35 2.6.6 Vòng lặp for 36 2.6.7 Lệnh break continue 37 2.7 Số lớn java 38 2.8 Mảng 38 2.8.1 Vòng lặp “for each” 39 2.8.2 Khởi tạo mảng mảng nặc danh 40 2.8.3 Copy mảng 41 2.8.4 Các tham số dòng lệnh 41 2.8.5 Sắp xếp mảng 42 2.8.6 Mảng nhiểu chiều 42 Chương ĐỐI TƯỢNG, LỚP, KẾ THỪA, GIAO DIỆN…………………… 49 3.1 Đối tượng, lớp, lớp trừu tượng 49 3.1.1 Khái niệm 49 3.1.2 Khai báo lớp 49 3.1.3 Thuộc tính lớp 50 3.1.4 Phương thức lớp 52 3.1.5 Chỉ định truy xuất lớp 55 3.2 Tạo đối tượng 55 3.3 Kế thừa đa hình 57 3.3.1 Mô tả kế thừa 57 3.3.2 Kế thừa đơn 57 3.3.3 Kế thừa kép 61 3.3.4 Lớp cha, lớp 63 3.3.5 Cách sử dụng từ khóa super 64 3.3.6 Cách nạp chồng phương thức 64 3.3.7 Đa hình 66 3.4 Lớp trừu tượng 68 3.5 Lớp Object 71 3.5.1 Phương thức equals 71 3.5.2 Phương thức toString ( ) 72 3.6 Giao diện 72 3.6.1 Mô tả giao diện 72 3.6.2 Mục đích sử dụng giao diện 73 3.6.3 So sánh giao diện lớp trừu tượng 73 3.7 3.7.1 3.8 Lớp nội 74 Các kiểu lớp nội 75 Xử lý ngoại lệ 77 3.8.1 Giới thiệu 77 3.8.2 Mục đích việc xử lý ngoại lệ 77 3.8.3 Lớp Exception 77 3.8.4 Xử lý ngoại lệ 77 3.8.5 Mơ hình xử lý ngoại lệ 78 3.8.6 Các khối chứa nhiều Catch 79 3.8.7 Khối ‘finally’ 81 3.8.8 Các ngoại lệ định nghĩa với lệnh ‘throw’ ‘throws’ 83 3.8.9 Danh sách ngoại lệ 84 3.9 Giao diện Collection 85 3.9.1 Giới thiệu 85 3.9.2 Các kiểu collection 85 3.9.3 Collection frame work 91 3.10 Thread 94 3.10.1 Thread gì, Tạo Thread 94 3.10.2 Các trạng thái Thread 94 3.10.3 Các phương thức lớp Thread 95 3.10.4 Quản lý Thread 96 3.10.5 Luồng chạy ngầm (deamon) 96 3.11 Đa luồng tương tranh 97 3.11.1 Định nghĩa đa luồng 97 3.11.2 Sử dụng phương thức isAlive() join() 100 3.11.3 Điều kiện tương tranh cách khắc phục 101 3.11.4 Cách sử dụng phương thức wait() notify() 102 3.11.5 Định nghĩa deadlock khắc phục 103 CHƯƠNG LẬP TRÌNH GIAO DIỆN VỚI JAVA SWING……………… 111 4.1 Giới thiệu Swing mơ hình MVC 111 4.1.1 Lợi ích sử dụng Swing so với AWT 112 4.1.2 Mô tả container Swing 113 4.2 Quản lý Layout 113 4.2.1 BorderLayout 113 4.2.2 GridLayout 115 4.2.3 GirdBagLayout 116 4.2.4 GroupLayout 116 4.3 Text Input 116 4.3.1 TextFields 116 4.3.2 Label 117 4.3.3 Password Fields 118 4.3.4 TextAreas 118 4.3.5 Scroll Panes 119 4.4 Các thành phần lựa chọn 120 4.4.1 Checkboxes 120 4.4.2 Radio Button 120 4.4.3 ComboBoxes 121 4.4.4 Slider 123 4.5 Menu 124 4.5.1 Xây dựng menu 124 4.5.2 Icons Menu Items 124 4.5.3 Pop-Up Menu 125 4.5.4 Hiển thị ẩn mục menu 125 4.5.5 Toolbars 125 4.5.6 Tooltips 127 4.6 Dialog Boxes 127 4.6.1 Tạo Dialogs 127 4.6.2 Option Dialogs 128 4.6.3 Trao đổi liệu 132 4.6.4 File Dialogs 132 4.6.5 Các lựa chọn màu 133 Chương LUỒNG VÀ TẬP TIN…………………………………………… 139 5.1 Mở đầu 139 5.2 Luồng 139 5.2.1 Khái niệm luồng 139 5.2.2 Luồng byte (Byte Streams) 139 5.2.3 Luồng ký tự (Character Streams) 140 5.2.4 Những luồng định nghĩa trước (The Predefined Streams) 141 5.3 Sử dụng luồng Byte 141 5.3.1 Đọc liệu từ Console 142 5.3.2 Xuất liệu Console 143 5.3.3 Đọc ghi file dùng luồng Byte 144 5.3.4 Đọc ghi liệu nhị phân 147 5.4 File truy cập ngẫu nhiên (Random Access Files) 150 5.5 Sử dụng luồng ký tự 152 5.5.1 Nhập Console dùng luồng ký tự 153 5.5.2 Xuất Console dùng luồng ký tự 155 5.5.3 5.6 Đọc/ghi File dùng luồng ký tự 156 Lớp File 158 Chương ỨNG DỤNG GIAO TIẾP VỚI CƠ SỞ DỮ LIỆU……………… 163 6.1 Giới thiệu 163 6.2 Kiến trúc JDBC, cách tạo ứng dụng JDBC 163 6.3 Các khái niệm 163 6.3.1 JDBC Driver 164 6.3.2 JDBC URL 166 6.4 Kết nối sở liệu với JDBC 166 6.4.1 Đăng ký trình điều khiển 166 6.4.2 Thực kết nối 167 6.4.3 Các ví dụ 168 6.5 Cách tạo truy vấn kiểu truy vấn 172 6.6 Mô tả Rowset, JDBCRowset CatchedRowset 178 CHƯƠNG LẬP TRÌNH ỨNG DỤNG MẠNG VỚI SOCKET…………….183 7.1 Giới thiệu chung 183 7.2 Lập trình thao tác với địa máy trạm 183 7.2.1 Lập trình thao tác với địa IP, lớp URL Connection 183 7.2.2 Ví dụ sử dụng phương thức lớp InetAddress 189 7.3 Lập trình ứng dụng mạng với TCP socket 190 7.3.1 Lớp Socket lớp Server Socket 190 7.3.2 Kỹ thuật lập trình truyền thơng với giao thức TCP 194 7.3.3 Một số ví dụ 197 7.4 Lập trình ứng dụng mạng với UDP Socket 200 7.4.1 Một số lớp Java hỗ trợ lập trình với UDP Socket 200 7.4.2 Kỹ thuật lập trình truyền thông với giao thức UDP 205 7.5 Lấy liệu web 218 7.5.1 URL URI 218 7.5.2 Sử dụng URLConnection để truy xuất liệu 218 7.6 Gửi Email 218 7.6.2 Khái niệm Session 220 7.6.3 Cách tạo message 220 7.6.4 Các bước để tạo gửi message 220 7.6.5 Các bước cần thiết để đọc message 221 7.6.6 Các bước cần thiết để trả lời email 222 TÀI LIỆU THAM KHẢO 226 DANH MỤC THUẬT NGỮ TIẾNG ANH Từ Nghĩa từ Abstract Trừu tượng Assert Được sử dụng để xác định vị trí lỗi chương trình nội Break Dừng vịng lặp Catch Từ khóa đầu khối bắt ngoại lệ Continue Bỏ qua phần cuối vòng lặp, tiếp tục sang bước Default Giá trị mặc định hàm switch() Extends Kế thừa Final Một số, phương thức hay lớp không ghi đè Finally Một phần khối xử lý ngoại lệ try thực Implements Định nghĩa giao diện mà lớp thực Import Khai báo gói thư viện Instanceof Kiểm tra đối tượng thể lớp Interface Giao diện Native Một phương thức thực hệ thống máy chủ new Tạo đối tượng lớp Null Tham chiếu rỗng Package Gói Private Tiền tố truy cập phương thức lớp Protected Tiền tố truy cập phương thức lớp, lớp lớp khác gói Public Tiền tố truy cập phương thức tất lớp Return Trả phương thức Super Gọi phương thức khởi tạo lớp cha Synchronized Cho biết phương thức đồng This Sử dụng tham chiếu đến đối tượng LỜI NÓI ĐẦU Cùng với phát triển khoa học, kỹ thuật, công nghệ thông tin nước ta năm gần phát triển mạnh, đặc biệt ngành công nghệ phần mềm Sau đời, ngơn ngữ lập trình Java sử dụng rộng rãi phổ biến lập trình viên chuyên nghiệp nhà phát triển phần mềm Công nghệ Java đưa vào giảng dạy sinh viên công nghệ thông tin số trường Đại Học các sở đào tạo lập trình viên chuyên nghiệp Để đáp ứng với yêu cầu học tập sinh viên chuyên ngành công nghệ thông tin, biên soạn giáo trình “Cơng nghệ Java” Đây học phần sở sinh viên chuyên ngành Đại học Cao đẳng Công nghệ Thông tin Học phần cung cấp cho sinh viên kiến thức chuyên sâu ngôn ngữ Java, trang bị cho sinh viên kỹ viết phần mềm ứng dụng phần mềm nhúng Đây xem kiến thức tảng cho lập trình viên cơng nghệ Java Nội dung giáo trình bao gồm chương: Chương Giới thiệu tổng quan ngơn ngữ lập trình Java Cách dịch thực thi chương trình , kiến trúc chương trình xây dựng Java giới thiệu lập trình hướng đối tượng Chương Trình bày khái niệm lập trình Java kiểu liệu toán tử Java, câu lệnh cấu trúc lệnh Java Chương Trình bày chi tiết khái niệm lớp, lớp nội, đối tượng, kế thừa… tính đa hình, xử lý ngoại lệ, xử lý đa luồng tương tranh Chương Giới thiệu lập trình giao diện SWING như: thành phần, cách trình bày giao diện, xử lý kiện… Chương Trình bày luồng tập tin luồng byte, luồng ký tự, Chương Trình bày thiết kế ứng dụng liên quan đến sở liệu: kiến trúc JDBC, cách kết nối sở liệu với JDBC thao tác sở liệu Kết thúc chương sinh viên viết phần mềm hồn thiện giải toán quản lý Chương Giới thiệu lập trình mạng socket, sử dụng lớp cung cấp JAVA Đây kiến thức hỗ trợ cho học phần Thực tập lập trình mạng học học kỳ Trong chương có câu hỏi ơn tập câu hỏi thảo luận để tổng kết kiểm tra lại kiến thức chương Chúng hy vọng nội dung giáo trình giúp cho sinh viên kiến thức cần thiết, làm sở để sâu vào thiết kế phần mềm Giáo trình dùng để giảng dạy cho sinh viên ngành Công nghệ thông tin, song giúp sinh viên ngành điện tử, viễn thông trường đại học cần tham khảo vấn đề lập trình Java Chúng tơi xin chân thành cảm ơn Thầy Nguyễn Hồng Chiến, phó chủ nhiệm, phụ trách khoa Cơng nghệ Thơng tin trường Đại học Kinh tế Kỹ thuật Công nghiệp với đồng nghiệp đóng góp nhiều ý kiến quý báu cho thành công tài liệu Vì tài liệu biên soạn lần đầu, chúng tơi cố gắng hồn chỉnh, song khơng tránh khỏi thiếu sót Rất mong nhận góp ý bạn đọc để tài liệu học tập hoàn thiện Xin trân trọng cảm ơn! Tác giả Vũ Văn Đốc Lương Thị Thảo Hiếu Lê Thanh Của Chương TỔNG QUAN VỀ LẬP TRÌNH JAVA Mục đích Nội dung tập trung trình bày vấn đề ngơn ngữ lập trình Java: Lịch sử đời phát triển Java Kiến trúc tổng quát chương trình xây dựng Java Các đặc điểm Java, khái niệm máy ảo Cấu trúc chương trình Java đơn giản, cách xây dựng, dịch, thực thi chương trình Java 1.1 Lịch sử đời phát triển Java Năm 1991, nhóm kỹ sư Sun Microsystems muốn lập trình điều khiển thiết bị điện tử tivi, máy giặt… Ban đầu, định dùng C C++ trình biên dịch C/C++ phụ thuộc vào loại CPU Do đó, họ bắt tay vào xây dựng ngơn ngữ chạy nhanh, gọn, hiệu quả, độc lập thiết bị ngôn ngữ “Oak” đời vào năm 1995, tương tự C++ loại bỏ số tính nguy hiểm C++ có khả chạy nhiều phần cứng khác Cùng lúc world wide web bắt đầu phát triển Sun thấy tiềm ngôn ngữ Oak nên đầu tư cải tiến phát triển Ngơn ngữ lập trình Java Sun Microsystems giới thiệu vào tháng năm 1995 nhanh chóng trở thành ngơn ngữ lập trình lập trình viên chuyên nghiệp Java xây dựng dựa tảng C C++, Java sử dụng cú pháp C đặc trưng hướng đối tượng C++ Java ngôn ngữ vừa biên dịch vừa thông dịch Đầu tiên mã nguồn biên dịch thành dạng bytecode Sau thực thi loại máy nhờ trình thơng dịch Mục tiêu nhà thiết kế Java cho phép người lập trình viết chương trình lần chạy phần cứng khác Ngày nay, Java sử dụng rộng rãi, không để viết ứng dụng máy cục hay mạng mà để xây dựng trình điều khiển thiết bị di động, PDA,… 1.2 Đặc trưng ngơn ngữ Java Tính đơn giản Ngơn ngữ lập trình Java loại bỏ đặc trưng phức tạp C C++ như: Loại bỏ thao tác trỏ, thao tác định nghĩa chồng toán tử (operator overloading)…, không cho phép đa kế thừa (Multi-inheritance) mà sử dụng giao diện (interface), không sử dụng lệnh “goto” file header (.h), loại bỏ cấu trúc “struct” “union” Tính hướng đối tượng Hướng đối tượng Java tương tự C++ Java ngơn ngữ lập trình hướng đối tượng hồn tồn Tất thứ đề cập đến Java liên quan đến đối tượng định nghĩa trước, chí hàm chương trình viết 10 ClientControl.java package udp.client; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class ClientControl { private ClientView view; private int serverPort = 5555; private int clientPort = 6666; private String serverHost = "localhost"; private DatagramSocket myClient; public ClientControl(ClientView view) { this.view = view; this.view.addLoginListener(new LoginListener()); } class LoginListener implements ActionListener { public void actionPerformed(ActionEvent e) { openConnection(); User user = view.getUser(); sendData(user); String result = receiveData(); if(result.equals("ok")) view.showMessage("Login succesfully!"); else view.showMessage("Invalid username and/or password!"); closeConnection(); } } 212 private void openConnection(){ try { myClient = new DatagramSocket(clientPort); } catch (Exception ex) { view.showMessage(ex.getStackT race().toString()); } } private void closeConnection() { try { myClient.close(); } catch (Exception ex) { view.showMessage(ex.getStackT race().toString()); } } private void sendData(User user){ try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(user); oos.flush(); InetAddress IPAddress = InetAddress.getByName(serverHost); byte[] sendData = baos.toByteArray(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, serverPort); myClient.send(sendPacket); } catch (Exception ex) { view.showMessage(ex.getStackT race().toString()); } } private String receiveData(){ String result = ""; try { byte[] receiveData = new byte[1024]; DatagramPacket receivePacket =new DatagramPacket(receiveData, 213 receiveData.length); myClient.receive(receivePacket); ByteArrayInputStream bais = new ByteArrayInputStream(receiveData); ObjectInputStream ois = new ObjectInputStream(bais); result = (String)ois.readObject(); } catch (Exception ex) { view.showMessage(ex.getStackT race().toString()); } return result; } } ClientRun.java package udp.client; public class ClientRun { public static void main(String[] args) { ClientView view = new ClientView(); ClientControl control = new ClientControl(view); view.setVisible(true); } } Các lớp phía server package udp.server; public class ServerView { public ServerView(){ } public void showMessage(String msg){ System.out.println(msg); } } ServerControl.java package udp.server; import java.io.ByteArrayInputStream; import j ava.io.ByteArrayOutputStream; 214 import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import udp.client.User; public class ServerControl { private ServerView view; private Connection con; private DatagramSocket myServer; private int serverPort = 5555; private DatagramPacket receivePacket = null; public ServerControl(ServerView view){ this.view = view; getDBConnection("usermanagement", "root", "12345678"); openServer(serverPort); view.showMessage("UDP server is running "); while(true){ listenning(); } } private void getDBConnection(String dbName, String username, String password) { String dbUrl = "jdbc:mysql://localhost:3306/" + dbName; String dbClass = "com.mysql.jdbc.Driver"; try { Class.forName(dbClass); = DriverManager.getConnection (dbUrl, username, password); } catch(Exception e) { view.showMessage(e.getStackTrace().toString()); } } 215 private void openServer(int portNumber){ try { myServer = new DatagramSocket(portNumber); }catch(IOException e) { view.showMessage(e.toString()); } } private void listenning(){ User user = receiveData(); String result = "false"; if(checkUser(user)) { result = "ok"; } sendData(result); } private void sendData(String result){ try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(result); oos.flush(); InetAddress IPAddress = receivePacket.getAddress(); int clientPort = receivePacket.getPort(); byte[] sendData = baos.toByteArray(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, clientPort); myServer.send(sendPacket); } catch (Exception ex) { view.showMessage(ex.getStackT race().toString()); } } private User receiveData(){ User user = null; 216 try { byte[] receiveData = new byte[1024]; receivePacket = new DatagramPacket(receiveData, receiveData.length); myServer.receive(receivePacket); ByteArrayInputStream bais = new ByteArrayInputStream(receiveData); ObjectInputStream ois = new ObjectInputStream(bais); user = (User)ois.readObjjctQ; } catch (Exception ex) { view.showMessage(ex.getStackT race().toString()); } return user; } private boolean checkUser(User user) { String query = "Select * FROM users WHERE username ='" + user.getUserName()+ "' AND password ='" + user.getPassword() + "'"; try { Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(query); if (rs.next()) { return true; } }catch(Exception e) { view.showMessage(e.getStackTrace().toString()); } return false; } } ServerRun.java package udp.server; public class ServerRun { public static void main(String[] args) { 217 ServerView view = new ServerView(); ServerControl control = new ServerControl(view); } Kết Login thành công: Login lỗi: 7.5 Lấy liệu web 7.5.1 URL URI 7.5.2 Sử dụng URLConnection để truy xuất liệu 7.6 Gửi Email Gửi mail java sử dụng JavaMail Đây tảng giao thức độc lập sử dụng để gửi, nhận đọc mail thông qua ứng dụng Java Sử dụng JavaMail API để tạo ứng dụng Java có tính hỗ trợ gửi email cho người dùng Ví dụ sau đăng ký thành cơng tài khoản, ứng dụng gửi email thông báo đên người dùng, … Hình bên minh hoạ sử dụng JavaMail 218 Hình 7.6 Minh hoạ sử dụng JavaMail 7.6.1.1 Mô tả giao thức mail khác Hiện có giao thức ứng dụng mail server giúp hệ thống hoạt động trơn tru đảm bảo khả bảo mật cao nhất, bao gồm: - SMTP – Simple Mail Transfer Porotocol: SMTP sử dụng gửi từ ứng dụng email Postfix với máy chủ email email gửi từ máy chủ email khác Giao thức sử dụng cổng TCP 25 - POP3 – Post Office Porotocol version 3: giao thức dùng để tải email từ máy chủ email POP3 sử dụng cổng TCP 110 - IMAP – Internet Message Access Protocol: Đây giao thức hệ POP IMAP sử dụng cổng TCP 143 đặt kiểm sốt email mail server IMAP hoạt động chế độ: trực tuyến, ngoại tuyến ngắt kết nối Chế độ ngoại tuyến thực sau: email chuyển tới máy client, bị xóa khỏa mail server sau hệ thống bị ngắt Lúc người dùng đọc, trả lời làm số việc khác chế độ ngoại tuyến Tuy nhiên họ muốn gửi thư, họ phải kết nối lại Như chế độ này, thông điệp lưu tạm client server giúp người dùng sử dụng bình thường lần kết nối cập nhập trở lại vào mail server Hình 7.7 Các giao thức mail 219 7.6.2 Khái niệm Session Lớp Session mô tả mail session lớp phụ, Nó thu thập thuộc tính giá trị mặc định sử dụng bới mail API Một phiên mặc định chia sẻ nhiều ứng dụng desktop Các session không chia sẻ tạo Lớp Session cung cấp quyền truy cập tới nhà cấp thực Store, Transport lớp liên quan.Các giao thức cung cấp cấp hình cách sử dụng tệp: javamail.providers and javamail.default.providers javamail.address.map and javamail.default.address.map 7.6.3 Cách tạo message Tạo đối tượng MimeMessage với số thiết lập như: Người gửi (from), người nhận (to), chủ đề (subject) nội dung (body) Message msg = new MimeMessage(s); msg.setFrom(new InternetAddress(from)); msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); msg.setSubject(subject); msg.setText(body); 7.6.4 Các bước để tạo gửi message Bước Tạo đối tượng Properties định thông tin host, post Properties p = new Properties(); p.put("mail.smtp.auth", "true"); p.put("mail.smtp.starttls.enable", "true"); p.put("mail.smtp.host", "smtp.gmail.com"); p.put("mail.smtp.port", 587); Bước Tạo đối tượng session Session s = Session.getInstance(p, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(accountName, accountPassword); } }); Trong accountName accountPassword tài khoản gmail Bước Tạo đối tượng message 220 Message msg = new MimeMessage(s); msg.setFrom(new InternetAddress(from)); msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); msg.setSubject(subject); msg.setText(body); Bước Gửi mail Transport.send(msg); 7.6.5 Các bước cần thiết để đọc message Bước Tạo đối tượng Properties định thông tin host, post Properties p = new Properties(); p.put("mail.smtp.auth", "true"); p.put("mail.smtp.starttls.enable", "true"); p.put("mail.smtp.host", "smtp.gmail.com"); p.put("mail.smtp.port", 587); Bước Tạo Authentication javax.mail.Authenticator pa = null; //default: no authentication if (username != null && password != null) { props.put(“mail.smtp.auth”, “true”); pa = new javax.mail.Authenticator (){ public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }; }//else: no authentication Bước 3.Kết nối tới POP3 server Session session = Session.getDefaultInstance(props, pa); Store store = session.getStore(provider); store.connect(host, username, password); Bước Đọc mail Folder inbox = store.getFolder(“INBOX”); //… 221 inbox.open(Folder.READ_ONLY); //… Message[] messages = inbox.getMessages(); 7.6.6 Các bước cần thiết để trả lời email Bước Đọc email bước Bước Chọn email để trả lời Message[] messages = folder.getMessages(); for (int i = 0, n = messages.length; i < n; i++) { Message message = messages[i]; } Bước Tạo đối tượng message Message replyMessage = new MimeMessage(session); replyMessage = (MimeMessage) message.reply(false); replyMessage.setFrom(new InternetAddress(to)); replyMessage.setText("Thanks"); replyMessage.setReplyTo(message.getReplyTo()); Bước Gửi mail Transport t = session.getTransport("smtp"); t.sendMessage(replyMessage, replyMessage.getAllRecipients()); 222 CÂU HỎI ÔN TẬP, THẢO LUẬN Câu Mỗi đối tượng lớp InetAddress chứa thành phần chính? Lớp kế thừa từ lớp InetAddress gồm lớp nào? Câu Phương thức sau trả kết gì: InetAddress[] addresses = InetAddress.getAllByName(String name) throws UnknownHostException Câu Chương trình sau cho kết gì? import java.net.*; public class MyAddress { public static void main(String[] args) { try { InetAddress me = InetAddress.getLocalHost( ); String dottedQuad = me.getHostAddress( ); System.out.println("My address is " + dottedQuad); catch (UnknownHostException ex) { System.out.println("I'm sorry I don't know my own address."); } } } Câu Chương trình sau cho kết gì? import java.net.*; public class AddressTests { public static int getVersion(InetAddress ia) { byte[] address = ia.getAddress( ); if (address.length == 4) return 4; else if (address.length == 6) return 6; else return -1; } Câu Liệt kê tóm tắt số lớp Java hỗ trợ lập trình với TCPSocket Giái thích tác dụng lớp Câu Trình bày kỹ thuật lập trình truyền thơng với giao thức TCP? Câu Tóm tắt Một số lớp Java hỗ trợ lập trình với UDPSocket Giải thích tác dụng lớp 223 Câu Trình bày kỹ thuật lập trình truyền thơng với giao thức UDP So sánh với giao thức TCP? BÀI TẬP ỨNG DỤNG Bài Viết chương trình nhận đối số URL Nối kết đến Web Server URL nhận được, lấy trang web in hình theo dạng textfile (html) Bài Viết chương trình gửi đến URL chuỗi, mở kết nối từ URL hiển thơng tin header Chức chương trình: - Mở kết nối đến địa URL - Hiển thị thông tin header nhận Bài Viết chương trình in địa localhost (địa cục bộ), null host địa internet Bài Viết chương trình đọc file từ xa thơng qua web server Bài Viết chương trình download file thơng qua web server Bài 6.Viết chương trình cộng hai số nguyên - Client: Nhập vào từ bàn phím số nguyên (a,b) Client chờ nhận kết từ Server để in hình - Server: Nhận số nguyên mà Client vừa gửi, tính tổng, tích, thương chúng gửi kết cho Client Bài Viết chương trình kiểm tra số -Client: Nhập vào số.Client chờ nhận kết từ Server để in hình -Server:Nhận số mà Client vừa gửi, Server tiến hành kiểm tra số có ngun tố, số hồn hảo hay không gửi lại cho Client Bài Viết chương trình -Client: Nhập vào mảng số nguyên Client chờ nhận kết từ Server để in hình -Server: Nhận mảng mà Client vừa gửi, Server tiến hành tìm số chẵn gửi lại cho Client Bài Xây dựng mơ hình ứng dụng khách/chủ (client/server) sử dụng lớp Socket ServerSocket để kết nối trao đổi thông tin giữ máy khách máy chủ Máy khách (client) gửi chuỗi đến máy chủ (server), máy chủ chuẩn hóa đảo ngược thứ tự chuỗi gửi trả cho máy khách Bài 10 Tạo hai ứng dụng độc lập (một client server) Client chấp nhận số sau: 1, 2, Số gửi đến server Server trả lại tương ứng : “ONE” “TWO” “THREE” (tùy theo số nhận được) Dùng giao thức TCP/IP 224 Chức chương trình: - Client gửi số đến SERVER - Nếu số 1,2,3 trả ONE,TWO,THREE, trường hợp cịn lại trả UNKNOWN Bài 11 Viết chương trình Talk theo chế độ không nối kết Cho phép hai người ngồi hai máy tính tán gẫu (chat) với Bài 12 Xây dựng chương trình ExchangeRateServer ExchangeRateServer chạy máy chủ đón nhận liệu máy khách gửi đến cổng 2345 Khi nhận yêu cầu máy chủ gửi trả thông báo tỉ giá kèm theo ngày cho máy khách Ta sử dụng hàm random lớp Math để lấy tỷ giá mang tính chất ngẫu nhiên thị trường Tokyo, NewYork HongKong Dữ liệu nhận gửi theo gói dựa vào lớp DatagramPackage Chương trình chạy máy chủ cung cấp tỷ giá thị trường chứng khoán Bài 13 Xây dựng chương trình multicast theo mẫu bên Chức chương trình: - Tham gia vào group multicast - Gửi liệu đến địa multicast - Nhận liệu từ multicast - Hiển thị lên hình - Chỉ cần client tham gia vào group địa multicast có liệu gửi vào tất client nhận Cơ chế: - Tham gia vào group địa multicast - Gửi liệu đến địa multicast (Lúc client muốn nhận phải tham gia vào group multicast nhận được) - Vì chương trình tham gia vào group multicast nên nhận liệu có client gửi vào địa Bài 14 Viết Chương trình multicast video Java Bài 15 Viết chương trình gửi nhận mail java Bài 16 Viết chương trình chat đa người dùng Java 225 TÀI LIỆU THAM KHẢO [1] Cay S Horstmann – Gary Cornell Core Java Volum - Fundamentals, Eighth Edition The Sun Microsystems press 2008 [2] Cay S Horstmann – Gary Cornell Core Java Volum – Advanced Features, Eighth Edition The Sun Microsystems press 2008 [3] Joyce Farrell Java Programming Introductory Course Technology © 1999 [4] Bruce Eckel Thinking in Java, Fourth Edition Prentice Hall – 2006 [5] Herbert Schildt Java A Beginner’s Guide Second Edition McGraw-Hill 2003 [6] Dr Harvey M Deitel - Paul J Deitel Java How to Program, 4th (Deitel) Prentice Hall - 2002 [7] Simon Roberts – Philip Heller – Michael Ernest Complete Java Certification – study guide BPB Publications – 2000 [8] http://docs.oracle.com/javase/tutorial/index.html [9] http://docs.oracle.com/javase/tutorial/jdbc/overview/index.html [10] Đồn Văn Ban, Lập trình hướng đối tượng với JAVA, nhà xuất Khoa học Kỹ thuật 2005 226 ... cho lập trình viên cơng nghệ Java Nội dung giáo trình bao gồm chương: Chương Giới thiệu tổng quan ngơn ngữ lập trình Java Cách dịch thực thi chương trình , kiến trúc chương trình xây dựng Java giới... QUAN VỀ LẬP TRÌNH JAVA Mục đích Nội dung tập trung trình bày vấn đề ngơn ngữ lập trình Java: Lịch sử đời phát triển Java Kiến trúc tổng quát chương trình xây dựng Java Các đặc điểm Java, khái... mềm Công nghệ Java đưa vào giảng dạy sinh viên công nghệ thông tin số trường Đại Học các sở đào tạo lập trình viên chuyên nghiệp Để đáp ứng với yêu cầu học tập sinh viên chuyên ngành công nghệ