利用JSP动作可以动态地插入文件、重用JavaBean组件、把用户重定向到其余的页面、为Java插件天生HTML代码。
动作元素只有一种语法,它符合XML标准:
<jsp:action_name attribute=\"大众value\"大众 />
动作元素基本上都是预定义的函数,JSP规范定义了一系列的标准动作,它用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动作干系的属性列表。
实例
以下我们定义了两个文件 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动作干系的属性列表。
在给出详细实例前,让我们先来看下 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动作有下面四个属性,如下表:
<jsp:getProperty>动作元素
jsp:getProperty动作提取指定Bean属性的值,转换成字符串,然后输出。语法格式如下:
<jsp:useBean id=\"大众myName\公众 ... />
...
<jsp:getProperty name=\公众myName\公众 property=\公众someProperty\"大众 .../>
下表是与getProperty干系联的属性:
实例
以下实例我们利用了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干系联的属性:
实例
以下实例我们利用了两个文件,分别是: 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 html
PUBLIC \"大众-//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>及不该用该动作元素实行结果的差异。
如您还有不明白的可以不才面与我留言或是与我磋商QQ群308855039,我们一起飞!