JavaServer Pages (JSP): là công nghệ giúp lập trình viên phát triển Web. Cụ thể hơn ở đây JSP giúp ta có thể chèn các đoạn code java vào trong các HTML page bằng việc sử dụng các JSP tag đặc biệt.
Theo cấu trúc của MVC, JSP có thể được dùng để miêu tả View của ứng dụng cùng với Servlets và Java beans. Java beans có thể implement các model của app còn Servlets được dùng để implement các controller.
***Lí do ta cần JSP:
- JSP thường hoạt động với cùng mục đích như các chương trình độc lập bởi sử dụng Common Gateway Interface (CGI). Nhưng JSP thường có một số lợi thế trong khi so sánh với CGI:
+ Hiệu năng tốt hơn đáng kể bởi vì JSP cho phép nhúng các phần tử động trong chính các HTML page thay vì phải có một CGI file riêng biệt.
+ JSP luôn luôn được biên dịch trước khi nó được xử lý bởi Server, không giống như CGI/Perl mà yêu cầu Server tải một trình thông dịch (Interpreter) và Target Script mỗi khi trang được yêu cầu.
+ JSP được xây dựng ở trên cùng của Java Servlet API, vì thế, giống Servlet, JSP cũng có quyền truy cập tới tất cả Enterprise Java APIs mạnh mẽ, bao gồm JDBC, EJB, JAXP, …
+ JSP được xây dựng ở trên cùng của Java Servlet API, vì thế, giống Servlet, JSP cũng có quyền truy cập tới tất cả Enterprise Java APIs mạnh mẽ, bao gồm JDBC, EJB, JAXP, …
- JSP là một phần toàn bộ của Java EE, một Platform đầy đủ cho các ứng dụng lớp Enterprise. Nghĩa là, JSP có thể hoạt động như là một phần trong các ứng dụng đơn giản nhất cũng như các ứng dụng phức tạp.
- Bên cạnh đó so với các công nghệ khác như ASP, JavaScript, Static HTML thì JSP đều có những điểm nổi trội hơn nhiều lần hoặc rất nhiều lần.
VD: So với HTML thông thường không thể chứa thông tin động thì ta có thể thấy ngay được sự khác biệt về đẳng cấp của JSP.
***Cấu trúc JSP:
- Web Server cần một JSP engine như Container để xử lý các JSP page. JSP container có nhiệm vụ chặn các Request cho các JSP page.
- Một JSP container làm việc với Web Server để cung cấp môi trường runtime và các dịch vụ khác mà một JSP cần đến. Nó biết cách để hiểu các phần tử đặc biệt mà là một phần của JSP.
- Tiến trình hoạt động của JSP:
+ Với một trang thông thường trình duyệt gửi một HTTP request tới Webserver.
+ Web server nhận ra rằng HTTP request là cho một JSP page và chuyển nó tới một JSP engine. Điều này được thực hiện bởi sử dụng một URL hoặc một JSP page mà kết thúc với .jsp thay vì .html.
+ JSP engine tải JSP page từ đĩa và biến đổi nó thành một nội dung Servlet. Sự biến đổi này là rất đơn giản, trong đó tất cả Template Text được biến đổi thành các lệnh printIn() và tất cả phần tử JSP được biến đổi thành Java code mà triển khai các hành vi động tương ứng của trang.
+ JSP engine biên dịch Servlet thành một lớp có thể thực thi và chuyển Request ban đầu tới một Servlet engine.
+ Một phần của Web server triệu hồi Servlet engine tải lớp Servlet và thực thi nó. Trong quá trình thực thi, Servlet này tạo một output trong định dạng HTML, mà Servlet engine truyền tới Web server bên trong một HTTP response.
+ Web server chuyển HTTP Response tới trình duyệt của bạn nội dung HTML tĩnh.
+ Cuối cùng, trình duyệt web xử lý trang HTML đã được tạo một cách năng động bên trong HTTP response một cách chính xác như kiểu nó là một trang tĩnh.
*** JSP Directive
- JSP directive cung cấp các chỉ dẫn và chỉ lệnh tới container để nói cho nó cách để xử lý các lệnh của tiến trình xử lý JSP. Nó thường có form <%@ directive attribute="value" %>.
- Có 3 loại thẻ directive trong JSP:
+ <%@ page ... %> : định nghĩa một thuộc tính page-dependent (phụ thuộc trang), như ngôn ngữ scripting, trang lỗi và các yêu cầu bộ đệm.
+ <%@ include ... %> : include một file trong suốt giai đoạn phiên dịch.
+ <%@ include ... %> : khai báo một thư viện thẻ, chứa các action tùy biến, được sử dụng trong trang đó.
- @pageDiractive JSP:
+ pageDirective trong JSP được sử dụng để cung cấp các chỉ lệnh tới container mà liên quan tới JSP page hiện tại. Bạn có thể mã hóa page directive bất cứ đâu trong JSP page của bạn. Theo qui ước, page directive được mã hóa tại trên cùng của JSP page.
+ form: <%@ page attribute="value" %>
- @include directive:
+ include Directive trong JSP được sử dụng để bao một file trong suốt giai đoạn phiên dịch. Directive này nói cho container sáp nhập content của file ngoại vi khác với JSP hiện tại trong quá trình phiên dịch. Bạn có thể mã hóa include directive bất cứ đâu trong JSP page.
+ Tên file trong include directive là một URL quan hệ thực sự. Nếu bạn chỉ xác định một tên file mà không có đường liên kết, thì JSP compiler giả sử rằng file đó là trong cùng thư mục như JSP của bạn.
+ form: <%@include = “/404.html” %>
- @taglib directive:
+ Java Server Pages API cho phép bạn định nghĩa các Custom Tags trong JSP, mà giống như các thẻ HTML hoặc XML và một thư việc thẻ (tag library) là một tập hợp các thẻ được định nghĩa bởi người sử dụng mà triển khai các hành vi tùy biến.
+ taglib directive khai báo rằng: JSP page của bạn sử dụng một tập hợp các Custom Tags, thông báo vị trí của thư viện, và cung cấp một phương thức để nhận diện các Custom Tags đó trong JSP page của bạn.
+form: <%taglib uri = “location of the library” prefix=”prefixOfTag” %>
***Processing Data Received from Servlets in JSPs:
Vòng đời của Servlet gần như tương tự JSP nhưng bổ sung thêm một bước biên dịch từ JSP => Servlet :
***JSP Standard Tag Library (JSTL):
- JavaServer Pages Standard Tag Library (JSTL) là một tập hợp các thẻ JSP hữu ích, mà gói các tính năng lõi phổ biến tới các ứng dụng JSP.
- JSTL hỗ trợ tới các tác vụ phổ biến và có tính cấu trúc, ví dụ như các tính lặp và điều kiện, các thẻ để thao tác tài liệu XML, các thẻ đa ngôn ngữ, và các thẻ SQL. Nó cũng cung cấp Framework để tích hợp các Custom Tags với các thẻ JSTL.
- Các thẻ JSTL có thể được phân loại, theo tính năng của nó, thành các nhóm thư viện thẻ JSTL sau, mà có thể được sử dụng khi tạo một JSP page:
+ Core Tags: Nhóm thẻ cơ bản.
+ Formatting tags: Nhóm thẻ định dạng.
+ SQL tags: Nhóm thẻ SQL.
+ XML tags: Nhóm thẻ XML.
+ JSTL Functions: Nhóm hàm JSTL.
- Core Tag:
+ Nhóm Core Tags là các thẻ JSTL được sử dụng phổ biến nhất. Sau đây là cú pháp đơn giản để bao thư viện JSTL Core trong JSP.
+ Categories : Variable support, Flow control, URL management, Miscellaneous
- XML Tag:
+ Nhóm XML Tags trong JSTL cung cấp một cách để tạo và thao tác các tài liệu XML. Thư viện thẻ XML Tags trong JSTL có các custom tags để tương tác với XML data. Điều này bao gồm việc parse XML, truyền tải XML data, và điều khiển dòng dữ liệu dựa trên các XPath Expression.
+ Categories : Core tags for XML, Flow control tags for XML, Transformation tags.
- Formatting Tag: Nhóm Formatting Tags trong JSTL được sử dụng để định dạng và hiển thị text, date, time và số ngôn ngữ trong Website.
- SQL Tag: Nhóm SQL Tags trong JSTL cung cấp các thẻ để tương tác với các Relational Database (RDBMSs), ví dụ như Oracle, MySQL, hoặc Microsoft SQL Server.
- JSTL Functions: JSTL bao gồm một số hàm chuẩn, mà hầu hết là các hàm thao tác chuỗi phổ biến.
***Unified Expression Language:
- JSP Epression Language (EL) giúp dễ dàng truy cập dữ liệu ứng dụng được lưu giữ trong các thành phần JavaBeans. JSP EL cho phép ta tạo các Expression, gồm số học và logic. Bên trong một JSP EL, ta có thể sử dụng các integer, các số floating point, string, các hằng có sẵn true hoặc false cho các giá trị Boolean, và null.
VD: <jsp:setProperty name="box" property="perimeter" value="100"/>
- Có 2 types hỗ trợ cho EL:
+ Method expressions: cho phép cách gọi của method để lấy các giá trị của các biểu thức cho các thành phần trong đó thẻ hiện đang đại diện.
+ Value expressions: là những nơi một giá trị được cung cấp một cách rõ ràng cho biểu thức. Có hai loại giá trị - Rvalue và Lvalues. Rvalues là những giá trị mà không thể sửa đổi và Lvalues có thể thay đổi được.
***Tổng kết
- Ưu điểm.
+ Cho phép chúng ta thiết kế giao diện web dễ dàng hơn.
+ Jsp có thể cho phép chúng ta tạo nên những trang web động.
+ Có thể viết một nơi và chạy bất cứ nơi nào.
- Nhược điểm
+ Nhìn chung thì việc thiết kế giao diện bằng JSP vẫn còn nhiều khó khăn.
+ Tiêu tốn dung lượng lưu trữ phía server gấp đôi.
+ Lần đầu tiên truy cập vào trang JSP sẽ mất nhiều thời gian chờ.
Không có nhận xét nào:
Đăng nhận xét