利用JSP动作可以动态地插入文件、重用JavaBean组件、把用户重定向到其余的页面、为Java插件天生HTML代码

动作元素只有一种语法,它符合XML标准:

<jsp:action_name attribute=\"大众value\"大众 />

动作元素基本上都是预定义的函数,JSP规范定义了一系列的标准动作,它用JSP作为前缀,可用的标准动作元素如下:

jspembedJSP 动作元素 Python

语法描述jsp:include在页面被要求的时候引入一个文件。
jsp:useBean探求或者实例化一个JavaBean。
jsp:setProperty设置JavaBean的属性。
jsp:getProperty输出某个JavaBean的属性。
jsp:forward把要求转到一个新的页面。
jsp:plugin根据浏览器类型为Java插件天生OBJECT或EMBED标记。
jsp:element定义动态XML元素jsp:attribute设置动态定义的XML元素属性。
jsp:body设置动态定义的XML元素内容。
jsp:text在JSP页面和文档中利用写入文本的模板

常见的属性

所有的动作要素都有两个属性:id属性和scope属性。

id属性:

id属性是动作元素的唯一标识,可以在JSP页面中引用。
动作元素创建的id值可以通过PageContext来调用。

scope属性:

该属性用于识别动作元素的生命周期。
id属性和scope属性有直接关系,scope属性定义了干系联id工具的寿命。
scope属性有四个可能的值: (a) page, (b)request, (c)session, 和 (d) application。

<jsp:include>动作元素

<jsp:include>动作元素用来包含静态和动态的文件。
该动作把指定文件插入正在天生的页面。
语法格式如下:

<jsp:include page=\"大众相对 URL 地址\"大众 flush=\公众true\"大众 />

前面已经先容过include指令,它是在JSP文件被转换成Servlet的时候引入文件,而这里的jsp:include动作不同,插入文件的韶光是在页面被要求的时候。

以下是include动作干系的属性列表。

属性描述page包含在页面中的相对URL地址。
flush布尔属性,定义在包含资源前是否刷新缓存区。

实例

以下我们定义了两个文件 date.jsp 和 main.jsp,代码如下所示:

date.jsp文件代码:

<%@ page language=\"大众java\"大众 contentType=\"大众text/html; charset=UTF-8\"大众 pageEncoding=\公众UTF-8\"大众%><p> 本日的日期是: <%= (new java.util.Date()).toLocaleString()%></p>

main.jsp文件代码:

<%@ page language=\"大众java\公众 contentType=\公众text/html; charset=UTF-8\"大众 pageEncoding=\"大众UTF-8\公众%><!DOCTYPE html><html><head><meta charset=\公众utf-8\"大众><title>菜鸟教程(runoob.com)</title></head><body><h2>include 动作实例</h2><jsp:include page=\公众date.jsp\公众 flush=\"大众true\"大众 /></body></html>

现在将以上两个文件放在做事器的根目录下,访问main.jsp文件。
显示结果如下:

include 动作实例本日的日期是: 2016-6-25 14:08:17

<jsp:useBean>动作元素

jsp:useBean 动浸染来加载一个将在JSP页面中利用的JavaBean。

这个功能非常有用,由于它使得我们可以发挥 Java 组件复用的上风。

jsp:useBean动作最大略的语法为:

<jsp:useBean id=\"大众name\"大众 class=\"大众package.class\"大众 />

在类载入后,我们既可以通过 jsp:setProperty 和 jsp:getProperty 动作来修正和检索bean的属性。

以下是useBean动作干系的属性列表。

属性描述class指定Bean的完全包名。
type指定将引用该工具变量的类型。
beanName通过 java.beans.Beans 的 instantiate() 方法指定Bean的名字。

在给出详细实例前,让我们先来看下 jsp:setProperty 和 jsp:getProperty 动作元素:

<jsp:setProperty>动作元素

jsp:setProperty用来设置已经实例化的Bean工具的属性,有两种用法。
首先,你可以在jsp:useBean元素的表面(后面)利用jsp:setProperty,如下所示:

<jsp:useBean id=\"大众myName\公众 ... />...<jsp:setProperty name=\"大众myName\公众 property=\公众someProperty\"大众 .../>

此时,不管jsp:useBean是找到了一个现有的Bean,还是新创建了一个Bean实例,jsp:setProperty都会实行。
第二种用法是把jsp:setProperty放入jsp:useBean元素的内部,如下所示:

<jsp:useBean id=\"大众myName\公众 ... >... <jsp:setProperty name=\公众myName\"大众 property=\"大众someProperty\"大众 .../></jsp:useBean>

此时,jsp:setProperty只有在新建Bean实例时才会实行,如果是利用现有实例则不实行jsp:setProperty。

jsp:setProperty动作有下面四个属性,如下表:

属性描述namename属性是必需的。
它表示要设置属性的是哪个Bean。
propertyproperty属性是必需的。
它表示要设置哪个属性。
有一个分外用法:如果property的值是\"大众\"大众,表示所有名字和Bean属性名字匹配的要求参数都将被通报给相应的属性set方法。
valuevalue 属性是可选的。
该属性用来指定Bean属性的值。
字符串数据会在目标类中通过标准的valueOf方法自动转换成数字、boolean、Boolean、 byte、Byte、char、Character。
例如,boolean和Boolean类型的属性值(比如\"大众true\公众)通过 Boolean.valueOf转换,int和Integer类型的属性值(比如\公众42\公众)通过Integer.valueOf转换。
  value和param不能同时利用,但可以利用个中任意一个。
paramparam 是可选的。
它指定用哪个要求参数作为Bean属性的值。
如果当前要求没有参数,则什么事情也不做,系统不会把null通报给Bean属性的set方法。
因此,你可以让Bean自己供应默认属性值,只有当要求参数明确指定了新值时才修正默认属性值。

<jsp:getProperty>动作元素

jsp:getProperty动作提取指定Bean属性的值,转换成字符串,然后输出。
语法格式如下:

<jsp:useBean id=\"大众myName\"大众 ... />...<jsp:getProperty name=\"大众myName\公众 property=\"大众someProperty\公众 .../>

下表是与getProperty干系联的属性:

属性描述name要检索的Bean属性名称。
Bean必须已定义。
property表示要提取Bean属性的值

实例

以下实例我们利用了Bean:

package com.runoob.main;public class TestBean { private String message = \"大众菜鸟教程\"大众; public String getMessage() { return(message); } public void setMessage(String message) { this.message = message; }}

编译以上实例文件 TestBean.java :

$ javac TestBean.java

编译完成后会在当前目录下天生一个 TestBean.class 文件, 将该文件拷贝至当前 JSP 项目的 WebContent/WEB-INF/classes/com/runoob/main 下( com/runoob/main 包路径,没有须要手动创建)。

下面是一个 Eclipse 中目录构造图:

下面是一个很大略的例子,它的功能是装载一个Bean,然后设置/读取它的message属性。

现在让我们在main.jsp文件中调用该Bean:

<%@ page language=\"大众java\公众 contentType=\"大众text/html; charset=UTF-8\"大众 pageEncoding=\"大众UTF-8\"大众%><!DOCTYPE html><html><head><meta charset=\"大众utf-8\公众><title>菜鸟教程(runoob.com)</title></head><body><h2>Jsp 利用 JavaBean 实例</h2><jsp:useBean id=\"大众test\"大众 class=\"大众com.runoob.main.TestBean\公众 /><jsp:setProperty name=\"大众test\"大众 property=\公众message\"大众 value=\公众我爱学习...\"大众 /><p>输出信息....</p><jsp:getProperty name=\"大众test\公众 property=\"大众message\公众 /></body></html>

<jsp:forward> 动作元素

jsp:forward动作把要求转到其余的页面。
jsp:forward标记只有一个属性page。
语法格式如下所示:

<jsp:forward page=\"大众相对 URL 地址\"大众 />

以下是forward干系联的属性:

属性描述pagepage属性包含的是一个相对URL。
page的值既可以直接给出,也可以在要求的时候动态打算,可以是一个JSP页面或者一个 Java Servlet.

实例

以下实例我们利用了两个文件,分别是: date.jsp 和 main.jsp。

date.jsp 文件代码如下:

<%@ page language=\"大众java\公众 contentType=\公众text/html; charset=UTF-8\公众 pageEncoding=\"大众UTF-8\"大众%><p> 本日的日期是: <%= (new java.util.Date()).toLocaleString()%></p>

main.jsp文件代码:

<%@ page language=\公众java\"大众 contentType=\公众text/html; charset=UTF-8\"大众 pageEncoding=\公众UTF-8\"大众%><!DOCTYPE html><html><head><meta charset=\公众utf-8\"大众><title>菜鸟教程(runoob.com)</title></head><body><h2>forward 动作实例</h2><jsp:forward page=\"大众date.jsp\"大众 /></body></html>

现在将以上两个文件放在做事器的根目录下,访问main.jsp文件。
显示结果如下:

本日的日期是: 2016-6-25 14:37:25

<jsp:plugin>动作元素

jsp:plugin动浸染来根据浏览器的类型,插入通过Java插件 运行Java Applet所必需的OBJECT或EMBED元素。

如果须要的插件不存在,它会下载插件,然后实行Java组件。
Java组件可以是一个applet或一个JavaBean。

plugin动作有多个对应HTML元素的属性用于格式化Java 组件。
param元素可用于向Applet 或 Bean 通报参数。

以下是利用plugin 动作元素的范例实例:

<jsp:plugin type=\"大众applet\"大众 codebase=\"大众dirname\"大众 code=\"大众MyApplet.class\"大众 width=\"大众60\公众 height=\"大众80\"大众> <jsp:param name=\公众fontcolor\公众 value=\公众red\"大众 /> <jsp:param name=\"大众background\"大众 value=\公众black\"大众 /> <jsp:fallback> Unable to initialize Java Plugin </jsp:fallback></jsp:plugin>

如果你有兴趣可以考试测验利用applet来测试jsp:plugin动作元素,<fallback>元素是一个新元素,在组件涌现故障的缺点时发送给用户缺点信息。

<jsp:element> 、 <jsp:attribute>、 <jsp:body>动作元素

<jsp:element> 、 <jsp:attribute>、 <jsp:body>动作元素动态定义XML元素。
动态是非常主要的,这就意味着XML元素在编译时是动态天生的而非静态。

以下实例动态定义了XML元素:

<%@ page language=\"大众java\"大众 contentType=\"大众text/html; charset=UTF-8\"大众 pageEncoding=\"大众UTF-8\"大众%><!DOCTYPE html><html><head><meta charset=\"大众utf-8\公众><title>菜鸟教程(runoob.com)</title></head><body><jsp:element name=\"大众xmlElement\"大众><jsp:attribute name=\"大众xmlElementAttr\"大众> 属性值</jsp:attribute><jsp:body> XML 元素的主体</jsp:body></jsp:element></body></html>

<jsp:text>动作元素

<jsp:text>动作元素许可在JSP页面和文档中利用写入文本的模板,语法格式如下:

<jsp:text>模板数据</jsp:text>

以上文本模板不能包含其他元素,只能只能包含文本和EL表达式(注:EL表达式将在后续章节中先容)。
请把稳,在XML文件中,您不能利用表达式如 ${whatever > 0},由于>符号是非法的。
你可以利用 ${whatever gt 0}表达式或者嵌入在一个CDATA部分的值。

<jsp:text><![CDATA[<br>]]></jsp:text>

如果你须要在 XHTML 中声明 DOCTYPE,必须利用到<jsp:text>动作元素,实例如下:

<jsp:text><![CDATA[<!DOCTYPE htmlPUBLIC \公众-//W3C//DTD XHTML 1.0 Strict//EN\公众\公众DTD/xhtml1-strict.dtd\公众>]]></jsp:text><head><title>jsp:text action</title></head><body><books><book><jsp:text> Welcome to JSP Programming</jsp:text></book></books></body></html>

你可以对以上实例考试测验利用<jsp:text>及不该用该动作元素实行结果的差异。