Thứ Tư, 18 tháng 6, 2014

JSP - Java Server Pages

JSP - Java Server Pages


Jsp được sử dụng để tạo web động (dynamic web), trong ứng dụng web đa tầng (multi layered web app), JSP được sử dụng làm tầng trình diễn. Nó cũng có khả năng tương tác với tầng ứng dụng (application layer) và tạo ra web động dựa trên business logic.

Khi JSP được gọi lần đầu, nó được trình biên dịch phân tích và biên dịch thành servlet class. Nếu biên dịch thành công, jsp servlet class này sẽ được nạp vào bộ nhớ. Trong lần gọi tiếp theo, servlet clas này đã ở sẵn trong bộ nhớ, tuy nhiên nó có thể được update. Bởi vậy, trình biên dịch sẽ so sánh timestamp của jsp servlet với jsp. Nếu jsp mới hơn thì nó sẽ biên dịch lại. Vì vậy bạn có thể cảm thấy mỗi khi vào trang jsp lần đầu bao giờ cũng thấy chậm hơn các lần sau.

Vòng đời của JSP (Life circle)
1)    Translation: JSP được dịch thành JSP servlet với 3 phương thức: jspInit(), _jspService() và jspDestroy(). VD: public class SimplePage_jsp extends HttpJspBase.
2)    Compilation: JSP servlet được biên dịch sang class

3)    Thực thi các phương thức init() và service() và chuyển về dạng html để hiển thị lên browser.



Một số thành phần của JSP:

 -JSP Scripting Elements được viết bên trong <code> <%%> </ code>. Các mã bên trong <code> <%%> </ code> được xử lý bởi các công cụ JSP trong bản dịch của các trang JSP. Bất kỳ văn bản khác trong trang JSP được coi là HTML hoặc văn bản đơn giản.

-Comment : JSP comment được sử dụng khi bạn đang tạo một trang JSP và muốn đưa vào bình luận về những gì bạn đang làm. JSP comment ​​chỉ nhìn thấy trong trang JSP. Những ý kiến ​​không có trong mã nguồn servlet trong giai đoạn dịch, cũng không xuất hiện trong các phản ứng HTTP. Cú pháp của JSP bình luận như sau : <%-- JSP comment --%> 

  -Declaration : Chúng ta biết rằng ở cuối một trang JSP sẽ được dịch sang lớp Servlet. Vì vậy, khi chúng ta khai báo một biến hoặc các phương thức trong JSP bên trong Declaration Tag  , nó có nghĩa là declaration được thực hiện bên trong lớp Servlet nhưng ngoài phương thức dịch vụ. Bạn có thể khai báo thành viên tĩnh và phương thức trong Declaration Tag. Cú pháp của Declaration Tag : <%! declaration </ i>%>

<%@page import="java.util.Calendar"%>
<%!
    String getSystemTime() {
        return Calendar.getInstance().getTime().toString();
    }
%>

<%
    out.println("Current Time: " + getSystemTime());
%>

  -Expression Language : Expression Language (EL) đã được thêm vào JSP 2,0 . Mục đích của EL là để sản xuất scriptless trang JSP. Cú pháp của EL trong một JSP như sau: <% = JavaExpression%>

  -Scriptlet Tag : Scriptlet Tag cho phép bạn viết mã java trong trang JSP. Cú pháp của Scriptlet Tag như sau :<% <i> mã java </ i>%>

 -Directive Tag : Directive Tag  xung cấp nhứng hướng dẫn đặc biệt cho container Web tại thời điểm trang dịch. Directive tag có 3 loại : page, include and taglib


Attribute
Kiểu giá trị
Giá trị mặc định
language
Scripting language name
"java"
info
String
Depends on the JSP container
contentType
MIME type, character set
"text/html;charset=ISO-8859-1"
extends
Class name
None
import
Fully qualified class name or package name
None
buffer
Buffer size or false
8192
autoFlush
Boolean
"true"
session
Boolean
"true"
isThreadSafe
Boolean
"true"
errorPage
URL
None
isErrorPage
Boolean
"false"
 
VD: errorPage
Đây là trang web phát sinh lỗi. Khi phát sinh lỗi sẽ gọi đến trang errorPage.jsp (directive của trang này phải đặt là isErrorPage = true)


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

Đăng nhận xét