📜  JSP-动作

📅  最后修改于: 2020-11-13 05:17:27             🧑  作者: Mango


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

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


动作元素基本上是预定义的功能。下表列出了可用的JSP操作-

S.No. Syntax & Purpose
1

jsp:include

Includes a file at the time the page is requested.

2

jsp:useBean

Finds or instantiates a JavaBean.

3

jsp:setProperty

Sets the property of a JavaBean.

4

jsp:getProperty

Inserts the property of a JavaBean into the output.

5

jsp:forward

Forwards the requester to a new page.

6

jsp:plugin

Generates browser-specific code that makes an OBJECT or EMBED tag for the Java plugin.

7

jsp:element

Defines XML elements dynamically.

8

jsp:attribute

Defines dynamically-defined XML element’s attribute.

9

jsp:body

Defines dynamically-defined XML element’s body.

10

jsp:text

Used to write template text in JSP pages and documents.

共同属性

所有Action元素共有两个属性: id属性和scope属性。

ID属性

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

范围属性

此属性标识Action元素的生命周期。 id属性和scope属性直接相关,因为scope属性决定了与id关联的对象的寿命。 scope属性具有四个可能的值: (a)页面,(b)request,(c)session(d)application

操作

通过此操作,您可以将文件插入到正在生成的页面中。语法看起来像这样-


include指令不同, include指令在将JSP页面转换为servlet时插入文件,而该动作则在请求页面时插入文件。

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

S.No. Attribute & Description
1

page

The relative URL of the page to be included.

2

flush

The boolean attribute determines whether the included resource has its buffer flushed before it is included.

让我们如下定义以下两个文件(a)date.jsp(b)main.jsp-

以下是date.jsp文件的内容-

Today's date:

以下是main.jsp文件的内容-

The include Action Example
   
   
   
      

The include action Example

现在让我们将所有这些文件保留在根目录中,然后尝试访问main.jsp 。您将收到以下输出-

The include action Example
   Today's date: 12-Sep-2010 14:54:22

操作

useBean动作非常灵活。它首先使用id和scope变量搜索现有对象。如果找不到对象,则尝试创建指定的对象。

加载bean的最简单方法如下-


加载Bean类后,可以使用jsp:setPropertyjsp:getProperty操作来修改和检索Bean属性。

下表列出了与useBean操作关联的属性-

S.No. Attribute & Description
1

class

Designates the full package name of the bean.

2

type

Specifies the type of the variable that will refer to the object.

3

beanName

Gives the name of the bean as specified by the instantiate () method of the java.beans.Beans class.

现在,在给出与这些动作相关的有效示例之前,让我们讨论一下jsp:setPropertyjsp:getProperty动作。

操作

setProperty操作设置Bean的属性。在执行此操作之前,必须预先定义Bean。有两种使用setProperty操作的基本方法-

您可以在jsp:useBean元素之后但在jsp:useBean元素之外使用jsp:setProperty ,如下所示-


...

在这种情况下,无论是否实例化了一个新bean或找到了一个现有bean,都将执行jsp:setProperty

可以出现jsp:setProperty的第二个上下文是在jsp:useBean元素的主体内部,如下所示-


   ...
   

在这里,仅当实例化一个新对象时才执行jsp:setProperty,而不是在找到现有对象时执行。

下表列出了与setProperty操作关联的属性-

S.No. Attribute & Description
1

name

Designates the bean the property of which will be set. The Bean must have been previously defined.

2

property

Indicates the property you want to set. A value of “*” means that all request parameters whose names match bean property names will be passed to the appropriate setter methods.

3

value

The value that is to be assigned to the given property. The the parameter’s value is null, or the parameter does not exist, the setProperty action is ignored.

4

param

The param attribute is the name of the request parameter whose value the property is to receive. You can’t use both value and param, but it is permissible to use neither.

操作

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

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


...

下表列出了与getProperty操作关联的必需属性-

S.No. Attribute & Description
1

name

The name of the Bean that has a property to be retrieved. The Bean must have been previously defined.

2

property

The property attribute is the name of the Bean property to be retrieved.

让我们定义一个将在我们的示例中进一步使用的测试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并设置/获取一个简单的String参数-

Using JavaBeans in JSP
   
   
   
      

Using JavaBeans in JSP

Got message....

现在让我们尝试访问main.jsp ,它将显示以下结果-

Using JavaBeans in JSP
Got message....
Hello JSP...

操作

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

以下是前进动作的语法-


下表列出了与转发操作相关的必需属性-

S.No. Attribute & Description
1

page

Should consist of a relative URL of another resource such as a static page, another JSP page, or a Java Servlet.

让我们重新使用以下两个文件(a)date.jsp(b)main.jsp ,如下所示-

以下是date.jsp文件的内容-

Today's date:

以下是main.jsp文件的内容-

The include Action Example
   
   
   
      

The include action Example

现在让我们将所有这些文件保留在根目录中,然后尝试访问main.jsp 。这将显示如下结果。

在这里,它丢弃了主页上的内容,仅显示了转发页面上的内容。

Today's date: 12-Sep-2010 14:54:22

操作

plugin操作用于将Java组件插入JSP页面。它确定浏览器的类型,并根据需要插入标记。

如果所需的插件不存在,它将下载该插件,然后执行Java组件。 Java组件可以是Applet或JavaBean。

插件操作具有一些属性,这些属性与用于格式化Java组件的常见HTML标签相对应。 元素还可用于将参数发送到Applet或Bean。

以下是使用插件动作的典型语法-


   
   
 
   
      Unable to initialize Java Plugin
   
 

如果您有兴趣,可以使用一些applet尝试此操作。新的元素元素可用于指定在组件发生故障时要发送给用户的错误字符串。

The  Action
The  Action
The  Action

操作用于动态定义XML元素。动态一词很重要,因为它意味着XML元素可以在请求时生成,而不是在编译时静态生成。

以下是一个简单的示例,用于动态定义XML元素-

Generate XML Element
   
   
      
         
            Value for the attribute
         
         
         
            Body for XML element
         
      
      
   

这将在运行时生成以下HTML代码-

Generate XML Element
   
   
      
         Body for XML element
      
   

操作

操作可用于在JSP页面和文档中编写模板文本。以下是此操作的简单语法-

Template data

模板的主体不能包含其他元素。它只能包含文本和EL表达式(注-EL表达式在下一章中进行了说明)。请注意,在XML文件中,不能使用$ {whatever> 0}之类的表达式,因为大于号是非法的。而是使用gt形式,例如$ {whatever gt 0}或另一种方法是将值嵌入CDATA节中。

]]>

如果需要包括DOCTYPE声明(例如XHTML) ,则还必须使用元素,如下所示:

]]>

   jsp:text action
   
   
        
         Welcome to JSP Programming
      
   

尝试上面的示例使用和不使用操作。