Phần 1: Tổng quan về JSP
I. Khái niệm:
- JSP (JavaServer Pages) 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.
II. JSPs trong ứng dụng Web:
- Trong một ứng dụng Web, JSP được lưu trữ trong thư mục các trang Web.
- Theo yêu cầu, một JSP được chuyển đổi sang một servlet và thực hiện trong thùng chứa.
- Các thông số thực của JSP có thể được thao tác thông qua các chỉ thị trang JSP.
- Thông tin cấu hình JSP được quy định trong web.xml mô tả triển khai thông qua một thẻ <jsp-config>.
III. Có 3 loại yếu tố cơ bản sử dụng để nhúng đoạn code Java trong JSP:
1. Biểu thức
- Biểu thức được sử dụng để chèn các giá trị đến đầu ra.
- Cú pháp: <%= expression %>
- Đoạn code này có 2 biểu thức: <%= new java.util.Date() %>, <%= request.getRemoteAddr() %>
- JSP bao gồm nhiều đối tượng được xác định trước. Sau đây là một số đối tượng được xác định trước thường xuyên được sử dụng. Những đối tượng được xác định trước cũng được biết đến như là đối tượng tiềm ẩn:
+ request: Đề cập đến yêu cầu nhận được.
+ response: Đề cập đến đáp ứng tạo ra bởi các JSP.
+ session: Là một cá thể của HTTPSession mà hiện nay đang hoạt động.
+ out: Đối tượng sử dụng để viết các đầu ra của JSP, mà thường là PrintWriter.
+ application: Nó là một đối tượng ServletContext trong đó đề cập đến khuôn khổ của
Servlet. + config: Đề cập đến cấu hình của ứng dụng đó là một đối tượng ServletConfig.
+ pageContext: Đề cập đến môi trường của các trang Web, mà là một đối tượng pageContext.
+ page: Đề cập đến các JSP hiện tại.
- Sau đây là những yếu tố mà cho phép biểu thức như các giá trị thuộc tính của chúng:
+ jsp:setProperty: Yếu tố này có tên và giá trị thuộc tính mà có thể được thiết lập thông qua biểu thức.
+ jsp:include: Yếu tố này cho phép bạn nhập các tập tin hoặc các trang vào JSP hiện tại.
+ jsp:forward: Yếu tố này liên kết các servlet và JSP. Khi JSP được thực hiện, yêu cầu được chuyển tiếp đến các servlet thích hợp.
+ jsp:param: Yếu tố này bao gồm JSP hoặc chuyển tiếp. Nếu thông số bổ sung cần phải được thông qua, thì yếu tố đó rất hữu ích.
2. Khai báo:
- Lệnh khai báo được yêu cầu để khai báo các biến.
- Cú pháp: <%! declaration %>
- Tương đương với XML để kê khai là:
<jsp:declaration>
code fragment
</jsp:declaration>
- Các mã được chứng minh cho việc sử dụng khai báo JSP.
3. Scriptlets:
- Scriptlets được sử dụng để nhúng mã Java vào JSP. Nó được khai báo bằng cách sử dụng cú pháp sau: <% code fragment %>
- Scriptlets có thể được sử dụng để thực hiện các nhiệm vụ như thiết lập các tiêu đề của một đáp ứng HTTP, thiết lập các mã trạng thái HTTP và như vậy.
4. Chỉ thị:
- Một chỉ thị JSP xác định cấu trúc của servlet được tạo ra như là kết quả của trang JSP:
<%@ directive attribute="value" %>
- Một chỉ định nhiều thuộc tính có thể được định nghĩa như sau:
<%@ directive attribute1="value1" attribute2="value2" ... %>
- Có 3 loại chỉ thị:
* @page:
- Để xác định được thuộc tính cấp độ trang trong JSP. Sau đây là các thuộc tính có thể được định nghĩa thông qua các chỉ thị trang:
+ import: Mô tả các gói mà cần phải được nhập vào JSP.
+ contentType: Được sử dụng để thiết lập các kiểu trường nội dung tiêu đề HttpResponse, giá trị là bất kỳ một trong các loại MIME.
+ isThreadSafe: Được sử dụng để xác định liệu các JSP thực hiện một mô hình chủ đề duy nhất hay không. Các giá trị của thuộc tính này có thể là đúng hoặc sai.
+ session: Xác định xem trang JSP hiện nay tham gia vào phiên HTTP hay không. Nó giả định giá trị đúng hoặc sai.
+ buffer: Xác định nếu các phản ứng hiện nay đòi hỏi phải có một số bộ đệm được phân bổ phía client.
+ autoflush: Xác định xem bộ đệm đầu ra cần được rửa sau khi nhận được phản hồi. Nó giả định giá trị đúng hoặc sai.
- Sau đây là một số thuộc tính nữa mà có được xác định thông qua các chỉ thị trang:
+ extends: Xác định các lớp mà từ đó các trang hiện tại có thể được thừa kế.
+ info: Lất một chuỗi giá trị mà có thể được trả lại thông qua phương pháp getServletInfo().
+ errorPage: Xác định các URL của trang có thể được trả lại trong trường hợp lỗi.
+ isErrorPage: Giả định một giá trị đúng hoặc sai, xác định xem trang hiện tại là một trang báo lỗi hay không.
+ language: Quy định cụ thể nền tảng ngôn ngữ scripting của JSP.
* @include:
- Được sử dụng để bao gồm các tập tin JSP hiện tại.
- Sau đây là cách sử dụng các chỉ thị @include: <%@ include="/404.html" %>
* @taglib:
- JSP cho phép người dùng tạo ra các thư viện thẻ của riêng mình.
- Các thẻ thư viện bao gồm một bộ mô tả thư viện thẻ và xử lý thẻ.
- Việc xử lý thẻ chịu trách nhiệm cho việc thực hiện các định nghĩa thẻ và mô tả các thư viện thẻ xác định phương pháp ánh xạ các thẻ để xử lý thích hợp. Việc xử lý thẻ nói chung là các lớp Java.
- Người dùng xác định có thể được bao gồm trong các tập tin JSP thông qua các chỉ thị @taglib.
IV. Xử lý số liệu nhận được từ Servlet trong JSP:
- Cách thông thường của xử lý dữ liệu nhận được từ giao diện người dùng thông qua Java Beans.
- Bean Class có các biến bằng số lượng của các yếu tố đầu vào trong biểu mẫu.
- Mỗi yếu tố đầu vào có một hàm getter và setter để xử lý các giá trị của các biến.
- Một khi các giao diện giữa các Servlet và JSP được thiết lập, các servlet có thể thực hiện các hoạt động cần thiết trên các giá trị đầu vào đọc thông qua các hình thức.
- VD:
+ Sau đây JSP sử dụng một lớp Bean Product:
package Product;
public class ProductBean
{
private String name;
public ProductBean() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
+ Tạo file test.jsp:
<jsp:useBean id="mybean" scope="session" class="Product.ProductBean"/>
<jsp:setProperty name="mybean" property="name" value="iPhone 6s"/>
<p>Product name: <jsp:getProperty name="mybean" property="name"/>.</p>
+ Output:
Product name: iPhone 6s.
V. JSP Standard Tag Library (JSTL):
- JSTL là một kho lưu trữ của thẻ được sử dụng để tạo ra JSP.
- Những chức năng thẻ hỗ trợ như lặp đi lặp lại, thực hiện các điều kiện, cơ sở dữ liệu truy cập, và như vậy.
- JSP cho phép tùy chỉnh thẻ xác định, nơi người dùng có thể định nghĩa một tập các thẻ.
- Các thẻ thư viện có thể được bao gồm trong chỉ thị @taglib.
- Nó có thẻ để thực hiện các nhiệm vụ khác nhau có thể được phân loại như sau:
1. Core tags:
- Tất cả các thẻ cốt lõi được bắt đầu bằng chữ cái 'c'.
- Những thẻ này hỗ trợ các tính năng như hỗ trợ biến, điều khiển luồng, quản lý URL, và như vậy.
- URL của thư viện thẻ cốt lõi là như sau: http://java.sun.com/jsp/jstl/core.
2. XML tags:
- Tất cả các thẻ XML được bắt đầu với chữ cái 'x'.
- Có ba loại thẻ XML: cốt lõi, điều khiển luồng và chuyển đổi.
- URL cho thẻ XML là: http://java.sun.com/jsp/jstl/xml.
- Thẻ cốt lõi cung cấp các chức năng cơ bản của phân tích và diễn giải các thẻ XML.
- Các thẻ cốt lõi XML: out, parse, và set.
- Thẻ điều khiển luồng được sử dụng để điều khiển thứ tự diễn giải của các thẻ XML.
- Các thẻ được sử dụng cho điều này là choose...when...otherwise, foreach, và if.
- Thẻ chuyển đổi thực hiện các chức năng như kiểu dáng của các tài liệu. Các thẻ được sử dụng để chuyển đổi là transform...param.
3. Formatting tags:
- Thẻ định dạng được dùng cho các định dạng XML documents dựa trên các thông số cục bộ như thời gian địa phương và như vậy.
- Các tiền tố để định dạng thẻ là 'fmt' và các thư viện thẻ định dạng được đặt tại: http://java.sun.com/jsp/jstl/fmt
- Các thẻ trong thể loại này là: formatNumber, formatDate, parseDate, parseNumber, setTimeZone và timeZone.
4. SQL tags:
- Thẻ SQL được sử dụng cho các hoạt động cơ sở dữ liệu.
- Tất cả các thẻ SQL được bắt đầu với 'sql'.
- URL cho thẻ SQL là: http://java.sun.com/jsp/jstl/sql.
- Các chức năng của thư viện thẻ SQL được thiết lập nguồn dữ liệu và thực hiện
các hoạt động của SQL.
5. JSTL functions:
- Có một tập hợp các hàm được xác định trước trong JSP được sử dụng trên một nhóm đối tượng.
- Chúng được bắt đầu với 'fn'.
- URL cho vị trí của hàm JSTL là: http://java.sun.com/jsp/jstl/functions
6. Custom tags:
- JSP cho phép tạo ra các tùy chỉnh thẻ, nơi mà các nhà phát triển có thể định nghĩa một tập hợp các thẻ.
- Các chức năng của các thẻ tùy chỉnh được xác định thông qua một trình xử lý thẻ.
- Các thẻ tùy chỉnh có thể được chèn trực tiếp vào một JSP theo cách tương tự như thẻ built-in.
- Một tập tin mô tả thư viện thẻ (TLD) là một tài liệu XML có chứa thông tin về mỗi người dùng xác định thẻ.
Không có nhận xét nào:
Đăng nhận xét