Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 48 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
48
Dung lượng
1,64 MB
Nội dung
Distributed Computing in Java Hướng dẫn chung Mô hình Ứng dụng hướng kiện- Event-based Program Sự kiện- Event, gọi biến cố: Một tình xẩy ra, thí dụ: người dùng gõ thêm ký tự vào textbox làm nội dung textbox bị đổi, user kích vào nút lệnh để chọn tác vụ Event object: Chứa thông tin biến cố xẩy Thí dụ kiện chuột : vị trí kích chuột (x,y), đối tượng bị chuột đè lên kích vào, số lần kích mà người dùng bấm (1,2,3 lần kích), phím bị kích (trái,giữa, phải)… Các ứng dụng có người lập trình sử dụng ngôn ngữ Visual C++, Visual Basic, Java, C Sharp- Những ngôn ngữ mạnh Ứng dụng loại ứng dụng có GUI (Graphical User Interface) Cơ chế vận hành (frame work) loại ứng dụng sau: Khi chạy ứng dụng, GUI xuất để user tương tác Lặp - Chờ user tương tác với GUI để có đối tượng kiện - Xử lý kiện - Xuất kết qủa xử lý lên GUI Khi user tương tác Ngưng Một GUI cửa sổ (Window/Frame/Form, tên gọi tùy thuộc vào công nghệ sử dụng) đóng vai trò đối tượng chứa (conatiner) chứa phần tử khác (component/control) Kiến trúc tập tin ứng dụng có GUI chế xử lý kiện sau: Như vậy, bước lập trình ứng dụng sau: 1- Viết code tạo GUI (nhiều công cụ có công cụ trực quan để user tạo GUI) 2- Dự kiến kiện cần quản lý 3- Viết code xử lý kiện 4- Biên dịch Việc đưa code quản lý kiện vào ứng dụng trình biên dịch thực tự động Thiết kế GUI với NetBeans 1) Tạo Project: General/ Java Application – Đặt tên chọn thư mục 2) Thêm file: New File/ Java GUI Forms/ Jframe Form/ Đặt tên NetBeans tự động tạo cho Form để thiết kế GUI 3) Chọn cách bố trí phần tử (Kích phải chuột vào form, nênchọn Null Layout) 4) Đưa vào phần tử 5) Đặt tên biến Cách đặt tên nên dùng: Thêm tiếp đầu ngữ: txt cho textbox, textarea Thí dụ rb cho radiobutton Textbox cho name : chk cho checkbox TextArea cho address : cb cho combobox Radiobutton cho giới tính male: btn cho button Radiobutton cho giới tính female: txtName txtArea rbMale rbFemale 6)Thiết lập thuộc tính Đặt kích thước cửa sổ: Mở code, gọi hành vi thiết lập kích thước cửa sổ vào constructor, lời gọi nitComponents Nhờ tác vụ này, chương trình chạy, cửa sổ có kjích thước ban đầu Nếu không làm điều này, cửa sổ có tiêu đề, user phải kéo cửa sổ cho lớn 7) Viết code quản lý kiện Assigment 1: Introduction to Swimg Assignment Tạo form nhập thông tin sinh viên theo hình thức hình Nút Validate: Sẽ kiểm tra tính hợp lệ liệu nhập (mọi field đề phải có liệu) Nút Reset: Xóa trống ô nhập liệu để user nhập lại thông tin Một số gợi ý Ấn định tiêu đề cho cửa sổ: Chọn form/ Properties/ Title Vẽ khung GUI: Thêm JPanel/ chọn JPanel này/ Properties/ Border/ Kích nút bên phải sổ Properties/ chọn loại border Tạo nhóm cho Radiobutton: o Trước đưa JradioButton vào Form, thêm JButtonGroup vào form o Thêm JRadioButton vào form, vào Properties radio button này, cho thuộc tính ButtonGroup JbuttonGroup vừa đưa vào bước Thêm chuỗi vào JComboBox: Chọn JComboBox, vào properties/ Chọn model/ Kích nút bên phải sổ Properties để sửa nội dung Truy xuất thuộc tính text textbox, textarea: this.txtName.setText(“”); // xóa trống ô name this.txtAddress.setText(“123 Le Loi”); // sửa nội dung textarea address string s= txtAddress.getText(); // lấy nội dung text area address đưa vào biến s Assignment 2: Swing Components and DialogBox Gợi ý Dùng JSlider - Can thiệp thuộc tính: minimum, maximum, paintLabel, paintTick, paintTrack, majorTickSpacing, value Mặc định, nhãn xuất với JSlider số Muốn xuất chữ, cần phải tạo bảng ánh xạ số với JLabel Đoạn code sau (đặt constructor) giúp xuất chữ với JSlider: Assignment 3: Layout Managers Trường kinh doanh Norman học viện hàng đầu đào tạo sau đại học quản trị kinh doanh MỖi năm có 1000 sinh viên đăng ký vào khóa học Viết chương trình Java giúp ghi nhận thông tin sinh viên GUI Nút Reset: Xóa trống ô text field Nút Save: Kiểm tra buộc nhập textfield Một thông báo xuất phù hợp tùy thuộc vào liệu hợp lệ hay không Nút Exit: thoát ứng dụng Gợi ý Kiểm tra buộc nhập cho textfield cách: (1) Dựa vào độ dài chuỗi String s = textfield.getText(); if (s.length == 0) {…} else {…} (2) Dựa vào hành vi boolean matches(String pattern) lớp String String s = textfield.getText(); if (s.matches(“^\\w+”)==false) {…} else {…} (3) Xuất thông báo javax.swing.JOptionPane.showMessageDialogBox(this,”Thông báo”); Assignment 4: Swing Menu Components Viết chương trình chọn mầu cho học sinh lớp - Muốn nút lệnh chữ: xóa property text - Chọn mầu cho nút lệnh: chọn thuộc tính background Chọn ảnh cho nút lệnh: thuộc tính icon/ Image Source Type = File/ chọn file.jpg/.gif Muốn lấy mầu nút: java.awt.Color color= btn.getBackGround(); - Cần biến boolean back=true; để quản lý tô mầu hay mầu chữ - Áp mầu cho text area: if (back==true) txt.setBackground(color); else txt.setForeground(color); Assignment 5: Swing Advanced Controls Viết chương trình cho phép tìm kiếm chuyến bay dựa thông tin: ga (from), ga đến (to), loại ghế (option) Dữ liệu liên quan đến toán ( ứng với lớp phải xây dựng) bao gồm: Thông tin chuyến bay FlightInfo (from,to,flightName,option,price) Thông tin chuyến bay FlightList Sau tạo GUI để tương tác Lớp mô tả cho chuyến bay: Bước 4: Tạo tập tin MakeStub.bat, chạy tập tin để có stub class Bước 5: Tạo Client class GUI Biến thêm Quản lý kiện user kích nút Reset Xóa trống text fields Quản lý kiện user kích nút Submit Chạy ứng dụng - Tạo runServer.bat runClient.bat - Chạy runServer.bat trước chạy runClient.bat sau Kết qủa Server Client Assignment 9: JavaMail Tạo ứng dụng Java sử dụng Java Mail cho phép user gửi email đến số người, cho phép đính kèm tập tin Người gửi phải nhập địa địa vào From, địa bác sĩ vào ô To phân cách địa ‘;’ ‘,’ Người gửi nhập Subject Content vào ô tương ứng Nếu người dùng muốn attach tập tin kích nút Attach Khi user kích nút Send, thư gửi Tình trạng thành công/ thất bại trình gửi thông báo cho người dùng Chú ý: Để chạy chương trình này, user phải kết nối internet Xem mẫu đĩa CD giáo trình môn học Bài nên phát triển theo hướng linh động hóa phép người dùng: - Nhập vào mail server host - Port mail server - Tùy biến mail server có sử dụng chế Authentication hay không - Địa người gửi (from) - Các địa người nhận : TO, CC, BCC - Chủ đề (subject) - Các tập tin cần attach - Thân (body) thư ( Tham khảo GUI đây) Kiến trúc ứng dụng MyAuthenticator.java : Lớp mô tả cho account mail server có sử dụng chế authentication SendingMail.java : Lớp mô tả cho ứng dụng gửi thư Bước 1: Tạo project Bước 2: Add thư viện Java Mail Bước 2: Copy tập tin jar vào thư mục lib/ext JRE để máy ảo sử dụng lớp dùng việc gửi thư Bước 2: Thêm file: MyAuthenticator.java Bước 3: Thêm file SendingMail.java Import lớp Khi user kích checkbox Account Request Khi user kích nút Select File Hành vi kiểm tra host, port, from Khi user kích nút Send Bước 4: Biên dịch Bước 5: Đóng gói để có file.jar Kết qủa NetBeans để thư mục dist (distribution- phân phối – User cần chép nội dung thư mục để chạy ứng dụng) Bước 6: Tạo tập tin bat để thư mục dist Bước 7: Chạy chương trình : Kích đôi vào tập tin bat Bài đọc thêm properties gửi thư Đọc thư mục NetBeans Đọc cuối tập tin Có khai báo Keys properties gửi thư thông thường Package com.sun.mail.smtp Name Type Description mail.smtp.user String Default user name for SMTP mail.smtp.host String The SMTP server to connect to mail.smtp.port int The SMTP server port to connect to, if the connect() method doesn't explicitly specify one Defaults to 25 mail.smtp.connectiontimeout int Socket connection timeout value in milliseconds Default is infinite timeout mail.smtp.timeout int Socket I/O timeout value in milliseconds Default is infinite timeout String Email address to use for SMTP MAIL command This sets the envelope return address Defaults to msg.getFrom() or InternetAddress.getLocalAddress() NOTE: mail.smtp.user was previously used for this String Local host name used in the SMTP HELO or EHLO command Defaults to InetAddress.getLocalHost().getHostName() Should not normally need to be set if your JDK and your name service are configured properly String Local address (host name) to bind to when creating the SMTP socket Defaults to the address picked by the Socket class Should not normally need to be set, but useful with multi-homed hosts where it's important to pick a particular local address to bind to mail.smtp.from mail.smtp.localhost mail.smtp.localaddress Local port number to bind to when creating the SMTP socket Defaults to the port number picked by the Socket class mail.smtp.localport int mail.smtp.ehlo If false, not attempt to sign on with the EHLO command Defaults to true Normally failure of the EHLO command will fallback to the HELO boolean command; this property exists only for servers that don't fail EHLO properly or don't implement EHLO properly mail.smtp.auth boolean If true, attempt to authenticate the user using the AUTH command Defaults to false mail.smtp.submitter String The submitter to use in the AUTH tag in the MAIL FROM command Typically used by a mail relay to pass along information about the original submitter of the message See also the setSubmitter method of SMTPMessage Mail clients typically not use this mail.smtp.dsn.notify String The NOTIFY option to the RCPT command Either NEVER, or some combination of SUCCESS, FAILURE, and DELAY (separated by commas) mail.smtp.dsn.ret String The RET option to the MAIL command Either FULL or HDRS mail.smtp.allow8bitmime If set to true, and the server supports the 8BITMIME extension, text parts of messages that use the "quoted-printable" or "base64" encodings are boolean converted to use "8bit" encoding if they follow the RFC2045 rules for 8bit text mail.smtp.sendpartial If set to true, and a message has some valid and some invalid addresses, send the message anyway, reporting the partial failure with a boolean SendFailedException If set to false (the default), the message is not sent to any of the recipients if there is an invalid recipient address mail.smtp.sasl.realm String mail.smtp.quitwait If set to false, the QUIT command is sent and the connection is boolean immediately closed If set to true (the default), causes the transport to wait for the response to the QUIT command mail.smtp.reportsuccess If set to true, causes the transport to include an SMTPAddressSucceededException for each address that is boolean successful Note also that this will cause a SendFailedException to be thrown from the sendMessage method of SMTPTransport even if all addresses were correct and the message was sent successfully mail.smtp.socketFactory.class String The realm to use with DIGEST-MD5 authentication If set, specifies the name of a class that implements the javax.net.SocketFactory interface This class will be used to create SMTP sockets If set to true, failure to create a socket using the specified socket factory mail.smtp.socketFactory.fallback boolean class will cause the socket to be created using the java.net.Socket class Defaults to true mail.smtp.socketFactory.port int mail.smtp.mailextension String Specifies the port to connect to when using the specified socket factory If not set, the default port will be used Extension string to append to the MAIL command The extension string can be used to specify standard SMTP service extensions as well as vendor-specific extensions Typically the application should use the SMTPTransport method supportsExtension to verify that the server supports the desired service extension See RFC 1869 and other RFCs that define specific extensions mail.smtp.starttls.enable If true, enables the use of the STARTTLS command ( Starting Transport Layer Security-if supported by the server) to switch the connection to a boolean TLS-protected connection before issuing any login commands Note that an appropriate trust store must configured so that the client will trust the server's certificate Defaults to false mail.smtp.userset If set to true, use the RSET command instead of the NOOP command in the isConnected method In some cases sendmail will respond slowly boolean after many NOOP commands; use of RSET avoids this sendmail issue Defaults to false [...]... giao tiếp Khi lập trình Socket với ứng dụng có GUI, vì không thể biết lúc nào client giao tiếp với server nên ta cần định thời quét tìm client bằng cách sử dụng lớp javax.swing.Timer Cứ đúng thời hạn đã ấn định, một sự kiện ActionEvent sẽ xẩy ra và chúng ta có thể bẫy sự kiện này để xử lý Cú pháp tạo đối tượng timer như sau: import javax.swing.*; import java.awt .event. * …… int delayTime=500; ActionListener... để có stub class Bước 5: Tạo Client class GUI Biến thêm Quản lý sự kiện khi user kích nút Reset Xóa trống 2 text fields Quản lý sự kiện khi user kích nút Submit Chạy ứng dụng - Tạo runServer.bat và runClient.bat - Chạy runServer.bat trước rồi chạy runClient.bat sau Kết qủa Server Client Assignment 9: JavaMail Tạo một ứng dụng Java sử dụng Java Mail cho phép user gửi email đến một số người, cho phép... lstResults Các sự kiện cần quản lý User kích chọn 1 ga đi actionEvent User kích chọn nút Exit actionEvent User kích chọn nút Search actionEvent Tác vụ thêm Khởi tạo danh sách các chuyến bay Xuất kết qủa tìm kiếm vào listbox lstResults Assignment 6: Internationalization Để làm bài này, cần thay đổi font của System về font Unicode cho thanh tiều đề của cửa sổ như sau: (1) Kích phải màn hình Desktop/... thành viên Assignment 7: Networking Tạo ứng dụng chạy trên mạng cho phép học sinh gửi nội dung một file trả lời về server dựa trên IP của server Tại ứng dụng server, khi user kích nút Start, user được yêu cầu nhập vị trí cho việc lưu file do client chuyển đến Khi server nhận được file từ client, trên textfield sẽ xuất hiện dòng thông báo là client đã gửi file Sử dụng TCP Socket TCP socket truyền thông... java.awt .event. * …… int delayTime=500; ActionListener taskPerformer = new ActionListener() // package java.awt .event { public void actionPerformed(ActionEvent evt) { processingConnection(); // gọi tác vụ xử lý khi đúng thời điểm } }; Timer tm=new Timer(delayTime, taskPerformer); tm.start(); Cấu trúc của ứng dụng ServerForm.java Giao diện: Các ảnh do bạn tự chọn hoặc không có ảnh cũng được Lớp ServerForm là giao... truyền và kích nút Send, nội dung tập tin sẽ được truyền sang server Server nhận dữ liệu và truyền lại thông báo đã nhận dữ liệu Assignment 8 : Remote Method Invocation Cấu trúc nên có của ứng dụng: Các bước xây dựng ứng dụng: Bước 1: Tạo Remote interface, biên dịch interface này Vì giao tiếp giữa client và server chỉ là kiểm tra cặp dữ liệu (username, password) do vậy interface này chỉ có một hành vi với... (5) Chọn Font: Tahoma Viết ứng dụng Java cho một công ty của Việt Nam (thay cho Pháp) giúp đổi tiền Để có giao diện đẹp hơn, sửa GUI như sau: Trong GUI trên, có 7 nội dung cần đổi và các tập tin properties phải phản ảnh 7 nội dung này Các file cần có: CurrencyInfo.java chứa khai báo lớp CurrencyInfo mô tả cho một loại tiền CurrencyList.java chứa khai báo lớp CurrencyList mô tả cho một danh sách các...Lớp mô tả cho 1 danh sách chuyến bay Lớp tạo GUI Tên các đối tượng trên form: Component Frame cbFrom cbTo rFirstClass rBusiness rExecutive lstResults property title layout font font font buttonGroup font buttonGroup font buttonGroup font Trị Flight Reservation null size=10 size=10 size=10 buttonGroup1 size=10 buttonGroup1 size=10 buttonGroup1 size=10 Dữ liệu cần có Danh sách các chuyến bay L Mô hình. .. English_us_US.properties: chứa các khai báo tiêu đề cho GUI tiếng Anh ConvertPrg.java: chứa lớp ConvertPrg là GUI của chương trình Bước 1: Tạo Project Module_6 Bước 2: Tạo class mô tả cho thông tin tiền tệ Mỗi loại tiền được mô tả bằng loại tiền (type), ký hiệu (symbol), và hệ số đổi một $US sang loại tiền này Để tạo cơ chế so sánh tự động theo loại tiền (type) dùng trong lớp CurrencyList-danh sách... Người gửi có thể nhập Subject và Content vào các ô tương ứng Nếu người dùng muốn attach một tập tin thì kích nút Attach Khi user kích nút Send, thư này sẽ được gửi đi Tình trạng thành công/ thất bại của quá trình gửi được thông báo cho người dùng Chú ý: Để chạy chương trình này, user phải kết nối internet Xem bài mẫu trong đĩa CD giáo trình môn học ... trình ứng dụng sau: 1- Viết code tạo GUI (nhiều công cụ có công cụ trực quan để user tạo GUI) 2- Dự kiến kiện cần quản lý 3- Viết code xử lý kiện 4- Biên dịch Việc đưa code quản lý kiện vào ứng dụng. .. Tham khảo GUI đây) Kiến trúc ứng dụng MyAuthenticator.java : Lớp mô tả cho account mail server có sử dụng chế authentication SendingMail.java : Lớp mô tả cho ứng dụng gửi thư Bước 1: Tạo project... Socket với ứng dụng có GUI, biết lúc client giao tiếp với server nên ta cần định thời quét tìm client cách sử dụng lớp javax.swing.Timer Cứ thời hạn ấn định, kiện ActionEvent xẩy bẫy kiện để xử