Thứ Ba, 1 tháng 7, 2014

Improved Implicit Object

JSP Implicit Object là gì?

JSP Implicit Object là các đối tượng của Java được chứa sẵn trong JSP Container giúp cho nhà phát triển trong mỗi trang JSP. Nhà phát triển có thể trực tiếp gọi mà không cần tốn công khai báo. Ngoài ra nó còn dùng để gọi các biến đã được khai báo.
Thế nhưng vấn đề ở đây là nó quá dài vào 
JSP hỗ trợ 9 Implicit Objects sau:


Thế nhưng vấn đề lại sinh ra rằng:

Đã khi nào bạn cảm thấy quá phức tạp, lằng nhằng khi phải gõ quá nhiều dòng mã cho việc thao tác với biến trong trang jsp chưa?

<% out.print(session.getAttribute("username"));%>

Dòng code trên đây là một ví dụ điển hình khi ta muốn show ra giá trị của một session (sử dụng object out). Bạn có thấy nó quá dài dòng về cú pháp vì thế dễ dẫn đến nhầm lẫn trong khi viết ?.

Giải pháp

Thay vì phải gõ dòng code chật vật như trên với khả năng nhầm lẫn cao, JSP đã làm sẵn cho ta một số đối tượng để chỉ việc lôi ra dùng một cách nhanh gọn nhằm giảm thiểu sự lằng nhằng, nhầm lẫn. Đó là các Expressions.

${sessionScope.username}

Ok. Bạn đang thắc mắc, khó hiểu làm sao lại thay bằng dòng code trên? OK mình sẽ giải thích cho các bạn, cứ yên tâm là nó very simple, cực kì đơn giản :v. Để dễ hiểu hơn ta lôi 2 dòng code trên xuống làm "CHUỘT BẠCH". 
            <% out.print(session.getAttribute("username"));%>
                                               &
                                ${sessionScope.username}


Ở trên ta sẽ thấy phần màu xanh nước biển ở dòng code trên sẽ có màu tương ứng với phần code dưới và có thêm chữ Scope. Phần chữ màu đỏ ở trên cũng chính là phần chữ màu đỏ ở dưới.

So sánh trên giúp ta hình dung ra được cách đơn giản hơn để nhúng code java vào trang JSP. 

Các Scope căn bản trong trang jsp là: 

- SessionScope: lấy ra đối tượng session.  Tồn tại trong một phiên làm việc.

- RequestScope: lấy ra đối tượng request. Thời gian tồn tại từ khi client gửi request cho đến khi server response.

- PageScope: Tồn tại trong phạm vi một trang.

- ApplicationScope: Tồn tại trong vòng đời của ứng dụng.

Bây giờ chúng ta sẽ làm một demo nho nhỏ biển diễn ứng dụng của những thứ trên .

Đầu tiên tạo một trang jsp với một form gồm 2 input một input có type="text" và một có type="submit" cho phép người dùng nhập vào thông tin về username. Sau đó hiển thị nó ra trong một trang JSP khác, sử dụng Implict



Tiếp đó ta tạo một trang jsp với tên là process và viết vào đó dòng code sau:
           <h1>
            <% 
                String username = request.getParameter("username");
                session.setAttribute("username", username);
                %>
        </h1>
        <a href="Result.jsp">Show</a>
========================================================================
Ở bước trên ta tiến hành lấy thông tin của input và tống nó vào trong session.

Tiếp đến ta tạo một trang JSP với tên là Result.jsp và  sẽ lấy thông tin của session và hiển thị ở đây.
Để hiển thị ta chỉ cần viết vào phần body của trang này các dòng code sau:

                                   <h1>Hello: ${sessionScope.username}</h1>

với username là tên của session đã khởi tạo ở trang process.jsp.

Như vậy là ta đã hoàn thành xong demo và hiểu hơn về Implicit Objects cũng như cách dùng của chúng.

Các bạn có thể Download source code ở đây.

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

Đăng nhận xét