Máy ứng dụng của Google cho Java: Phần 2: Xây dựng ứng dụng sát thủ pot

40 308 0
Máy ứng dụng của Google cho Java: Phần 2: Xây dựng ứng dụng sát thủ pot

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Máy ứng dụng của Google cho Java: Phần 2: Xây dựng ứng dụng sát thủ Xây dựng ứng dụng quản lý liên hệ riêng của bạn trong Máy ứng dụng Rick Hightower , Giám đốc, eBlox Tóm tắt: Toàn bộ ý nghĩa của một nền tảng đám mây giống như Máy ứng dụng của Google (Google App Engine) cho Java™ là ở chỗ có thể tưởng tượng, xây dựng và triển khai các ứng dụng sát thủ có chất lượng chuyên nghiệp có thể mở rộng — không phải phá sản ngân hàng hoặc biến mình thành người mất trí. Trong phần thứ hai của bài viết ba phần của mình giới thiệu về Máy ứng dụng của Google cho Java, Rick Hightower sẽ đưa bạn vượt ra ngoài các ví dụ làm sẵn của Phần 1 bằng một hướng dẫn từng bước để viết và triển khai một ứng dụng quản lý liên hệ đơn giản bằng cách sử dụng Máy ứng dụng cho Java. Trong Phần 1 của bài giới thiệu này về xây dựng các ứng dụng Java có khả năng mở rộng với Máy ứng dụng (App Engine) cho Java, bạn đã tìm hiểu bộ công cụ Eclipse và cơ sở hạ tầng của nền tảng điện toán đám mây của Google (hay PAAS) cho các nhà phát triển Java. Các ví dụ trong bài viết đã có sẵn, để cho bạn có thể tập trung vào việc tích hợp Máy ứng dụng cho Java với Eclipse và nhanh chóng thực hành xây dựng và triển khai các kiểu ứng dụng khác nhau — cụ thể là xây dựng một ứng dụng bằng cách sử dụng Bộ công cụ Web của Google (Google Web Toolkit - GWT) và một ứng dụng dựa trên servlet. Bài viết này xây dựng trên nền tảng đó và cũng chuẩn bị cho bạn các bài tập lập trình nâng cao hơn trong Phần 3 của bài viết này. Ứng dụng quản lý-liên hệ mà bạn sẽ xây dựng cho phép một người sử dụng lưu trữ thông tin liên hệ cơ bản như tên, địa chỉ thư điện tử (e-mail) và số điện thoại. Để tạo ứng dụng này, bạn sẽ sử dụng trình thủ thuật tạo dự án GWT của Eclipse. Từ CRUD đến liên hệ Bước đầu tiên để xây dựng một ứng dụng mới trong Máy ứng dụng cho Java, bây giờ như bạn biết, là khởi chạy trình thủ thuật tạo dự án trong Eclipse. Khi đó, bạn có thể khởi chạy trình thủ thuật bộ khởi động dự án GWT để tạo ra một dự án GWT. (Phần 1 của bài viết này trình bày các chỉ dẫn chi tiết để tạo một dự án GWT trong Máy ứng dụng cho Java.) Để thực hiện bài tập này, bạn sẽ bắt đầu bằng một ứng dụng CRUD đơn giản và sau đó thêm kho lưu trữ thực. Bây giờ, hãy sử dụng một đối tượng truy cập dữ liệu (DAO) với triển khai thực hiện giả, như thấy trong Liệt kê 1: Liệt kê 1. Giao diện với ContactDAO package gaej.example.contact.server; import java.util.List; import gaej.example.contact.client.Contact; public interface ContactDAO { void addContact(Contact contact); void removeContact(Contact contact); void updateContact(Contact contact); List<Contact> listContacts(); } ContactDAO thêm các phương thức để thêm một mối liên hệ, loại bỏ một mối liên hệ, cập nhật một mối liên hệ và trả về một danh sách tất cả các mối liên hệ. Nó là một giao diện CRUD rất cơ bản để quản lý các mối liên hệ. Lớp Contact (Liên hệ) là đối tượng miền của bạn, như thấy trong Liệt kê 2: Liệt kê 2. Đối tượng miền liên hệ (gaej.example.contact.client.Contact) package gaej.example.contact.client; import java.io.Serializable; public class Contact implements Serializable { private static final long serialVersionUID = 1L; private String name; private String email; private String phone; public Contact() { } public Contact(String name, String email, String phone) { super(); this.name = name; this.email = email; this.phone = phone; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } } Đối với phiên bản đầu tiên của ứng dụng này, bạn sẽ làm việc với một đối tượng giả, lưu trữ các mối liên hệ trong một bộ sưu tập nằm ngay trong bộ nhớ, như thấy trong Liệt kê 3: Liệt kê 3. Lớp DAO giả package gaej.example.contact.server; import gaej.example.contact.client.Contact; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; public class ContactDAOMock implements ContactDAO { Map<String, Contact> map = new LinkedHashMap<String, Contact>(); { map.put("rhightower@mammatus.com", new Contact("Rick Hightower", "rhightower@mammatus.com", "520-555- 1212")); map.put("scott@mammatus.com", new Contact("Scott Fauerbach", "scott@mammatus.com", "520-555- 1213")); map.put("bob@mammatus.com", new Contact("Bob Dean", "bob@mammatus.com", "520-555-1214")); } public void addContact(Contact contact) { String email = contact.getEmail(); map.put(email, contact); } public List<Contact> listContacts() { return Collections.unmodifiableList(new ArrayList<Contact>(map.values())); } public void removeContact(Contact contact) { map.remove(contact.getEmail()); } public void updateContact(Contact contact) { map.put(contact.getEmail(), contact); } } Tạo các dịch vụ từ xa Bây giờ mục tiêu của bạn là tạo ra một giao diện người dùng đồ họa GWT, cho phép bạn sử dụng DAO. Nó sẽ sử dụng tất cả các phương thức trên giao diện ContactDAO. Bước đầu tiên là bao bọc chức năng của lớp DAO (phiên bản tương lai sẽ thực sự trao đổi với kho lưu trữ dữ liệu trên phía máy chủ vì thế nó phải ở trên máy chủ) trong một dịch vụ, như cho thấy trong Liệt kê 4: Liệt kê 4. ContactServiceImpl package gaej.example.contact.server; import java.util.ArrayList; import java.util.List; import gaej.example.contact.client.Contact; import gaej.example.contact.client.ContactService; import com.google.gwt.user.server.rpc.RemoteServiceServlet; public class ContactServiceImpl extends RemoteServiceServlet implements ContactService { private static final long serialVersionUID = 1L; private ContactDAO contactDAO = new ContactDAOMock(); public void addContact(Contact contact) { contactDAO.addContact(contact); } public List<Contact> listContacts() { List<Contact> listContacts = contactDAO.listContacts(); return new ArrayList<Contact> (listContacts); } public void removeContact(Contact contact) { contactDAO.removeContact(contact); } public void updateContact(Contact contact) { contactDAO.updateContact(contact); } } Chú ý rằng ContactServiceImpl thực hiện RemoteServiceServlet và sau đó định nghĩa các phương thức để thêm một mối liên hệ, liệt kê các mối liên hệ, loại bỏ một mối liên hệ và cập nhật một mối liên hệ. Nó ủy quyền tất cả các hoạt động này cho ContactDAOMock. ContactServiceImpl chỉ là một trình bao bọc (wrapper) xung quanh ContactDAO để trưng ra chức năng của ContactDAO cho GUI GWT. ContactServiceImpl được ánh xạ trong tệp web.xml tới URI /contactlist/contacts trong tệp web.xml, như chỉ ra trong Liệt kê 5: Liệt kê 5. web.xml for ContactService <servlet> <servlet-name>contacts</servlet-name> <servlet-class>gaej.example.contact.server.ContactServiceImpl</servlet-class> </servlet> <servlet-mapping> <servlet-name>contacts</servlet-name> <url-pattern>/contactlist/contacts</url-pattern> </servlet-mapping> Để cho phép mặt trước GUI truy cập vào dịch vụ này, bạn cần phải định nghĩa cả hai giao diện dịch vụ từ xa và giao diện dịch vụ từ xa không đồng bộ, như hiển thị trong các Liệt kê 6 và 7: Liệt kê 6. ContactService package gaej.example.contact.client; import java.util.List; import com.google.gwt.user.client.rpc.RemoteService; import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; @RemoteServiceRelativePath("contacts") public interface ContactService extends RemoteService { List<Contact> listContacts(); [...]... ứng với các mã nhận dạng (ID) của các phần tử (như (like id="contactListing") được định nghĩa trong trang HTML Điều này cho phép một nhà thiết kế trang có quyền kiểm soát nhiều hơn đối với cách bố trí các tiện ích của ứng dụng Với ứng dụng cơ bản đã xây dựng, chúng ta hãy đi qua một vài kịch bản sử dụng thông thường Hiển thị một danh sách khi nạp trang Khi trang của ứng dụng quản lý liên hệ nạp lần... này sẽ cho bạn một ý tưởng về cách ứng dụng làm việc, cũng như cách nó lấy ra cơ sở hạ tầng được Máy ứng dụng cho Java cung cấp như thế nào Mã đầy đủ của ContactListGUI được hiển thị trong Liệt kê 17: Liệt kê 17 Mã đầy đủ của ContactListGUI package gaej.example.contact.client; import java.util.List; import com .google. gwt.user.client.ui.Button; import com .google. gwt.user.client.ui.Grid; import com .google. gwt.user.client.ui.Hyperlink;... một @RemoteServiceRelativePath, chỉ rõ một đường dẫn tương đối của "các mối liên hệ" Đường dẫn tương đối này tương ứng với đường dẫn mà bạn đã định nghĩa cho dịch vụ này trong tệp web.xml (chúng phải khớp) ContactServiceAsync có các đối tượng gọi lại sao cho GWT GUI có thể được thông báo về các cuộc gọi từ máy chủ mà không chặn hoạt động của máy khách khác Đi tắt qua mã rối (spaghetti code) Tôi không... gaej.example.contact.client; import java.util.List; import com .google. gwt.user.client.ui.Button; import com .google. gwt.user.client.ui.Grid; import com .google. gwt.user.client.ui.Hyperlink; import com .google. gwt.user.client.ui.Label; import com .google. gwt.user.client.ui.RootPanel; import com .google. gwt.user.client.ui.TextBox; import com .google. gwt.user.client.ui.HTMLTable.Cell; public class ContactListGUI... xử lý các sự kiện từ GUI và Service (Dịch vụ) ContactListGUI sử dụng ContactServiceDelegate để tạo ra các yêu cầu của ContactService Tệp ContactList.gwt.xml (một nguồn tài nguyên trong gaej.example.contact) chỉ rõ ContactListEntryPoint là điểm vào chính cho ứng dụng này bằng cách sử dụng phần tử entry-point (điểm vào) như chỉ ra trong Liệt kê 8: Liệt kê 8 ContactList.gwt.xml ... service_eventListRetrievedFromService lưu trữ danh sách các mối liên hệ do máy chủ gửi đi Sau đó, nó xóa contactGrid có hiển thị danh sách các mối liên hệ Nó định lại kích thước về số hàng để khớp với kích thước của danh sách các mối liên hệ được trả về từ máy chủ Sau đó nó lặp lại qua toàn bộ danh sách liên hệ, đưa tên, số điện thoại và e-mail của mỗi mối liên hệ vào ba cột đầu tiên của mỗi hàng Nó cũng cung cấp một đường liên... ContactListEntryPoint triển khai thực hiện giao diện EntryPoint từ GWT (com .google. gwt.core.client.EntryPoint), báo hiệu rằng lớp này sẽ được gọi để khởi tạo GUI ContactListEntryPoint không làm nhiều việc Nó tạo ra một cá thể của ContactListGUI và một cá thể của ContactServiceDelegate, và sau đó cho phép chúng biết về nhau để cho chúng có thể cộng tác ContactListEntryPoint sau đó thực hiện việc kết nối... ContactListEntryPoint được hiển thị trong Liệt kê 9: Liệt kê 9 ContactListEntryPoint package gaej.example.contact.client; import com .google. gwt.core.client.EntryPoint; import com .google. gwt.event.dom.client.ClickEvent; import com .google. gwt.event.dom.client.ClickHandler; import com .google. gwt.user.client.ui.HTMLTable.Cell; /** * Entry point classes define onModuleLoad() */ public class ContactListEntryPoint... thành ba phần:  ContactListEntryPoint  ContactServiceDelegate  ContactListGUI ContactListEntryPoint là điểm vào chính; nó thực hiện việc kết nối sự kiện GUI ContactServiceDelegate bao bọc chức năng ContactService và ẩn giấu việc kết nối các cuộc gọi lại của lớp bên trong ContactListGUI quản lý tất cả các thành phần GUI và xử lý các sự kiện từ GUI và Service (Dịch vụ) ContactListGUI sử dụng ContactServiceDelegate... thực hiện điều này bằng cách tìm hiểu xem cột nào được nhấn Sau đó nó sẽ che dấu addNewButton và addButton và làm cho thấy rõ updateButton updateButton hiển thị trong formGrid và cho phép người dùng gửi thông tin cập nhật quay trở về ContactService Nó cũng làm cho emailField chỉ đọc để cho người dùng không thể chỉnh sửa trường e-mail này Tiếp theo, gui_eventContactGridClicked gọi loadForm (như thấy . Máy ứng dụng của Google cho Java: Phần 2: Xây dựng ứng dụng sát thủ Xây dựng ứng dụng quản lý liên hệ riêng của bạn trong Máy ứng dụng Rick Hightower , Giám đốc,. khai một ứng dụng quản lý liên hệ đơn giản bằng cách sử dụng Máy ứng dụng cho Java. Trong Phần 1 của bài giới thiệu này về xây dựng các ứng dụng Java có khả năng mở rộng với Máy ứng dụng (App. hợp Máy ứng dụng cho Java với Eclipse và nhanh chóng thực hành xây dựng và triển khai các kiểu ứng dụng khác nhau — cụ thể là xây dựng một ứng dụng bằng cách sử dụng Bộ công cụ Web của Google

Ngày đăng: 07/08/2014, 10:22

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan