Quá trình đăng lời bình luận

Một phần của tài liệu Tiểu luận môn điện toán lưới và đám mây TRIỂN KHAI WEBSITE TRÊN GOOGLE APP ENGINE (Trang 29)

Trong ứng dụng Photofeed, dưới mỗi lời bình luận cuối cho mỗi hình là một trường kiểu text area có nhãn là Post a comment . Người dùng đã đăng nhập có thể nhập một lời bình luận trong hộp nhập liệu và click Post comment để lưu lời bình luận lại chính vì vậy những lời bình luận này sẽ ở phía dưới hình. Sơ đồ 2.2 chỉ ra quá trình cho việc upload lời bình luận.

Trong quá trình POST lời bình luận, yêu cầu POST lời bình luận được gửi đến servlet đang chạy tại URL từ ConfigManager, trong trường hợp này là /post. Trong file web.xml, chúng ta ánh xạ các servlets tới các URL, chúng ta thấy CommentPostServlet yêu cầu POST tới URL này.

CommentPostServlet tạo ra đối tượng Comment chứa lời bình luận từ yêu cầu với photo ID và dữ liệu khác và lưu đối tượng này tới datastore

Khi người dùng click vào nút Post a comment thì chương trình sẽ gọi đến thủ tục toggleCommentPost().

Đường dẫn /photo-sharing-demo/war/photofeed.jsp giải thích rõ hơn về quá trình đăng lời bình luận.

<div class="comment"> <h3><%=

ServletUtils.getProtectedUserNickname(currentUser.getNickname()) %></h3> <form action="<%= configManager.getCommentPostUrl() %>" method="post">

<input type="hidden" name="user" value="<%= photo.getOwnerId()%>" />

<input type="hidden" name="id" value="<%= photo.getId()%>" />

<textarea id="comment-input-<%= count %>" class="post- comment collapsed" name="comment"

placeholder="Post a comment" onclick="toggleCommentPost(< %= count%>, true)"></textarea>

<input id="comment-submit-<%= count %>" class="inactive btn" style="display:none"

type="submit" name="send" value="Post comment"> <a id="comment-cancel-<%= count %>" class="cancel" style="display:none"

onclick="toggleCommentPost(<%= count %>, false)">Cancel</a>

</form> </div>

Trong đoạn code JSP ở trên, tên người dùng được hiển thị trong form. Chú ý ID của người chủ sở hữu hình và ID của hình được gửi sau chuỗi truy vấn POST ẩn đi, ngăn các giá trị thay đổi không thích hợp

ID hình ảnh, lời bình luận và người chủ sở hữu hình được gửi đến URL và được lưu trữ trong ConfigManager, nằm trong /upload. Chúng ta biết rằng mỗi servlet được ánh xạ đến URL in trong file /war/WEB-INF/web.xml. Chúng ta thấy rằng servlet kiểm soát POST có tên là CommentPostServlet:

<servlet-mapping>

<servlet-name>CommentPostServlet</servlet-name> <url-pattern>/post</url-pattern>

</servlet-mapping

CommentPostServlet lấy các giá trị tham số yêu cầu cho ID hình, lời bình luận, người đăng hình và gán chúng cho đối tượng Comment để cung cấp cho đối tượng

CommentManager để lưu lời bình luận tới datastore. Quá trình này được xử lý trong CommentPostServlet

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException {

AppContext appContext = AppContext.getAppContext(); DemoUser currentUser = appContext.getCurrentUser(); String id = req.getParameter(ServletUtils.REQUEST_PARAM_NAME_PHOTO_ID); String user = req.getParameter(ServletUtils.REQUEST_PARAM_NAME_PHOTO_OWNER_ID); String content = req.getParameter(ServletUtils.REQUEST_PARAM_NAME_COMMENT); boolean succeeded = false;

Long photoId = ServletUtils.validatePhotoId(id); StringBuilder builder = new StringBuilder();

if (photoId != null && currentUser != null && user != null && content != null) {

content = content.trim(); if (!content.isEmpty()) {

PhotoManager photoManager = appContext.getPhotoManager(); Photo photo = photoManager.getPhoto(user, photoId);

if (photo != null) {

CommentManager commentManager = appContext.getCommentManager(); Comment comment = commentManager.newComment(currentUser.getUserId()); comment.setPhotoId(photoId); comment.setPhotoOwnerId(user); comment.setTimestamp(System.currentTimeMillis()); comment.setContent(content); comment.setCommentOwnerName(currentUser.getNickname()); commentManager.upsertEntity(comment); succeeded = true; } else

Trong đoạn code ở trên, chú ý đến việc sử dụng lớp ServletUtils.java để lưu tên tham số yêu cầu. Chú ý đến AppContext để lấy dữ liệu ngữ cảnh, như là người sử dụng hiện tại, PhotoManagerCommentManager được sử dụng trong session này để truy xuất đến những lời bình luận và hình trong các mô hình dữ liệu

Nếu lời bình luận được thêm thành công, người dùng chuyển hướng đến trang chính vừa mới thêm hình.

if (succeeded) { res.sendRedirect(appContext.getPhotoServiceManager().getRedirectUrl( req.getParameter(ServletUtils.REQUEST_PARAM_NAME_TARGET_URL), user, id)); } else { res.sendError(400, builder.toString()); } 2.4.Triển khai ứng dụng

Để upload code và các file chương trình của bạn lên Google App Engine ta dùng một tập lệnh có trong SKD có tên: appcfg.cmd

Cần chuẩn bị:

Đưa ID vào ứng dụng:

Cần 1 ID application đã được đăng ký trên google để upload ứng dụng, theo như cách đăng ký phần trên, ta có được ID application là : tran-duy

Ta vào thưc mục war/WEB-INF/appengine-web.xml mở file appengine-web.xml lên, đặt ID application vào giữa thẻ <application> </application> rồi save lại như hình 2.1

Hình 2.1 cấu trúc file appengine-web.xml

Bắt đầu upload:

Sau đó giải nén ra ổ D ta được D:\appengine-java-sdk, mở cmd ta gõ: D: // Chuyển về ổ D

Gõ: D:\\appengine-java-sdk\bin\appcfg.cmd update D:\photo-sharing-demo-1.2\war để upload như hình 2.2

Hình 2.2 Minh họa việc upload ứng dụng

Điền mail và pass nếu chương trình hỏi, và upload thành công như hình 2.3

2.5 Hiện thực chương trình

Yêu cầu phải có internet và truy cập vào địa chỉ

http:// tran-duy .appspot.com/

Hình trên là giao diện chính của ứng dụng . Có thể ko đăng nhập cũng được nhưng người khác không biết ta là ai.Vì vậy yêu cầu nên đăng nhập trước khi viết bình luận

Cứ như vậy khi thành viên vào sau sẽ thấy nội dung người viết trước và có thể viết những phản hồi.về hình thức các bạn thấy ứng dụng như một diễn đàn hay blog.

Khi thiết kế websie hay viết các chương trình đòi hỏi phải tạo csdl và nơi lưu csdl . Còn đối với ứng dụng này ta không cần phải quan tâm đến csdl lưu ở đâu và truy vấn như thế nào .Bởi vì điều này đã có Google app engine làm .

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Đạt được:

- Đã xây dựng được ứng dụng dựa trên gói thư viện của google - Ứng dụng nhỏ gọn ,dễ sử dụng

Chưa đạt được:

- Vì điện toán đám mây là một đề tài lớn .đã và đang được nhiều ông lớn như google ,intel ,microsoft…. nghiên cứu và phát triển.cho nên trong thời gian ngắn chúng em chỉ có thể đáp ứng được yêu cầu của thầy đề ra ,chứ chưa có thể nào xây dựng một ứng dụng lớn cho công ty hay doanh nghiêp.

Hướng phát triển:

- Điện toán đám mây là một đề tài khá hay và mới mẻ huy vọng rằng qua sự hướng dẫn của thầy .Chúng em có thể tiếp tục phát triển lên làm đề tài tốt nghiệp

TÀI LIỆU THAM KHẢO

Tiếng Việt

[1] Lê Thu Thảo(2010), “nghiên cứu công nghệ điện toán đám mây”.

[2] Đỗ Thị Phương(2009), “ điện toán đám mây với microsoft azure và ứng dụng vào chương trình học từ tiếng anh”.

[3] Wikipedia tiếng Việt(tháng 4 năm 2014), “ điện toán đám mây”

Tiếng Anh

[3] Slide “Cloud Computing” PGS.TS Nguyễn Phi Khứ.

Một phần của tài liệu Tiểu luận môn điện toán lưới và đám mây TRIỂN KHAI WEBSITE TRÊN GOOGLE APP ENGINE (Trang 29)

Tải bản đầy đủ (DOC)

(38 trang)
w