- JSP 基础教程
- JSP - 主页
- JSP - 概述
- JSP - 环境设置
- JSP-架构
- JSP-生命周期
- JSP - 语法
- JSP - 指令
- JSP - 操作
- JSP - 隐式对象
- JSP - 客户请求
- JSP——服务器响应
- JSP - HTTP 状态代码
- JSP - 表单处理
- JSP - 编写过滤器
- JSP - Cookie 处理
- JSP - 会话跟踪
- JSP-文件上传
- JSP - 处理日期
- JSP - 页面重定向
- JSP - 点击计数器
- JSP - 自动刷新
- JSP - 发送电子邮件
- 高级 JSP 教程
- JSP - 标准标签库
- JSP - 数据库访问
- JSP - XML 数据
- JSP-Java Bean
- JSP - 自定义标签
- JSP——表达式语言
- JSP——异常处理
- JSP-调试
- JSP-安全性
- JSP-国际化
- JSP 有用资源
- JSP - 问题与解答
- JSP - 快速指南
- JSP - 有用的资源
- JSP - 讨论
JSP - 操作
在本章中,我们将讨论 JSP 中的操作。这些操作使用 XML 语法中的构造来控制 servlet 引擎的Behave。您可以动态插入文件、重用 JavaBeans 组件、将用户转发到另一个页面或为 Java 插件生成 HTML。
Action 元素只有一种语法,因为它符合 XML 标准 -
<jsp:action_name attribute = "value" />
动作元素基本上是预定义的函数。下表列出了可用的 JSP 操作 -
编号 | 语法和目的 |
---|---|
1 | jsp:包含 请求页面时包含一个文件。 |
2 | jsp:useBean 查找或实例化 JavaBean。 |
3 | jsp:设置属性 设置 JavaBean 的属性。 |
4 | jsp:获取属性 将 JavaBean 的属性插入到输出中。 |
5 | jsp:转发 将请求者转发到新页面。 |
6 | jsp:插件 生成特定于浏览器的代码,为 Java 插件创建 OBJECT 或 EMBED 标记。 |
7 | jsp:元素 动态定义 XML 元素。 |
8 | jsp:属性 定义动态定义的 XML 元素的属性。 |
9 | jsp:正文 定义动态定义的 XML 元素的主体。 |
10 | jsp:文本 用于在 JSP 页面和文档中编写模板文本。 |
通用属性
有两个属性是所有 Action 元素共有的:id属性和scope属性。
ID属性
id 属性唯一标识 Action 元素,并允许在 JSP 页面内引用该操作。如果 Action 创建对象的实例,则可以使用 id 值通过隐式对象 PageContext 来引用它。
范围属性
该属性标识 Action 元素的生命周期。id 属性和scope 属性直接相关,因为scope 属性决定了与id 关联的对象的生命周期。scope 属性有四个可能的值:(a) page、(b)request、(c)session和(d) application。
<jsp:include> 操作
此操作允许您将文件插入正在生成的页面中。语法如下 -
<jsp:include page = "relative URL" flush = "true" />
与include指令在 JSP 页面转换为 servlet 时插入文件不同,此操作在请求页面时插入文件。
下表列出了与包含操作相关的属性 -
编号 | 属性及描述 |
---|---|
1 | 页 要包含的页面的相对 URL。 |
2 | 冲水 布尔属性确定所包含的资源在包含之前是否刷新其缓冲区。 |
例子
让我们定义以下两个文件(a)date.jsp和(b) main.jsp如下 -
以下是date.jsp文件的内容-
<p>Today's date: <%= (new java.util.Date()).toLocaleString()%></p>
以下是main.jsp文件的内容-
<html> <head> <title>The include Action Example</title> </head> <body> <center> <h2>The include action Example</h2> <jsp:include page = "date.jsp" flush = "true" /> </center> </body> </html>
现在让我们将所有这些文件保留在根目录中并尝试访问main.jsp。您将收到以下输出 -
The include action Example
Today's date: 12-Sep-2010 14:54:22
<jsp:useBean> 操作
useBean操作非常通用。它首先使用 id 和scope 变量搜索现有对象。如果未找到对象,它将尝试创建指定的对象。
加载 bean 最简单的方法如下 -
<jsp:useBean id = "name" class = "package.class" />
加载 bean 类后,您可以使用jsp:setProperty和jsp:getProperty操作来修改和检索 bean 属性。
下表列出了与 useBean 操作相关的属性 -
编号 | 属性及描述 |
---|---|
1 | 班级 指定 bean 的完整包名称。 |
2 | 类型 指定将引用该对象的变量的类型。 |
3 | 豆名 给出由 java.beans.Beans 类的 instantiate () 方法指定的 bean 名称。 |
现在让我们讨论jsp:setProperty和jsp:getProperty操作,然后再给出与这些操作相关的有效示例。
<jsp:setProperty> 操作
setProperty操作设置 Bean 的属性。在此操作之前必须先定义 Bean。使用 setProperty 操作有两种基本方法 -
您可以在jsp:useBean 元素之后但在jsp:useBean元素之外使用 jsp:setProperty,如下所示 -
<jsp:useBean id = "myName" ... /> ... <jsp:setProperty name = "myName" property = "someProperty" .../>
在这种情况下,无论是实例化新 bean 还是找到现有 bean,都会执行jsp:setProperty 。
jsp:setProperty 可以出现的第二个上下文是jsp:useBean元素的主体内部,如下所示 -
<jsp:useBean id = "myName" ... > ... <jsp:setProperty name = "myName" property = "someProperty" .../> </jsp:useBean>
此处,仅当实例化新对象时才执行 jsp:setProperty,而不是在找到现有对象时执行。
下表列出了与setProperty操作相关的属性-
编号 | 属性及描述 |
---|---|
1 | 姓名 指定将设置其属性的 bean。该 Bean 必须已预先定义。 |
2 | 财产 表示您要设置的属性。值“*”意味着名称与 bean 属性名称匹配的所有请求参数都将传递到适当的 setter 方法。 |
3 | 价值 要分配给给定属性的值。如果参数值为空,或者参数不存在,setProperty 操作将被忽略。 |
4 | 参数 param 属性是属性要接收其值的请求参数的名称。您不能同时使用 value 和 param,但两者都不使用是允许的。 |
<jsp:getProperty> 操作
getProperty操作用于检索给定属性的值并将其转换为字符串,最后将其插入到输出中。
getProperty 操作只有两个属性,这两个属性都是必需的。getProperty 操作的语法如下 -
<jsp:useBean id = "myName" ... /> ... <jsp:getProperty name = "myName" property = "someProperty" .../>
下表列出了与getProperty操作关联的必需属性-
编号 | 属性及描述 |
---|---|
1 | 姓名 具有要检索的属性的 Bean 的名称。该 Bean 必须已预先定义。 |
2 | 财产 property 属性是要检索的 Bean 属性的名称。 |
例子
让我们定义一个将在我们的示例中进一步使用的测试 bean -
/* File: TestBean.java */ 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-7.0.2\webapps\WEB-INF\classes\action文件夹中,并且CLASSPATH变量也应该是设置到这个文件夹 -
现在在main.jsp文件中使用以下代码。这会加载 bean 并设置/获取一个简单的字符串参数 -
<html> <head> <title>Using JavaBeans in JSP</title> </head> <body> <center> <h2>Using JavaBeans in JSP</h2> <jsp:useBean id = "test" class = "action.TestBean" /> <jsp:setProperty name = "test" property = "message" value = "Hello JSP..." /> <p>Got message....</p> <jsp:getProperty name = "test" property = "message" /> </center> </body> </html>
现在让我们尝试访问main.jsp,它将显示以下结果 -
Using JavaBeans in JSP
Got message.... Hello JSP...
<jsp:forward> 操作
转发操作终止当前页面的操作,并将请求转发到另一个资源,例如静态页面、另一个 JSP 页面或 Java Servlet 。
以下是前向操作的语法-
<jsp:forward page = "Relative URL" />
下表列出了与转发操作相关的必需属性 -
编号 | 属性及描述 |
---|---|
1 | 页 应包含另一个资源(例如静态页面、另一个 JSP 页面或 Java Servlet)的相对 URL。 |
例子
让我们重用以下两个文件(a) date.jsp和(b) main.jsp,如下所示 -
以下是date.jsp文件的内容-
<p>Today's date: <%= (new java.util.Date()).toLocaleString()%></p>
以下是main.jsp文件的内容-
<html> <head> <title>The include Action Example</title> </head> <body> <center> <h2>The include action Example</h2> <jsp:forward page = "date.jsp" /> </center> </body> </html>
现在让我们将所有这些文件保留在根目录中并尝试访问main.jsp。这将显示如下结果。
这里它丢弃了主页中的内容,仅显示转发页面中的内容。
Today's date: 12-Sep-2010 14:54:22
<jsp:plugin> 操作
插件操作用于将 Java 组件插入到 JSP 页面中。它确定浏览器的类型并根据需要插入<object>或<embed>标记。
如果所需的插件不存在,则会下载该插件,然后执行 Java 组件。Java 组件可以是Applet 或JavaBean。
插件操作有几个与用于格式化 Java 组件的常见 HTML 标记相对应的属性。<param>元素还可用于向 Applet 或 Bean 发送参数。
以下是使用插件操作的典型语法 -
<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>
如果您有兴趣,可以使用一些小程序尝试此操作。新元素<fallback>元素可用于指定在组件失败时发送给用户的错误字符串。
The <jsp:element> Action
The <jsp:attribute> Action
The <jsp:body> Action
< jsp:element>、<jsp:attribute>和<jsp:body>操作用于动态定义 XML 元素。动态这个词很重要,因为它意味着 XML 元素可以在请求时生成,而不是在编译时静态生成。
以下是动态定义 XML 元素的简单示例 -
<%@page language = "java" contentType = "text/html"%> <html xmlns = "http://www.w3c.org/1999/xhtml" xmlns:jsp = "http://java.sun.com/JSP/Page"> <head><title>Generate XML Element</title></head> <body> <jsp:element name = "xmlElement"> <jsp:attribute name = "xmlElementAttr"> Value for the attribute </jsp:attribute> <jsp:body> Body for XML element </jsp:body> </jsp:element> </body> </html>
这将在运行时生成以下 HTML 代码 -
<html xmlns = "http://www.w3c.org/1999/xhtml" xmlns:jsp = "http://java.sun.com/JSP/Page"> <head><title>Generate XML Element</title></head> <body> <xmlElement xmlElementAttr = "Value for the attribute"> Body for XML element </xmlElement> </body> </html>
<jsp:text> 操作
<jsp:text>操作可用于在 JSP 页面和文档中写入模板文本。以下是此操作的简单语法 -
<jsp:text>Template data</jsp:text>
模板主体不能包含其他元素;它只能包含文本和 EL 表达式(注 - EL 表达式将在后续章节中解释)。请注意,在 XML 文件中,您不能使用${whatever > 0}等表达式,因为大于号是非法的。相反,请使用gt形式,例如${whatever gt 0}或替代方法是将值嵌入到CDATA部分中。
<jsp:text><![CDATA[<br>]]></jsp:text>
如果您需要包含DOCTYPE声明(例如XHTML ),则还必须使用<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>操作的上述示例。