📅  最后修改于: 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属性唯一标识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:setProperty和jsp: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:setProperty和jsp: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元素-
Generate XML Element
Value for the attribute
Body for XML element
这将在运行时生成以下HTML代码-
Generate XML Element
Body for XML element
Template data
模板的主体不能包含其他元素。它只能包含文本和EL表达式(注-EL表达式在下一章中进行了说明)。请注意,在XML文件中,不能使用$ {whatever> 0}之类的表达式,因为大于号是非法的。而是使用gt形式,例如$ {whatever gt 0}或另一种方法是将值嵌入CDATA节中。
]]>
如果需要包括DOCTYPE声明(例如XHTML) ,则还必须使用
]]>
jsp:text action
Welcome to JSP Programming
尝试上面的示例使用和不使用