Tổng quan về Jsp


JSP (viết tắt của tiếng Anh JavaServer Pages) còn được biết đến với một cái tên khác là Java Scripting Preprocessor – tạm dịch là “Bộ tiền xử lý văn lệnh Java” – là một công nghệ Java cho phép các nhà phát triển tạo nội dung HTML, XML hay một số định dạng khác của trang web một cách năng động, trong khi hồi âm yêu cầu của trình khách. Công nghệ này cho phép người ta nhúng mã Java và một số hành động xử lý đã được định trước (pre-defined actions) vào trong nội dung tĩnh của trang.
Cú pháp của JSP cho thêm các thẻ XML mới, gọi là JSP actions – hành động JSP. Những “hành động JSP” này được dùng để khởi động chức năng sẵn có, là những chức năng đã được xây dựng trước. Cộng thêm vào đó, công nghệ còn cho phép chúng ta tạo ra các thư viện thẻ JSP (JSP tag libraries), là những cái đóng vai trò vào việc mở rộng các thẻ HTML hay XML tiêu chuẩn. Thư viện thẻ (Tag libraries) là phương pháp mở rộng khả năng của một máy chủ web trong khi những mở rộng đó không phụ thuộc vào hệ nền (về cả cấu trúc máy cũng như hệ điều hành được dùng).
Trước khi hiển thị ra trình duyệt, tập tin JSP phải được biên dịch thành Servlet, dùng bộ biên dịch JSP (JSP compiler). Bộ biên dịch JSP có thể tạo servlet thành mã nguồn Java trước, rồi biên dịch mã nguồn ra tập tin .class dùng bộ biên dịch Java, hoặc có thể trực tiếp tạo mã byte code cho servlet từ trang JSP.
JSP và Servlet.

Về mặt kiến trúc mà nói, ta có thể xem JSP là một trừu tượng ở mức độ cao của servlet, một phần mở rộng thực thi của Servlet 2.1 API. Cả hai, servlet và, đều nguyên do công ty Sun Microsystems tạo dựng. Bắt đầu từ phiên bản 1.2 đặc tả của JSP, JavaServer Pages đã được xây dựng do Tiến trình cộng đồng Java (Java Community Process). JSR 53 – Java Specification Requests hay “Yêu cầu đặc tả cho Java” – định nghĩa bản đặc tả của cả hai, JSP 1.2 và Servlet 2.4, và JSR 152 định nghĩa bản đặc tả JSP 2.0. Tại thời điểm năm 2006 bản đặc tả JSP 2.1 được xây dựng trên nền của yêu cầu JSR 245.

Cú pháp JSP
Một trang JSP có thể được phân thành từng phần nhỏ như sau:
dữ liệu tĩnh, như HTML
các chỉ thị JSP (JSP directives) như chỉ thị include: <jsp:include>
các phần tử kịch bản JSP (scripting elements) và các biến (variables), ví dụ:
<% scriptlet %>
<%= expression %>
<%! declaration %>
hành động JSP (JSP actions)
thẻ tùy biến (custom tags)

Dữ liệu tĩnh
Vì dữ liệu tĩnh được viết ra trong phần hồi âm HTTP (HTTP response) cũng giống như nó được viết trong tập tin nhận vào (input file), cho nên dữ liệu nhập hợp lệ của JSP thường là một trang HTML bình thường, không có mã java hoặc hành động JSP nhúng trong đó. Với dữ liệu tĩnh này, bất cứ lúc nào trình chủ web hồi âm, trình chủ web cũng sẽ gửi cùng một dữ liệu sang trang trình khách.

Các chỉ phối JSP
Chỉ phối JSP (JSP directives) điều khiển cách mà bộ biên dịch JSP khởi tạo một servlet. Các chỉ phối hiện có được liệt kê như sau:
include – Chỉ phối include thông báo cho bộ biên dịch JSP cho nhập toàn bộ nội dung của một tập tin vào trong nội dung hiện có. Việc làm này tương tự như việc chúng ta lấy nội dung của tập tin đó dán trực tiếp vào trong nội dung của tập tin đang dùng. Tính năng này cũng tương tự như tính năng “#include” của Bộ tiền xử lý C (C preprocessor). Tập tin được nhập thường có đuôi mở rộng (extension) là “jspf” (do JSP Fragment (mảnh, đoạn) mà ra):

Trích:
<%@ include file=”somefile.ext” %>

page (Trang) – Có nhiều tùy chọn với chỉ phối page.
import Kết quả là câu lệnh import của Java được chèn vào trong tập tin.
contentType Chỉ định nội dụng của tập tin được khởi tạo. Chúng ta nên dùng chỉ phối này nếu chúng ta không dùng HTML, hoặc bộ ký tự (character set) được dùng không phải là bộ ký tự mặc định.
errorPage Chỉ định rằng trang web sẽ được hiển thị nếu có một ngoại lệ (exception) xảy ra trong quá trình xử lý yêu cầu HTTP.
isErrorPage Nếu định giá trị là true thì nó nói rằng trang này là trang báo lỗi (error page).
isThreadSafe Chỉ định cho biết servlet tạo ra có tính an toàn về luồng xử lý (threadsafe) hay không.

Trích:
<%@ page import=”java.util.*” %> //example import
<%@ page contentType=”text/html” %> //example contentType
<%@ page isErrorPage=false %> //example for non error page
<%@ page isThreadSafe=true %> //example for a thread safe JSP

Chú ý: Chỉ có chỉ phối trang “import” là có thể được dùng nhiều lần trong cùng một trang JSP.
taglib – Chỉ phối taglib thông báo rằng chúng ta sẽ sử dụng một thư viện thẻ JSP (JSP tag library). Chỉ phối này đòi hỏi một tiền tố (prefix) (tương tự như namespace trong C++), cũng như kết nối URI của phần mô tả thư viện thẻ (URI for the tag library description) phải được xác định.

Trích:
<%@ taglib prefix=”myprefix” uri=”taglib/mytag.tld” %>

Các thành phần trong văn lệnh JSP và các biến

Các biến văn lệnh tiêu chuẩn
Các biến văn lệnh (scripting variables) sau có thể dùng lúc nào cũng được:
out (xuất) – JSPWriter sử dụng nó để ghi dữ liệu vào luồng dữ liệu hồi âm (response stream).
page (trang) – Bản thân servlet.
pageContext (ngữ cảnh của trang) – Một PageContext là một thực thể có chứa dữ liệu liên kết với toàn bộ trang web. Một trang HTML nào đấy có thể được truyền qua nhiều trang JSP.
request (yêu cầu) – Đối tượng yêu cầu HTTP.
response (hồi âm) – Đối tượng hồi âm HTTP.
session (phiên giao dịch) – Đối tượng phiên giao dịch HTTP. Cái này có thể được dùng để theo dõi tin tức về một người dùng, từ yêu cầu này đến yêu cầu khác.

Các thành phần trong văn lệnh
Có 3 thành phần chính trong văn lệnh. Chúng cho phép mã Java được chèn (insert) trực tiếp vào trong servlet.
Một thẻ khai báo (declaration tag) đặt định nghĩa của một biến vào trong lòng phần thân lớp servlet của Java (java servlet class). Những thành viên dữ liệu tĩnh (Static data members) cũng có thể được định nghĩa ở đây nữa.

Trích:
<%! int serverInstanceVariable = 1; %>

Một thẻ văn lệnh con (scriptlet tag) đặt những câu lệnh đã được bao gọn (contained statements) vào trong phương thức _jspService() của lớp servlet của java.

Trích:
<% int localStackBasedVariable = 1;
out.println(localStackBasedVariable); %>

Một thẻ biểu thức (expression tag) đặt một biểu thức cần phải được tính toán (evaluate) vào trong lớp servlet của java. Không nên kết thúc biểu thức bằng một dấu chấm phẩy (semi-colon – “;”).
<%= “expanded inline data ” + 1 %>
Các hành động của JSP
Hành động JSP là các thẻ XML được dùng để khởi động chức năng mà máy chủ web vốn có. Những hành động sau đây được cung cấp:

jsp:include Tương tự như mục đích sử dụng một thủ tục con (subroutine), Java servlet tạm thời trao nhiệm vụ đặt yêu cầu và hồi âm cho trang JavaServer (JavaServer Page) chỉ định nào đấy. Quyền khống chế sẽ được hoàn lại cho trang JSP hiện tại, một khi trang JSP kia hoàn thành nhiệm vụ của nó. Dùng phương pháp này, mã trang JSP được chia sẻ với nhiều trang JSP, thay vì phải sao mã.

jsp:param Có thể được dùng bên trong khối jsp:include, khối jsp:forward hoặc khối jsp:params. Nó được dùng để xác định một thông số, và thông số này sẽ được cộng thêm vào chuỗi các thông số hiện có của yêu cầu.
jsp:forward Được dùng để trao nhiệm vụ đặt yêu cầu và hồi âm sang cho một trang JSP khác, hoặc cho một servlet khác. Quyền khống chế sẽ được hoàn trả lại cho trang JSP hiện tại.
jsp:plugin Những phiên bản cũ của Netscape Navigator và Internet Explorer dùng những thẻ khác để nhúng một chương trình nhỏ (applet). Hành động này tạo nên thẻ thuộc trình duyệt web cần thiết để bao gồm một chương trình nhỏ (to include an applet).

jsp:fallback Phần nội dung sẽ được hiển thị nếu trình duyệt web không hỗ trợ chương trình nhỏ (applets).
jsp:getProperty get of property của một JavaBean chỉ định.
jsp:setProperty set Property value sở hữu của một JavaBean chỉ định.
jsp:useBean Kiến tạo hoặc dùng lại một JavaBean, là cái có thể dùng được trong trang JSP.

————
Theo : Wikipedia Tiếng Việt

Gửi phản hồi

Please log in using one of these methods to post your comment:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s