Chỉ thị JSP là gì?
- Các chỉ thị JSP là các thông báo tới vùng chứa JSP. Họ cung cấp thông tin toàn cầu về toàn bộ trang JSP.
- Các chỉ thị JSP được sử dụng để cung cấp chỉ dẫn đặc biệt cho một vùng chứa để dịch JSP sang mã servlet.
- Trong giai đoạn vòng đời của JSP, JSP phải được chuyển đổi thành một servlet là giai đoạn dịch.
- Họ cung cấp hướng dẫn cho vùng chứa về cách xử lý các khía cạnh nhất định của quá trình xử lý JSP
- Các chỉ thị có thể có nhiều thuộc tính được phân tách bằng dấu phẩy thành các cặp khóa-giá trị.
- Trong JSP, chỉ thị được mô tả trong các thẻ <% @%>.
Cú pháp của Chỉ thị:
<%@ directive attribute %>
Có ba loại chỉ thị:
- Chỉ thị trang
- Bao gồm chỉ thị
- Chỉ thị Taglib
Mỗi một trong số chúng được mô tả chi tiết bên dưới với các ví dụ:
Trong hướng dẫn này, bạn sẽ học -
- Chỉ thị Trang JSP
- JSP Bao gồm chỉ thị
- Chỉ thị JSP Taglib
Chỉ thị Trang JSP
Cú pháp của chỉ thị Trang:
<%@ page… %>
- Nó cung cấp các thuộc tính được áp dụng cho toàn bộ trang JSP.
- Nó xác định các thuộc tính phụ thuộc vào trang, chẳng hạn như ngôn ngữ kịch bản, trang lỗi và các yêu cầu về bộ đệm.
- Nó được sử dụng để cung cấp hướng dẫn cho vùng chứa liên quan đến trang JSP hiện tại.
Sau đây là danh sách các thuộc tính của nó được liên kết với chỉ thị trang:
- Ngôn ngữ
- Mở rộng
- Nhập khẩu
- contentType
- thông tin
- phiên họp
- isThreadSafe
- autoflush
- đệm
- IsErrorPage
- pageEncoding
- errorPage
- isELIgonored
Thêm chi tiết về từng thuộc tính
- ngôn ngữ : Nó xác định ngôn ngữ lập trình (ngôn ngữ cơ bản) đang được sử dụng trong trang.
Cú pháp của ngôn ngữ:
<%@ page language="value" %>
Ở đây giá trị là ngôn ngữ lập trình (ngôn ngữ cơ bản)
Thí dụ:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
Giải thích mã: Trong ví dụ trên, giá trị ngôn ngữ thuộc tính là Java, là ngôn ngữ cơ bản trong trường hợp này. Do đó, mã trong thẻ biểu thức sẽ được biên dịch bằng trình biên dịch java.
- Phần mở rộng : Thuộc tính này được sử dụng để mở rộng (kế thừa) lớp giống như JAVA
Cú pháp của extension:
<%@ page extends="value" %>
Ở đây giá trị đại diện cho lớp mà nó phải được kế thừa.
Thí dụ:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%><%@ page extends="demotest.DemoClass" %>
Giải thích mã: Trong đoạn mã trên, JSP đang mở rộng DemoClass nằm trong gói demo và nó sẽ mở rộng tất cả các tính năng của lớp.
- Import : Thuộc tính này là thuộc tính được sử dụng nhiều nhất trong các thuộc tính chỉ thị của trang, nó được sử dụng để ra lệnh cho vùng chứa nhập các lớp java khác, giao diện, enum, v.v. trong khi tạo mã servlet, nó tương tự như các câu lệnh nhập trong các lớp java, giao diện.
Cú pháp nhập :
<%@ page import="value" %>
Ở đây giá trị cho biết các lớp phải được nhập.
Thí dụ:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"import="java.util.Date" pageEncoding="ISO-8859-1"%>
Giải thích mã:
Trong đoạn mã trên, chúng ta đang nhập lớp Ngày từ gói java.util (tất cả các lớp tiện ích) và nó có thể sử dụng tất cả các phương thức của lớp sau.
- contentType :
- Nó xác định lược đồ mã hóa ký tự tức là nó được sử dụng để đặt kiểu nội dung và bộ ký tự của phản hồi
- Loại contentType mặc định là "text / html; charset = ISO-8859-1".
Cú pháp của nội dung Loại:
<%@ page contentType="value" %>
Thí dụ:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
Giải thích mã:
Trong đoạn mã trên, loại nội dung được đặt là văn bản / html, nó đặt mã hóa ký tự cho JSP và cho trang phản hồi được tạo.
- thông tin
- Nó định nghĩa một chuỗi có thể được truy cập bằng phương thức getServletInfo ().
- Thuộc tính này được sử dụng để thiết lập mô tả servlet.
Cú pháp thông tin:
<%@ page info="value" %>
Ở đây, giá trị đại diện cho thông tin servlet.
Thí dụ:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"info="Guru Directive JSP" pageEncoding="ISO-8859-1"%>
Giải thích mã:
Trong đoạn mã trên, chuỗi "Guru Chỉ thị JSP" có thể được truy xuất bởi giao diện servlet bằng cách sử dụng getServletInfo ()
- Phiên họp
- Trang JSP tạo phiên theo mặc định.
- Đôi khi chúng ta không cần tạo phiên trong JSP và do đó, chúng ta có thể đặt thuộc tính này thành false trong trường hợp đó. Giá trị mặc định của thuộc tính phiên là true và phiên được tạo.
Khi nó được đặt thành false, thì chúng ta có thể cho biết trình biên dịch không tạo phiên theo mặc định.
Cú pháp của phiên:
<%@ page session="true/false"%>
Trong trường hợp này, thuộc tính session có thể được đặt thành true hoặc false
Thí dụ:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"session="false"%>
Giải thích mã:
Trong ví dụ trên, thuộc tính phiên được đặt thành "false" do đó chúng tôi cho biết rằng chúng tôi không muốn tạo bất kỳ phiên nào trong JSP này
- isThreadSafe:
- Nó xác định mô hình phân luồng cho servlet được tạo.
- Nó cho biết mức độ an toàn của luồng được triển khai trong trang.
- Giá trị mặc định của nó là true nên đồng thời
- Chúng ta có thể sử dụng thuộc tính này để triển khai giao diện SingleThreadModel trong servlet đã tạo.
- Nếu chúng tôi đặt nó thành false, thì nó sẽ triển khai SingleThreadModel và có thể truy cập bất kỳ đối tượng được chia sẻ nào và có thể dẫn đến sự không nhất quán.
Cú pháp của isThreadSafe:
<% @ page isThreadSafe="true/false" %>
Ở đây true hoặc false biểu thị nếu có đồng bộ hóa thì đặt là true và đặt là false.
Thí dụ:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"isThreadSafe="true"%>
Giải thích mã:
Trong đoạn mã trên, isThreadSafe được đặt thành "true" do đó quá trình đồng bộ hóa sẽ được thực hiện và nhiều luồng có thể được sử dụng.
- AutoFlush:
Thuộc tính này chỉ định rằng đầu ra được đệm có nên được tự động xóa hay không và giá trị mặc định của thuộc tính đó là true.
Nếu giá trị được đặt thành false, bộ đệm sẽ không được tự động xóa và nếu đầy, chúng ta sẽ nhận được một ngoại lệ.
Khi bộ đệm không có thì sai là không hợp lệ và không có bộ đệm, vì vậy nó sẽ tự động được xóa.
Cú pháp của autoFlush:
<% @ page autoFlush="true/false" %>
Ở đây true / false đại diện cho việc bộ đệm có được thực hiện hay không
Thí dụ:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"autoFlush="false"%>
Giải thích mã:
Trong đoạn mã trên, autoflush được đặt thành false và do đó quá trình đệm sẽ không được thực hiện và nó đã tự xóa đầu ra theo cách thủ công.
- Đệm:
- Sử dụng thuộc tính này, đối tượng phản hồi đầu ra có thể được lưu vào bộ đệm.
- Chúng ta có thể xác định kích thước của bộ đệm được thực hiện bằng cách sử dụng thuộc tính này và kích thước mặc định là 8KB.
- Nó chỉ đạo servlet ghi bộ đệm trước khi ghi vào đối tượng phản hồi.
Cú pháp của bộ đệm:
<%@ page buffer="value" %>
Ở đây giá trị đại diện cho kích thước của bộ đệm phải được xác định. Nếu không có bộ đệm, thì chúng ta có thể viết là không có và nếu chúng ta không đề cập đến bất kỳ giá trị nào thì giá trị mặc định là 8KB
Thí dụ:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"buffer="16KB"%>
Giải thích mã:
Trong đoạn mã trên, kích thước bộ đệm được đề cập là 16KB, trong đó bộ đệm sẽ có kích thước đó
- isErrorPage:
- Nó chỉ ra rằng Trang JSP có một Trang lỗi sẽ được kiểm tra trong một trang JSP khác
- Sau đó, bất kỳ tệp JSP nào được khai báo với thuộc tính "isErrorPage" đều có khả năng nhận ngoại lệ từ các trang JSP khác có trang lỗi.
- Các trường hợp ngoại lệ chỉ có sẵn cho các trang này.
- Giá trị mặc định là sai.
Cú pháp của isErrorPage:
<%@ page isErrorPage="true/false"%>
Thí dụ:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"isErrorPage="true"%>
Giải thích mã:
Trong đoạn mã trên, isErrorPage được đặt là true. Do đó, nó sẽ kiểm tra bất kỳ JSP nào khác có tập thuộc tính errorPage (được mô tả trong thuộc tính tiếp theo) và nó có thể xử lý các ngoại lệ.
- Mã hóa trang:
Giá trị mặc định được chỉ định là "ISO-8859-1" nếu bất kỳ giá trị nào khác không được chỉ định.
Cú pháp của trang
<%@ page pageEncoding="vaue" %>
Ở đây giá trị chỉ định giá trị bộ ký tự cho JSP
Thí dụ:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"isErrorPage="true"%>
Giải thích mã:
Trong đoạn mã trên, "pageEncoding" đã được đặt thành bộ ký tự mặc định ISO-8859-1
- errorPage:
Cú pháp của lỗi
<%@ page errorPage="value" %>
Ở đây giá trị đại diện cho giá trị trang JSP lỗi
Thí dụ:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"errorPage="errorHandler.jsp"%>
Giải thích mã:
Trong đoạn mã trên, để xử lý các ngoại lệ, chúng ta có errroHandler.jsp
- isELIgnored:
- IsELIgnored là một thuộc tính cờ nơi chúng ta phải quyết định có bỏ qua các thẻ EL hay không.
- Kiểu dữ liệu của nó là java enum và giá trị mặc định là false do đó EL được bật theo mặc định.
Cú pháp của isELIgnored:
<%@ page isELIgnored="true/false" %>
Ở đây, true / false thể hiện giá trị của EL cho dù nó có nên được bỏ qua hay không.
Thí dụ:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"isELIgnored="true"%>
Giải thích mã:
Trong đoạn mã trên, isELIgnored là true và do đó, ngôn ngữ biểu thức (EL) bị bỏ qua ở đây.
Trong ví dụ dưới đây, chúng tôi đang sử dụng bốn thuộc tính (dòng mã 1-2)
Ví dụ với bốn thuộc tính
<% @ page language = "java" contentType = "text / html;" pageEncoding = "ISO-8859-1"isELIgnored = "false"%><% @ page import = "java.util.Date"%>Chỉ thị Guru JSP1 Ngày là: <% = new java.util.Date ()%>
Giải thích mã:
Dòng mã 1-2: Ở đây chúng tôi đã xác định bốn thuộc tính tức là
- Ngôn ngữ: Nó được đặt là Java làm ngôn ngữ lập trình
- contentType: đặt thành văn bản / html để cho trình biên dịch biết rằng html phải được định dạng
- pageEncoding: bộ ký tự mặc định được đặt trong thuộc tính này
- isELIgnored: Thẻ biểu thức là sai do đó nó không bị bỏ qua
Dòng mã 3: Ở đây chúng tôi đã sử dụng thuộc tính nhập và nó đang nhập "Lớp ngày" từ gói sử dụng Java và chúng tôi đang cố gắng hiển thị ngày hiện tại trong mã.
Khi bạn thực thi đoạn mã trên, bạn sẽ nhận được kết quả sau
Đầu ra :
- Ngày là: Ngày hiện tại sử dụng phương pháp ngày của lớp ngày
JSP Bao gồm chỉ thị
- JSP "bao gồm chỉ thị" (dòng mã 8) được sử dụng để bao gồm một tệp vào tệp khác
- Tệp bao gồm này có thể là HTML, JSP, tệp văn bản, v.v.
- Nó cũng hữu ích trong việc tạo các mẫu với chế độ xem của người dùng và chia các trang thành các hành động đầu trang và chân trang và thanh bên.
- Nó bao gồm tệp trong giai đoạn dịch
Cú pháp của chỉ thị include:
<%@ include… .%>
Thí dụ:
Chỉ thị_jsp2.jsp (Tệp chính)
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ include file = "directive_header_jsp3.jsp"%>Chỉ thị Guru JSP2 Đây là tệp chính
Chỉ thị_header_jsp3.jsp (được bao gồm trong tệp chính)
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Tệp tiêu đề: <% int count = 1; tính ++;out.println (đếm);%>:
Giải thích mã:
Chỉ thị_jsp2.jsp:
Dòng mã 3: Trong đoạn mã này, chúng tôi sử dụng các thẻ bao gồm trong đó chúng tôi đang bao gồm tệp chỉ thị_header_jsp3.jsp vào tệp chính (_jsp2.jsp) và nhận kết quả của cả tệp chính và tệp được bao gồm.
Chỉ thị_header_jsp3.jsp:
Dòng mã 11-12: Chúng tôi đã lấy một số lượng biến được khởi tạo thành 1 và sau đó tăng lên. Điều này sẽ cho kết quả trong tệp chính như hình dưới đây.
Khi bạn thực thi đoạn mã trên, bạn nhận được kết quả sau:
Đầu ra:
- Đầu ra là tệp Header: 2: Đây là tệp chính
- Kết quả đầu ra được thực thi từ tệp directive_jsp2.jsp trong khi tệp bao gồm directive_header_jsp3.jsp sẽ được biên dịch trước.
- Sau khi tệp bao gồm được thực hiện xong, tệp chính được thực thi, và kết quả sẽ là từ tệp chính "Đây là tệp chính". Vì vậy, bạn sẽ nhận được đầu ra là "Tệp tiêu đề: 2" từ _jsp3.jsp và "Đây là tệp chính" từ _jsp2.jsp.
Chỉ thị JSP Taglib
- Chỉ thị taglib của JSP được sử dụng để xác định thư viện thẻ với "taglib" làm tiền tố mà chúng ta có thể sử dụng trong JSP.
- Chi tiết hơn sẽ được đề cập trong phần Thẻ tùy chỉnh JSP
- Chỉ thị taglib JSP được sử dụng trong các trang JSP bằng cách sử dụng các thư viện thẻ chuẩn JSP
- Nó sử dụng một tập hợp các thẻ tùy chỉnh, xác định vị trí của thư viện và cung cấp các phương tiện xác định các thẻ tùy chỉnh trong trang JSP.
Cú pháp của chỉ thị taglib:
<%@ taglib uri="uri" prefix="value"%>
Ở đây thuộc tính "uri" là một định danh duy nhất trong bộ mô tả thư viện thẻ và thuộc tính "prefix" là tên thẻ.
Thí dụ:
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "gurutag" uri = "http://java.sun.com/jsp/jstl/core"%>Guru Chỉ thị JSP
Giải thích mã:
Dòng mã 3: Ở đây "taglib" được xác định với các thuộc tính uri và tiền tố.
Dòng mã 9: "gurutag" là thẻ tùy chỉnh được xác định và nó có thể được sử dụng ở mọi nơi