Thứ Năm, 4 tháng 9, 2014

Java Web Technologies


Hiện tại trên thị trường có rất nhiều công nghệ Java được sử dụng nhằm phát triển websites. Sau đây là những công nghệ đó: 

Java Servlet
Java Servlet cho phép bạn tạo ra các classes mà có thể xử lý được giao thức HTTP. Một class servlet có thể mở rộng được khả năng của server của một ứng dụng mà sử dụng mô hình request-response rất phổ biến trong ứng dụng web. Một Servlet chạy trên phía server mà không cần GUI hay HTML UI của riêng nó. Ví dụ như là bạn có thể sử dụng một servlet để nhập vào 1 chuỗi ở 1 textbox và in nó ra màn hình dưới dạng HTML... 
Dưới đây là một class servlet nhằm hiển thị các show truyền hình ra giao diện Web dưới định dạng HTML:
import java.io.*;
import java.text.SimpleDateFormat;
import javax.servlet.*;
import javax.servlet.http.*;

public class ScheduleServlet extends HttpServlet {
    public void doGet(HttpServletRequest request //request của người dùng,
            HttpServletResponse response //response từ server) throws IOException,
            ServletException {

        SimpleDateFormat dateFmt = new SimpleDateFormat("hh:mm a");

        Show[] shows = Schedule.getInstance().getTodaysShows( ); //lấy cac show truyền hình ra 

        response.setContentType("text/html");
        PrintWriter pw = response.getWriter( );
        pw.println("<html><head><title>Today's Shows</title></head><body>");
        pw.println("<h1>Today's Shows</h1>");
        pw.println("<table border=\"1\" cellpadding=\"3\"");
        pw.println(" cellspacing=\"0\">");

        pw.println("<tr><th>Channel</th><th>From</th>");
        pw.println("<th>To</th><th>Title</th></tr>");

        for (int i=0; i<shows.length; i++) {
            pw.println("<tr>");
            pw.print("<td>");
            pw.print(shows[i].getChannel( ));
            pw.println("</td>");
            pw.print("<td>");
            pw.print(dateFmt.format(shows[i].getStartTime( )));
            pw.println("</td>");
            pw.print("<td>");
            pw.print(dateFmt.format(shows[i].getEndTime( )));
            pw.println("</td>");
            pw.print("<td>");
            pw.print(shows[i].getTitle( ));
            pw.println("</td>");
            pw.println("</tr>");
        }
        pw.println("</table>");
        pw.println("</body>");
        pw.println("</html>"); 
Tất cả các dòng lệnh print() ở đây có vẻ ít vì tính chất đơn giản của trang web chỉ là hiển thị ra thông tin của các show truyền hình, nhưng 1 trang web thực tế sẽ phải có hàng nghìn dòng print() và kết quả là lập trình viên sẽ gặp khó khăn trong việc duy trì và phát triển trang web của mình. Graphic designer sẽ khó có thể tham gia vào quá trình tạo UI cho trang web vì phải phụ thuộc vào lập trình viên để tạo và chỉnh sửa code. Mỗi thay đổi code nhỏ cũng cần phải complie, test và deploy lại.

JavaServer Pages (JSP)
Công nghệ JSP cho phép bạn tạo 1 trang web động một cách nhanh chóng và đơn giản. Thay vì chèn code HTML vào Java servlets, JSP cho phép chúng ta bắt đầu từ chính trang HTML tĩnh. Chúng ta có thể thêm các thể HTML ngay trên trang. 
Sau đây là ví dụ cải tiến của trang web hiển thị các show truyền hình trên khi sử dụng JSP
Schedule.jsp
 <%@ page import="java.text.*" %>
<%! SimpleDateFormat dateFmt = new SimpleDateFormat("hh:mm a"); %>
<html>
  <head>
    <title>Today's Shows</title>
  </head>
<body>
<h1>Today's Shows</h1>
<% Show[] shows = Schedule.getInstance().getTodaysShows( ); %>
<table border="1" cellpadding="3" cellspacing="0">
  <tr><th>Channel</th><th>From</th><th>To</th><th>Title</th></tr>

  <% for (int i=0; i<shows.length; i++) { %>
  <tr>
    <td><%= shows[i].getChannel( ) %></td>
 <td><%= dateFmt.format(shows[i].getStartTime( )) %></td>
 <td><%= dateFmt.format(shows[i].getEndTime( )) %></td>
 <td><%= shows[i].getTitle( ) %></td>
  </tr>
  <% } %>
</table>
</body>
</html>
    Schedule.jsp là 1 trang HTML với các nội dung động được gói trong các thẻ đặc biệt của JSP (<% %>). Khi người dùng lần đầu request một trang JSP, toàn bộ trang sẽ được biên dịch sang source code của 1 servlet và sau đó được tải vào bộ nhớ để dùng cho những request tiếp theo. Trong quá trình biên dịch các thẻ JSP (ở đây là <% %>) sẽ được thay thế bằng những dữ liệu động (ở đây là thông tin các show truyền hình) và hiển thị dưới dạng HTML như thể toàn bộ trang là HTML tĩnh. 
    Performance của JSP tốt hơn khá nhiều so với Servlet bởi vì nội dung HTML tĩnh của JSP được tạo ra từ chính thẻ HTML thay thế một chuỗi các dòng lệnh print() của servlet. Performance của JSP sẽ chậm 1 chút khi người dùng lần đầu tiên visit trang bởi nó sẽ phải biên dịch code. Tuy nhiên, JSP cung cấp các tùy chọn cho việc biên dịch trước nhằm tránh việc này xảy ra.

    JavaServer Pages Standard Tag Library
    JavaServer Pages Standard Tag Library bao gói các chức năng phổ biến của công nghệ JSP. Thay vì trộn thẻ từ nhiều nhà cung cấp trong các ứng dụng của bạn, bạn sử dụng một thư viện thẻ tiêu chuẩn nhất định. 
    JavaServer Faces Technology
    JavaServer Faces là một UI framework nhằm phát triển ứng dụng web. Thành phần chính của nó bao gồm các GUI component framework, và đặc biệt là bộ RenderKit nhằm tạo ra các HTML markup. 
    JavaServer Faces tận dụng khả năng drag-and-drop các GUI components, cho phép bạn sử dụng công nghệ này mà không cần thiết phải viết hay hiểu code nền bên dưới.

    Không có nhận xét nào:

    Đăng nhận xét