JSP 动作标签

什么是 JSP Action?

JSP 操作使用 XML 语法中的构造来控制 servlet 引擎的行为。我们可以通过 JSP 操作(如 include 和 forward)动态插入文件、重用 bean 组件、将用户转发到另一个页面等。与指令不同,每次访问页面时都会重新评估操作。

语法:

<jsp:action_name attribute="value" />

在本教程中,您将了解 JSP 标准操作。JSP 标准操作标签用于控制 servlet 引擎的行为。

JSP 中常用动作标签列表

JSP 中有 11 种标准动作标签,下面是它们的完整列表。

动作标签名称 句法 描述
jsp:使用Bean 用于在JSP页面中调用和使用bean。
jsp:包含 在请求处理期间将另一个 JSP 文件包含到当前文件中。
jsp:设置属性 设置 bean 的属性。
jsp:获取属性 检索 bean 的属性并将其转换为字符串以进行输出。
jsp:转发 将请求转发到另一个 JSP 或静态页面。
jsp:插件 推出 Java 可以将诸如 applet 或 Bean 之类的组件放入 JSP 中并自动生成标签。
jsp:主体 定义在请求处理期间动态生成的 XML 元素。
jsp:文本 模板文本 用于在JSP页面中插入模板文本,仅包含文本和EL表达式。
jsp:参数 传递 jsp:plugin 操作内的参数来添加额外数据。
jsp:属性 定义动态生成的 XML 属性。
jsp:输出 指定要在输出中使用的 XML 或 DOCTYPE 声明。

jsp:使用Bean

  • 当我们想在 JSP 页面中使用 bean 时就用到这个动作名称。
  • 通过这个标签,我们可以轻松调用一个bean。

jsp的语法:UseBean:

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

这里指定了这个 bean 的标识符,并且类是 bean 类的完整路径

计费示例:

<%@ 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>

代码说明:

代码行10: 在上面的代码中我们使用了 bean 的“bean id”和“class path”。

jsp:包含

  • 它还用于将 jsp 文件插入到另一个文件中,就像包含 指令.
  • 它在请求处理阶段添加

jsp:include 的语法

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

计费示例:

Action_jsp2(代码行 10)我们包括一个 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>

日期.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>

代码说明:

Action_jsp2.jsp

代码行10: 在第一个文件中,我们将 date.jsp 文件包含在 action_jsp2.jsp 中

日期.jsp:

代码行11: 我们在 date.jsp 中的第 11 行代码中打印今天的日期

当您执行以下代码时,输​​出如下。

jsp:包含

输出:

  • 它显示今天的日期和时间,因为日期文件包含在主 jsp 中

jsp:设置属性

  • JSP 中标准动作的这个属性用于设置 bean 的属性。
  • 在设置属性之前我们需要定义一个 bean

语法:

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

这里,name 定义了要设置属性的 bean 和我们要设置的属性。此外,我们可以设置 value 和 param 属性。这里的 value 不是强制性的,它定义了分配给属性的值。这里的 param 是请求参数的名称,可以使用该参数获取值。下面将使用 getproperty 演示 setproperty 的示例

jsp:获取属性

  • 该属性用于获取bean的属性。
  • 它转换成字符串并最终插入到输出中。

语法:

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

这里,需要从中检索属性的 bean 的名称以及应定义的 bean。property 属性是要检索的 bean 属性的名称。

setProperty 和 getProperty 的示例:

测试Bean.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>

代码说明:

测试Bean.java:

代码行 5:TestBean 正在实现可序列化类。它是代码中带有 getter setter 的 bean 类。

代码行 7:这里我们将私有字符串变量 msg 设为“null”

代码行 9-14:这里我们使用变量“msg”的 getter 和 setter。

Action_jsp3.jsp

代码行10: 这里我们使用“useBean”标签,它指定了必须在此 jsp 类中使用的 bean,即 TestBean

代码行11: 这里我们将 bean TestBean 的属性 msg 的值设置为“GuruTutorial”。

CodeLine12:在这里使用 getProperty,我们获取了 bean TestBean 的属性 msg 的值,即输出中的 GuruTutorial

执行上述代码时,您将获得以下输出:

jsp:获取属性

输出:

在此示例中,我们使用 TestBean 尝试使用 setProperty 设置属性“gurutest”,并使用 getProperty 获取属性值“GuruTutorial”

jsp:转发

它用于将请求转发到另一个 jsp 或任何静态页面。

这里请求可以不带参数转发,也可以带参数转发。

语法:

<jsp:forward page="value">

此处的值表示请求必须转发到哪里。

计费示例:

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>

代码说明

Action_jsp41.jsp

代码行10: 这里我们使用 forward JSP Action 将请求转发到属性中提到的页面,即 jsp_action_42.jsp

Jsp_action_42.jsp

代码行10: 一旦我们调用action_jsp41.jsp,请求就会转发到该页面,并且我们会得到输出“这是转发后的页面”。

当我们执行上述代码时,我们得到以下输出

jsp:转发

输出:

我们调用 action_jsp41.jsp,但请求被转发到 jsp_action_42.jsp,并且我们从该页面获得的输出为“这是转发页面之后”。

jsp:插件

  • 它用于介绍 Java 组件放入jsp中,即java组件可以是applet也可以是bean。
  • 它会检测浏览器并添加或者JSP 标签添加到文件中

语法:

<jsp:plugin type="applet/bean" code="objectcode" codebase="objectcodebase">
  • 这里的类型指定一个对象或者一个 bean
  • Code 指定 applet 或 bean 的类名
  • 代码库包含包含类文件的基本 URL

jsp:参数

  • 这是上面描述的插件对象的子对象
  • 它必须包含一个或多个操作来提供附加参数。

语法:

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

插件和参数示例

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>

学生.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;
	
}

代码说明:

Action_jsp5.jsp

代码行10: 这里我们采用 jsp:plugin 对象,其中我们采用三个属性

  • 类型 – 在这种情况下是 bean
  • 文件代号
  • Codebase – 包含包名称的路径

代码行11-14: 这里我们采用 jsp:params 对象,该对象下有一个子 param 对象,其属性为 name 和 value,我们在这些属性中设置 id 和 name 的值。

学生.java

代码 7 - 17: 我们对变量 id 和 name 使用 getter 和 setter

代码19-20: 我们正在初始化变量 id 和 name。

这里,当 param 的设置值将在 Student Bean 中使用时,我们将获得输出。在这种情况下,我们不会有输出,因为我们只是设置和获取 param 的值,而不是在任何地方打印它。

jsp:主体

  • 此标签用于动态定义 XML,即 元素 可以在请求时间内而不是编译时间内生成。
  • 它实际上定义了动态生成的元素主体的XML。

语法:

<jsp:body></jsp:body>

我们在此标签内写入 XML body 标签

jsp:属性

  • 此标签用于动态定义 XML,即元素可以在请求时而不是编译时生成
  • 它实际上定义了将动态生成的XML的属性。

语法:

<jsp:attribute></jsp:attribute>

这里我们写入XML的属性标签。

主体和属性的示例:

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>

代码说明:

代码行10: 这里我们定义元素,它动态生成为 XML,其名称将是 GuruXMLElement

代码行11-13: 这里我们定义一个属性,它将是动态生成的 XML 的 XML 属性。

代码行14: 在这里我们有主体动作,我们正在编写将以动态 XML 生成的 XML 主体。

执行上述代码时,您将获得以下输出:

jsp:属性

输出:

这里我们从生成的 XML 的 body 标签中获取输出。

jsp:文本

  • 它用于在 JSP 页面中模板文本。
  • 其主体不包含任何其他元素,仅包含文本和 EL 表达式。

语法:

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

这里的模板文本仅指模板文本(可以是任何需要在 jsp 上打印的通用文本)或任何 EL 表达.

计费示例:

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>

代码说明:

代码行10: 这里我们使用文本对象来打印模板文本

执行上述代码时,将获得以下输出

jsp:文本

输出:

我们正在获取 Guru 模板文本,它位于文本操作对象内。

jsp:输出

  • 指定jsp的XML声明或者DOCTYPE声明
  • XML 声明和 DOCTYPE 由输出声明

语法:

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

这里,doctype-root-element 表示 DOCTYPE 中 XML 文档的根元素。doctype-system 表示在输出中生成的 doctype,并给出系统文字

计费示例:

<%@ 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>

代码说明:

代码行 10:这里我们使用输出动作对象来生成DOCTYPE,内部将以以下格式生成:

由于这是内部生成的,因此不会有任何输出。