Thẻ hành động JSP

Hành động JSP là gì?

Các hành động JSP sử dụng cấu trúc trong cú pháp XML để điều khiển hoạt động của công cụ servlet. Chúng ta có thể chèn một tệp một cách linh hoạt, sử dụng lại các thành phần Beans, chuyển tiếp người dùng đến một trang khác, v.v. thông qua các Hành động JSP như bao gồm và chuyển tiếp. Không giống như chỉ thị, các hành động được đánh giá lại mỗi khi trang được truy cập.

Cú pháp:

<jsp:action_name attribute="value" />

Trong hướng dẫn này, bạn sẽ tìm hiểu về các Hành động Tiêu chuẩn của JSP. Thẻ hành động tiêu chuẩn JSP được sử dụng để kiểm soát hành vi của công cụ servlet.

Danh sách các thẻ hành động thường dùng trong JSP

Có 11 loại Thẻ hành động chuẩn trong JSP và sau đây là danh sách đầy đủ các loại thẻ đó.

Tên thẻ hành động cú pháp Mô tả
jsp:useBean Được sử dụng để gọi và sử dụng bean trong trang JSP.
jsp:bao gồm Bao gồm một tệp JSP khác vào tệp hiện tại trong quá trình xử lý yêu cầu.
jsp:setProperty Thiết lập thuộc tính của bean.
jsp:getProperty Truy xuất thuộc tính của một bean và chuyển đổi nó thành chuỗi để xuất ra.
jsp: chuyển tiếp Chuyển tiếp yêu cầu tới trang JSP hoặc trang tĩnh khác.
jsp:plugin Giới thiệu Java các thành phần như applet hoặc bean vào JSP và tự động tạo thẻ.
jsp: cơ thể Xác định các phần tử XML được tạo ra một cách động trong quá trình xử lý yêu cầu.
jsp: văn bản mẫu văn bản Được sử dụng để chèn văn bản mẫu vào các trang JSP, chỉ chứa văn bản và biểu thức EL.
jsp:thông số Truyền tham số trong hành động jsp:plugin để thêm dữ liệu bổ sung.
jsp:thuộc tính Xác định các thuộc tính XML được tạo động.
jsp:đầu ra Chỉ định khai báo XML hoặc DOCTYPE sẽ được sử dụng trong đầu ra.

jsp:useBean

  • Tên hành động này được sử dụng khi chúng ta muốn sử dụng các hạt đậu trong trang JSP.
  • Với thẻ này, chúng ta có thể dễ dàng gọi một hạt đậu.

Cú pháp của jsp: UseBean:

<jsp:useBean id="" class="" />

Ở đây nó chỉ định định danh cho Bean này và lớp là đường dẫn đầy đủ của lớp Bean

Ví dụ:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Action JSP1</title>
</head>
<body>
<jsp:useBean id="name" class="demotest.DemoClass">
</body>
</html>

Giải thích mã:

Dòng mã 10: Trong đoạn mã trên, chúng ta sử dụng “bean id” và “class path” của Bean.

jsp:bao gồm

  • Nó cũng được sử dụng để chèn một tập tin jsp vào một tập tin khác, giống như bao gồm Chỉ thị.
  • Nó được thêm vào trong giai đoạn xử lý yêu cầu

Cú pháp của jsp:include

<jsp:include page="page URL" flush="true/false">

Ví dụ:

Action_jsp2 (Dòng mã 10), chúng tôi đang bao gồm tệp date.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Date Guru JSP</title>
</head>
<body>
<jsp:include page="date.jsp" flush="true" />
</body>
</html>

Date.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<p>
Today's date: <%= {new java.util.Date()).toLocaleString()%>
</p>
</body>
</html>

Giải thích mã:

Action_jsp2.jsp

Dòng mã 10: Trong tệp đầu tiên, chúng tôi đưa tệp date.jsp vào action_jsp2.jsp

Date.jsp:

Dòng mã 11: Chúng tôi đang in ngày hôm nay ở dòng mã 11 trong date.jsp

Khi bạn thực thi đoạn mã sau, kết quả sẽ như sau.

jsp:bao gồm

Đầu ra:

  • Nó hiển thị ngày hôm nay cùng với thời gian vì tệp ngày được bao gồm trong jsp chính

jsp:setProperty

  • Thuộc tính này của các hành động tiêu chuẩn trong JSP được sử dụng để thiết lập thuộc tính của Bean.
  • Chúng ta cần định nghĩa một Bean trước khi thiết lập thuộc tính

Cú pháp:

<jsp:setproperty name="" property="" >

Ở đây, tên định nghĩa bean có thuộc tính được đặt và thuộc tính mà chúng ta muốn đặt. Ngoài ra, chúng ta có thể đặt thuộc tính value và param. Ở đây value không bắt buộc và nó định nghĩa giá trị được gán cho thuộc tính. Ở đây param là tên của tham số yêu cầu sử dụng giá trị nào có thể được lấy. Ví dụ về setproperty sẽ được trình bày bên dưới với getproperty

jsp:getProperty

  • Thuộc tính này được sử dụng để lấy thuộc tính của đậu.
  • Nó chuyển đổi thành một chuỗi và cuối cùng chèn vào đầu ra.

Cú pháp:

<jsp:getAttribute name="" property="" >

Ở đây, tên của bean mà thuộc tính phải được truy xuất và bean phải được định nghĩa. Thuộc tính property là tên của thuộc tính bean cần được truy xuất.

Ví dụ về setProperty và getProperty:

TestBean.java:

package demotest;

import java.iO.Serializable;

public class TestBean implements Serializable{
	
	private String msg = "null";
	
	public String getMsg() {
		return msg;
	}
	
	public void setMsg(String msg) {
		this.msg = msg;
	}
}

Action_jsp3.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Action 3</title>
</head>
<body>
<jsp:useBean id="GuruTest" class="demotest.TestBean" />
<jsp:setProperty name="GuruTest" property="msg" value="GuruTutorial" />
<jsp:getProperty name="GuruTest" property="msg" />
</body>
</html>

Giải thích mã:

TestBean.java:

Dòng mã 5: TheTestBean đang triển khai lớp có thể tuần tự hóa. Nó là một lớp đậu với các hàm setters getters trong mã.

Dòng mã 7: Ở đây chúng tôi đang lấy thông báo biến chuỗi riêng tư là “null”

Dòng mã 9-14: Ở đây chúng ta đang sử dụng getters và setters của biến “msg”.

Action_jsp3.jsp

Dòng mã 10: Ở đây chúng tôi đang sử dụng thẻ “useBean”, trong đó nó chỉ định Bean tức là TestBean phải được sử dụng trong lớp jsp này

Dòng mã 11: Ở đây chúng tôi đang đặt giá trị cho thông báo thuộc tính cho Bean TestBean là “GuruTutorial”.

CodeLine12: Ở đây, bằng cách sử dụng getProperty, chúng ta sẽ nhận được giá trị của thông báo thuộc tính cho Bean TestBean tức là GuruTutorial có trong đầu ra

Khi bạn thực thi đoạn mã trên, bạn sẽ nhận được kết quả sau:

jsp:getProperty

Đầu ra:

Trong ví dụ này, bằng cách sử dụng TestBean, chúng tôi đang cố gắng đặt thuộc tính “gurutest” bằng cách sử dụng setProperty và nhận giá trị của thuộc tính bằng cách sử dụng getProperty là “GuruTutorial”

jsp: chuyển tiếp

Nó được sử dụng để chuyển tiếp yêu cầu đến một jsp khác hoặc bất kỳ trang tĩnh nào.

Ở đây yêu cầu có thể được chuyển tiếp mà không có tham số hoặc có tham số.

Cú pháp:

<jsp:forward page="value">

Giá trị ở đây thể hiện nơi yêu cầu phải được chuyển tiếp.

Ví dụ:

Action_jsp41.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Action JSP1</title>
</head>
<body>
<jsp:forward page="jsp_action_42.jsp" />
</body>
</html>

Jsp_action_42.jsp

Guru Action JSP2</title>
</head>
<body>
<a>This is after forward page</a>
</body>
</html>

Giải thích mã

Action_jsp41.jsp

Dòng mã 10: Ở đây chúng tôi đang sử dụng Forward JSP Action để chuyển tiếp yêu cầu đến trang được đề cập trong thuộc tính, tức là jsp_action_42.jsp

Jsp_action_42.jsp

Dòng mã 10: Khi chúng tôi gọi action_jsp41.jsp, yêu cầu sẽ được chuyển tiếp đến trang này và chúng tôi nhận được kết quả là “Đây là sau trang chuyển tiếp”.

Khi chúng ta thực thi đoạn mã trên, chúng ta sẽ nhận được kết quả sau

jsp: chuyển tiếp

Đầu ra:

Chúng tôi gọi action_jsp41.jsp nhưng yêu cầu được chuyển tiếp đến jsp_action_42.jsp và chúng tôi nhận được kết quả từ trang đó là “Đây là sau trang chuyển tiếp”.

jsp:plugin

  • Nó được dùng để giới thiệu Java thành phần vào jsp, tức là các thành phần java có thể là applet hoặc Bean.
  • Nó phát hiện trình duyệt và thêm hoặc Gắn thẻ JSP vào tập tin

Cú pháp:

<jsp:plugin type="applet/bean" code="objectcode" codebase="objectcodebase">
  • Ở đây kiểu chỉ định một đối tượng hoặc một hạt đậu
  • Mã chỉ định tên lớp của applet hoặc Bean
  • Cơ sở mã chứa URL cơ sở chứa các tệp của các lớp

jsp:thông số

  • Đây là đối tượng con của đối tượng plugin được mô tả ở trên
  • Nó phải chứa một hoặc nhiều hành động để cung cấp các tham số bổ sung.

Cú pháp:

<jsp:params>
<jsp:param name="val" value="val"/ >
</jsp:params>

Ví dụ về plugin và param

Action_jsp5.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Action guru jsp5</title>
</head>
<body>
<jsp:plugin type="bean" code="Student.class" codebase="demotest.Student">
  <jsp:params>
     <jsp:param name="id" value="5" />
     <jsp:param name="name" value="guru" />
  </jsp:params>
</jsp:plugin>
</body>
</html>

Sinh viên.java

package demotest; 

import java.io.Serializable;

public class Student implements Serializable {
	
	public String getName () { 
		return name; 
	}
	public void setName (String name) {
		this.name = name;
	}
	public int getId() { 
		return id; 
	} 
	public void setId (int id) { 
		this.id = id; 
	} 
	private String name = "null"; 
	private int id = 0;
	
}

Giải thích mã:

Action_jsp5.jsp

Dòng mã 10: Ở đây chúng tôi đang sử dụng đối tượng plugin jsp: trong đó chúng tôi đang sử dụng ba thuộc tính

  • Loại - trong trường hợp này là đậu
  • Mã-tên của tập tin
  • Codebase – đường dẫn có tên gói

Dòng mã 11-14: Ở đây chúng ta đang sử dụng đối tượng jsp: params trong đó có một đối tượng param con với các thuộc tính tên và giá trị, đồng thời chúng ta đang đặt các giá trị id và tên trong thuộc tính này.

Sinh viên.java

Mã 7-17: Chúng tôi đang sử dụng getters và setters cho các biến id và name

Mã 19-20: chúng tôi đang khởi tạo các biến id và tên.

Ở đây chúng ta sẽ nhận được kết quả đầu ra trong trường hợp các giá trị đã đặt của param sẽ được sử dụng trong Bean Sinh viên. Trong trường hợp này, chúng tôi sẽ không có bất kỳ đầu ra nào vì chúng tôi chỉ cài đặt và nhận các giá trị của param chứ không in nó ở bất kỳ đâu.

jsp: cơ thể

  • Thẻ này được sử dụng để xác định động XML, tức là Các yếu tố có thể tạo trong thời gian yêu cầu hơn thời gian biên dịch.
  • Nó thực sự định nghĩa XML, được tạo ra phần thân phần tử động.

Cú pháp:

<jsp:body></jsp:body>

Ở đây chúng tôi viết thẻ nội dung XML trong thẻ này

jsp:thuộc tính

  • Thẻ này được sử dụng để xác định XML một cách linh hoạt tức là các phần tử có thể được tạo trong thời gian yêu cầu hơn là thời gian biên dịch
  • Nó thực sự xác định thuộc tính XML sẽ được tạo động.

Cú pháp:

<jsp:attribute></jsp:attribute>

Ở đây chúng tôi viết thẻ thuộc tính của XML.

Ví dụ về phần thân và thuộc tính:

Action_jsp6.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Action Guru JSP6</title>
</head>
<body>
<jsp:element name="GuruXMLElement">
<jsp:attribute name="GuruXMLattribute">
Value
</jsp:attribute>
<jsp:body>Guru XML</jsp:body>
</jsp:element>
</body>
</html>

Giải thích mã:

Dòng mã 10: Ở đây chúng ta đang xác định phần tử được tạo động dưới dạng XML, và tên của nó sẽ là GuruXMLElement

Dòng mã 11-13: Ở đây chúng ta đang xác định một thuộc tính sẽ là thuộc tính XML của XML được tạo động.

Dòng mã 14: Ở đây chúng ta có hành động nội dung trong đó chúng ta đang viết nội dung XML sẽ được tạo bằng XML động.

Khi bạn thực thi đoạn mã trên, bạn sẽ nhận được kết quả sau:

jsp:thuộc tính

Đầu ra:

Ở đây chúng tôi nhận được kết quả từ thẻ body của XML được tạo.

jsp: văn bản

  • Nó được sử dụng để tạo mẫu văn bản trong các trang JSP.
  • Phần thân của nó không chứa bất kỳ phần tử nào khác và chỉ chứa văn bản và biểu thức EL.

Cú pháp:

<jsp:text>template text</jsp:text>

Ở đây văn bản mẫu chỉ đề cập đến văn bản mẫu (có thể là bất kỳ văn bản chung nào cần được in trên jsp ) hoặc bất kỳ văn bản nào biểu thức EL.

Ví dụ:

Action_jsp7.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Action JSP7</title>
</head>
<body>
<jsp:text>Guru Template Text</jsp:text>
</body>
</html>

Giải thích mã:

Dòng mã 10: Ở đây chúng ta đang lấy đối tượng văn bản để in văn bản mẫu

Khi bạn thực thi đoạn mã trên, bạn sẽ nhận được kết quả sau

jsp: văn bản

Đầu ra:

Chúng tôi đang lấy Văn bản Mẫu Guru, được đặt trong các đối tượng hành động văn bản.

jsp:đầu ra

  • Nó chỉ định khai báo XML hoặc khai báo DOCTYPE của jsp
  • Khai báo XML và DOCTYPE được khai báo bởi kết quả đầu ra

Cú pháp:

<jsp:output doctype-root-element="" doctype-system="">

Ở đây, doctype-root-element chỉ ra phần tử gốc của tài liệu XML trong DOCTYPE. Doctype-system chỉ ra doctype được tạo ra trong đầu ra và cung cấp cho hệ thống theo nghĩa đen

Ví dụ:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Action Guru JSP8</title>
</head>
<body>
<jsp:output doctype-root-element="html PUBLIC" doctype-system="http://www.w3.org/TR/html4/loose.dtd"/>
</body>
</html>

Giải thích mã:

Dòng mã 10: Ở đây chúng tôi đang sử dụng đối tượng hành động đầu ra để tạo DOCTYPE và nội bộ nó sẽ được tạo ở định dạng sau:

Sẽ không có bất kỳ đầu ra nào cho việc này vì nó sẽ được tạo nội bộ.