JSP Action 标签
什么是JSP Action?
JSP Action使用XML语法的结构来控制Servlet引擎的行为。我们可以通过JSP Action(如include和forward)来动态插入文件、重用Bean组件、将用户转发到另一个页面等。与指令不同,Action在每次访问页面时都会重新评估。
语法
<jsp:action_name attribute="value" />
在本教程中,您将了解JSP标准Action。JSP标准Action标签用于控制Servlet引擎的行为。
JSP中常用Action标签列表
JSP中有11种标准Action标签,以下是它们的完整列表。
Action标签名称 | 语法 | 描述 |
---|---|---|
jsp:useBean | <jsp:useBean id=”” class=”” /> | 用于在JSP页面中调用和使用Bean。 |
jsp:include | <jsp:include page=”页面URL” flush=”true/false” /> | 在请求处理期间将另一个JSP文件包含到当前文件中。 |
jsp:setProperty | <jsp:setproperty name=”” property=”” /> | 设置Bean的属性。 |
jsp:getProperty | <jsp:getAttribute name=”” property=”” /> | 检索Bean的属性并将其转换为字符串以供输出。 |
jsp:forward | <jsp:forward page=”值” /> | 将请求转发到另一个JSP或静态页面。 |
jsp:plugin | <jsp:plugin type=”applet/bean” code=”对象代码” codebase=”对象代码库” /> | 将Applet或Bean等Java组件引入JSP,并自动生成标签。 |
jsp:body | <jsp:body></jsp:body> | 定义在请求处理期间动态生成的XML元素。 |
jsp:text | <jsp:text>模板文本</jsp:text> | 用于在JSP页面中插入模板文本,仅包含文本和EL表达式。 |
jsp:param | <jsp:param name=”val” value=”val” /> | 在jsp:plugin Action中传递参数以添加额外数据。 |
jsp:attribute | <jsp:attribute></jsp:attribute> | 定义动态生成的XML属性。 |
jsp:output | <jsp:output doctype-root-element=”” doctype-system=”” /> | 指定输出中使用的XML或DOCTYPE声明。 |
jsp:useBean
- 当我们要使用JSP页面中的Bean时,会使用此Action名称。
- 使用此标签,我们可以轻松调用Bean。
jsp:UseBean的语法:
<jsp:useBean id="" class="" />
此处指定了此Bean的标识符,class是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:include
- 它还用于像包含指令一样,将一个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>
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>
代码解释
Action_jsp2.jsp
第10行代码:在第一个文件中,我们将date.jsp文件包含在action_jsp2.jsp中。
Date.jsp
第11行代码:我们在date.jsp的第11行代码中打印今天的日期。
执行代码后,输出如下。
输出
- 由于date文件已包含在主jsp中,因此它会显示今天的日期和时间。
jsp:setProperty
- JSP标准Action的此属性用于设置Bean的属性。
- 在设置属性之前,我们需要定义一个Bean。
语法
<jsp:setproperty name="" property="" >
这里,name定义了要设置属性的Bean,property定义了要设置的属性。我们还可以设置value和param属性。这里value不是必需的,它定义了赋给属性的值。这里的param是请求参数的名称,可以使用它来获取值。setProperty的示例将在getproperty之后演示。
jsp:getProperty
- 此属性用于获取Bean的属性。
- 它会转换为字符串,最后插入到输出中。
语法
<jsp:getAttribute name="" property="" >
这里,name是需要从中检索属性的Bean的名称,并且必须定义Bean。property属性是要检索的Bean属性的名称。
setProperty和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>
代码解释
TestBean.java
第5行代码:TheTestBean实现了Serializable类。它是一个带有getter和setter的Bean类。
第7行代码:这里我们使用了一个私有的字符串变量msg,初始值为“null”。
第9-14行代码:这里我们使用了变量“msg”的getter和setter。
Action_jsp3.jsp
第10行代码:这里我们使用了“useBean”标签,它指定了要在该jsp类中使用的Bean,即TestBean。
第11行代码:这里我们将TestBean的属性msg设置为“GuruTutorial”。
第12行代码:这里使用getProperty,我们获取了TestBean的属性msg的值,即GuruTutorial,它显示在输出中。
当您执行上述代码时,您会得到以下输出
输出
在此示例中,我们使用TestBean尝试使用setProperty设置属性“gurutest”,并使用getProperty获取属性值“GuruTutorial”。
jsp:forward
它用于将请求转发到另一个jsp或任何静态页面。
这里可以无参数或有参数地转发请求。
语法
<jsp:forward page="value">
这里的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,请求就会被转发到此页面,我们得到输出“This is after forward page.”。
当我们执行上面的代码时,我们会得到以下输出。
输出
我们调用action_jsp41.jsp,但请求被转发到jsp_action_42.jsp,我们从该页面得到输出“This is after forward page”。
jsp:plugin
- 它用于将Java组件引入JSP,即Java组件可以是Applet或Bean。
- 它检测浏览器并在文件中添加<object>或<embed>JSP标签。
语法
<jsp:plugin type="applet/bean" code="objectcode" codebase="objectcodebase">
- 这里的type指定为object或bean。
- code指定Applet或Bean的类名。
- Codebase包含包含类文件的基础URL。
jsp:param
- 这是上面描述的plugin对象的子对象。
- 它必须包含一个或多个Action来提供附加参数。
语法
<jsp:params> <jsp:param name="val" value="val"/ > </jsp:params>
plugin和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>
Student.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对象,其中我们使用了三个属性。
- Type – 在这种情况下是bean。
- Code-文件名。
- Codebase – 带有包名的路径。
第11-14行代码:这里我们使用了jsp:params对象,其中有一个子param对象,带有name和value属性,我们在这两个属性中设置了id和name的值。
Student.java
第7-17行代码:我们使用了id和name变量的getter和setter。
第19-20行代码:我们初始化了变量id和name。
在这种情况下,如果param的设置值在Student Bean中使用,我们将获得输出。在这种情况下,我们不会有任何输出,因为我们只是设置和获取param的值,而没有在任何地方打印它。
jsp:body
- 此标签用于动态定义XML,即元素可以在编译时而不是请求时生成。
- 它实际定义了在请求时动态生成的XML,即元素主体。
语法
<jsp:body></jsp:body>
我们在这些标签内编写XML body标签。
jsp:attribute
- 此标签用于动态定义XML,即元素可以在请求时而不是编译时生成。
- 它实际定义了将被动态生成的XML的属性。
语法
<jsp:attribute></jsp:attribute>
我们在这里编写XML的attribute标签。
body和attribute示例
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行代码:这里我们有body Action,我们在其中编写将在动态XML中生成的XML body。
当您执行上述代码时,您会得到以下输出
输出
在这里,我们从生成的XML的body标签中获取输出。
jsp:text
- 它用于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行代码:这里我们使用text对象来打印模板文本。
当您执行上述代码时,您会得到以下输出
输出
我们得到Guru Template Text,它放置在text Action对象中。
jsp:output
- 它指定了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行代码:这里我们使用output Action对象来生成DOCTYPE,它将在内部以以下格式生成。
<!DOCTYPE html “http://www.w3.org/TR/html4/loose.dtd”>
这里不会有任何输出,因为它将在内部生成。