JSP 动作元素
JSP教程 - JSP动作元素
JSP动作控制底层servlet引擎的行为。
使用JSP动作,我们可以动态插入文件,重用JavaBeans组件或将用户转发到另一个页面。
以下代码是动作元素的语法:
<jsp:action_name attribute="value" />
例子
我们可以使用以下JSP动作元素。
语法 | 目的 |
---|---|
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页面和文档中写入模板文本。 |
JSP动作中的通用属性
所有Action元素有两个常用属性: id
属性和 scope
属性。
Id属性唯一标识Action元素。我们可以使用id来引用JSP页面中的动作。
Scope属性标识Action元素的生命周期。 scope
属性有四个可能的值:
- page
- request
- session
- application
jsp:include 动作
jsp:include动作将文件插入JSP页面。语法如下所示:
<jsp:include page="relative URL" flush="true" />
include
指令在JSP页面被翻译成servlet时包括一个文件,而jsp:include动作在请求页面时插入文件。
下表列出了与包含动作相关联的属性。
属性 | 描述 |
---|---|
page | 要包括的页面的相对URL。 |
flush | boolean属性确定包含的资源在包含之前是否应使其缓冲区刷新。 |
以下代码显示如何使用include动作。
这里是data.jsp。
<p> Today"s date: <%= (new java.util.Date()).toLocaleString()%> </p>
这里是main.jsp文件的内容:
<html> <body> <jsp:include page="date.jsp" flush="true" /> </body> </html>
jsp:useBean 动作
useBean
动作首先使用 id
和 scope
属性搜索现有对象。如果没有找到对象,它将创建指定的对象。
加载bean的最简单的方法如下:
<jsp:useBean id="name" class="java.lang.String" />
<jsp:useBean id="yourName" class="com.yourCom.YourClassName" />
一旦bean被加载,我们可以使用 jsp:setProperty
和 jsp:getProperty
动作来修改和检索bean属性。
下表列出了与useBean动作相关联的属性。
描述 | 描述 |
---|---|
class | 定义bean的完整包名称。 |
type | 指定变量的类型。 |
beanName | 命名加载的bean。 |
jsp:setProperty 动作
setProperty
动作设置Bean的属性。
我们可以在jsp:useBean元素之外使用 jsp:setProperty
,如下所示。
<jsp:useBean id="myName" ... /> <jsp:setProperty name="myName" property="someProperty" .../>
或者我们可以在jsp:useBean
元素的正文中包含jsp:setProperty
,如下所示。
<jsp:useBean id="myName" ... > ... <jsp:setProperty name="myName" property="someProperty" .../> </jsp:useBean>
在上面的代码中,只有在实例化新对象时才执行jsp:setProperty,而不是如果找到现有对象。
下表列出了与 setProperty
动作相关联的属性。
描述 | 描述 |
---|---|
name | 将设置其属性的bean的名称。 |
property | 要设置的属性。 值“*"表示名称与bean属性名称匹配的所有请求参数都将传递到相应的setter方法。 |
value | 要设置为属性的值。 |
param | param属性是请求参数的名称。 |
jsp:getProperty 动作
getProperty
动作检索给定属性的值并将其转换为字符串,然后将其插入到输出中。
getProperty动作有两个属性,如下所示:
<jsp:useBean id="myName" ... /> ... <jsp:getProperty name="myName" property="someProperty" .../>
以下是与getProperty动作相关联的必需属性的列表。
描述 | 描述 |
---|---|
name | 必须先前已定义的Bean的名称。 |
property | Bean属性的名称。 |
userBean示例,set/get属性
创建JavaBean如下。
package action; public class TestBean { private String message = "No message specified"; public String getMessage() { return(message); } public void setMessage(String message) { this.message = message; } }
将上面的代码编译为TestBean.class文件,并将TestBean.class复制到C:\apache-tomcat\webapps\WEB-INF\classes\action文件夹。
将以下代码保存到hello.jsp文件。
<html> <body> <jsp:useBean id="test" class="action.TestBean" /> <jsp:setProperty name="test" property="message" value="Hello JSP..." /> <jsp:getProperty name="test" property="message" /> </body> </html>
jsp:forward 动作
forward
动作将请求转发到另一个静态页面,或另一个JSP页面或Java Servlet。
此动作的简单语法如下:
<jsp:forward page="relativeURL | <%= expression %>" />
下表列出了 forward
动作所需的属性。
属性 | 描述 |
---|---|
page | 其他资源的相对网址。 |
以下代码显示如何使用 forward 动作。
date.jsp文件:
<p> Today"s date: <%= (new java.util.Date()).toLocaleString()%> </p>
这里是main.jsp文件:
<html> <body> <jsp:forward page="date.jsp" /> </body> </html>
jsp:plugin 动作
plugin
动作可以将包含在<object>或<embed>标签中的Java applet插入JSP页面。
以下代码列出了使用插件动作的典型语法。
<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>
jsp:body 动作
< jsp:element>,< jsp:attribute> 和< jsp:body> 动作定义XML元素。
以下代码显示了如何动态定义XML元素。
<%@page language="java" contentType="text/html"%> <html xmlns="http://www.w3c.org/1999/xhtml" xmlns:jsp="http://java.sun.com/JSP/Page"> <body> <jsp:element name="xmlElement"> <jsp:attribute name="xmlElementAttr"> Value </jsp:attribute> <jsp:body> Body </jsp:body> </jsp:element> </body> </html>