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 中标准动作的这个属性用于设置 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
执行上述代码时,您将获得以下输出:
输出:
在此示例中,我们使用 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,请求就会转发到该页面,并且我们会得到输出“这是转发后的页面”。
当我们执行上述代码时,我们得到以下输出
输出:
我们调用 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 主体。
执行上述代码时,您将获得以下输出:
输出:
这里我们从生成的 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: 这里我们使用文本对象来打印模板文本
执行上述代码时,将获得以下输出
输出:
我们正在获取 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,内部将以以下格式生成:
由于这是内部生成的,因此不会有任何输出。