JSP - 操作

在本章中,我们将讨论JSP中的Actions.这些操作使用XML语法中的构造来控制servlet引擎的行为.您可以动态插入文件,重用JavaBeans组件,将用户转发到另一个页面,或者为Java插件生成HTML.

Action元素只有一种语法,因为它符合到XML标准 :

<jsp:action_name attribute ="value"/>

动作元素基本上是预定义的函数.下表列出了可用的JSP操作 :

S.No.语法&目的
1

jsp:include

在请求页面时包含一个文件.

2

jsp:useBean

查找或实例化JavaBean.

3

jsp:setProperty

设置JavaBean的属性.

4

jsp:getProperty

将JavaBean的属性插入到输出中.

5

jsp:forward

将请求者转发到新页面.

6

jsp:plugin

生成特定于浏览器的内容为Java插件生成OBJECT或EMBED标记的代码.

7

jsp:element

定义XML元素动态.

8

jsp:attribute

定义动态定义的XML元素属性.

9

jsp:body

定义动态定义的XML元素的正文.

10

jsp:text

用于在JSP页面和文档中编写模板文本.

公共属性

所有Action元素共有两个属性: id 属性和范围属性.

Id属性

id属性唯一标识Action元素,并允许在JSP页面内引用该操作.如果Action创建对象的实例,则可以使用id值通过隐式对象PageContext引用它.

范围属性

这attribute标识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时插入文件,此操作将插入请求页面时的文件.

下表列出了与include操作相关的属性 :

S.No.属性&安培;描述
1

page

要包含的页面的相对网址.

2

flush

布尔属性确定包含的资源是否在其包含之前刷新了缓冲区.

示例

让我们定义以下两个文件(a)日期. jsp (b)main.jsp 如下 :

以下是 date.jsp 的内容file :

<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 ExampleToday'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操作相关的属性 :

S.No.属性和放大器;描述
1

指定bean的完整包名.

2

类型

指定将引用该对象的变量的类型.

3

beanName

给出java.beans.Beans类的instantiate()方法指定的bean名称.

现在让我们讨论 jsp:setProperty jsp:getProperty 在给出与这些操作相关的有效示例之前的操作.

< jsp:setProperty>操作

setProperty 操作设置Bean的属性.必须先在此操作之前定义Bean.使用setProperty动作有两种基本方法 :

您可以在 jsp:useBean之后使用 jsp:setProperty

b>元素,如下面给出 :

<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 操作相关联的属性 :

S.No.属性&描述
1

名称

指定将设置其属性的bean. Bean必须先前已定义.

2

属性

表示要设置的属性.值"*"表示名称与bean属性名称匹配的所有请求参数将传递给相应的setter方法.

3

要分配给给定属性的值.参数的值为null,或者参数不存在,将忽略setProperty操作.

4

param

param属性是请求参数的名称,该属性将接收其值.你不能同时使用value和param,但是允许两者都不使用.

< jsp:getProperty>操作

getProperty 操作用于检索给定属性的值并将其转换为字符串,最后将其插入到输出中.

getProperty操作只有两个属性,这两个属性都是必需的. getProperty操作的语法如下 :

<jsp:useBean id = "myName" ... />
...
<jsp:getProperty name = "myName" property = "someProperty" .../>

下表列出了与 getProperty 操作相关的必需属性 :

S.No.属性&描述
1

名称

具有要检索的属性的Bean的名称. Bean必须先前已定义.

2

属性

属性属性是要检索的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 文件,并确保您在 C:\ apache-tomcat-7.0.2 \webapps \WEB-INF \classes \action 文件夹和 CLASSPATH 中复制了TestBean.class变量也应设置为此文件夹 :

现在在 main.jsp 文件中使用以下代码.这会加载bean并设置/获取一个简单的String参数 :

<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 JSPGot message....
Hello JSP...

< jsp:forward>操作

转发操作终止当前页面的操作,并将请求转发到另一个资源,例如静态页面,另一个JSP页面或Java Servlet .

以下是转发操作的语法 :

<jsp:forward page = "Relative URL" />

下表列出了与正向操作相关的必需属性 :

S.No.属性和放大器;描述
1

页面

应该包含另一个资源的相对URL,例如静态页面,另一个JSP页面或Java Servlet .

示例

让我们来重复使用以下两个文件(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> ActionThe <jsp:attribute> ActionThe <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 = "https://img01.yuandaxia.cn/Content/img/tutorials/jsp/index.html
   
   <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 = "https://img01.yuandaxia.cn/Content/img/tutorials/jsp/index.html
   <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> 操作尝试上述示例.