JSP教程(五)-JSP Actions的使用下

jsp:useBean Action 的使用

  一、 语法:
<jsp:useBean
id="beanInstanceName"
scope="page|request|session|application"
{ class="package.class" |
type="package.class" |
class="package.class" type="package.class" |
beanName="{package.class | <%= expression %>}" type="package.class"
}
{ /> |
> 其他元素
</jsp:useBean>
}

  这个action使您能将一个JavaBean装入一个JSP页面。这是一个非常有用的能力,因为它使您可以使用可重用的JAVA类而不需牺牲性能。最简单的语法用于指定一个bean:

  <jsp:useBean id="name" class="package.class" />

  这通常意味着“实例化一个类的对象通过指定一个类,并将之与一个通过id指定名称的变量绑定”。然而,就象我们看到的,您可以指定一个scope属性来使得bean不仅仅与当前的页面相联系。在这种情形下,得到一个对已存在的bean的引用是非常有用的,而且,仅当没有相同的id和scope的bean存在时才创建一个新的。现在,您已有了bean,您可以通过jsp:setProperty来修改它,或者,通过使用之前用id指定的名字来使用scriptlet或明确的调用方法。当您说“这个bean有一个称为foo的X类型的属性”,您真正的意思是“这个类有一个称为getFoo的方法,它返回X类型的某类值,还有另一个方法称为setFoo,它以X为参数。”这jsp:setProperty action 将在下一单元详细的介绍,但是现在您既可以给出一个明确的值,给出一个属性来说明此值是从request的参数继承而来,也可以仅仅列出属性来标志此值应该从与属性名同名的参数继承而来。您可以通过调用适用的getXxx方法,或更普遍的,使用jsp:getProperty action,来得到已存在的JSP表达式或scriptlet属性。

  请注意,为bean指定的类必须在服务器的规则的类路径下,而不是用来保留当改变时自动装载的类的路径。例如,在Java Web Server上,它和它所用的类必须到类的目录或在lib目录下的一个jar文件内,而不是在servlets的目录下。

  下面让我们来看一个非常简单的例子,它装载一个bean并且设置/得到一个简单的串参数。

BeanTest.jsp
<HTML>
<HEAD>
<TITLE>Reusing JavaBeans in JSP</TITLE>
</HEAD>
<BODY>
<CENTER>
<TABLE BORDER=5>
<TR><TH CLASS="TITLE">
Reusing JavaBeans in JSP</TABLE>
</CENTER>
<P>
<jsp:useBean id="test" class="hall.SimpleBean" />
<jsp:setProperty name="test"
property="message"
value="Hello WWW" />
<H1>Message: <I>
<jsp:getProperty name="test" property="message" />
</I></H1>
</BODY>
SimpleBean.java

  以下是bean的原代码:

package hall;
public class SimpleBean {
private String message = "No message specified";
public String getMessage() {
return(message);
}
public void setMessage(String message) {
this.message = message;
}
}

  运行结果为:页面输出: Reusing JavaBeans in JSP

  b>Message:Hello WWW

  二、jsp:useBean 的详细用法

  最简单的使用bean的方式是:

  <jsp:useBean id="name" class="package.class"/>
  为了装载bean,需要用jsp:setProperty和 jsp:getProperty来修改和检索bean的属性。且,还有两种别的选项。首先,您可以使用容器的格式,也就是:

<jsp:useBean ...>
Body
</jsp:useBean>

要指出的是,Body部分应该仅在bean第一次实例化时被执行,而不是在每次被找到和使用时。Beans能够被共享,因此,并不是所有的jsp:useBean 陈述都产生一个新的bean的实例。其次,除了id 或class以外,还有三种属性您可以使用:scope,type,和beanName。这些属性总结如下:

  属性

  用法

id
  给一个变量命名,此变量将指向bean。如果发现存在一个具有相同的id和scope 的bean则使用之而不新建一个。

class
  指出bean的完整的包名。

scope
  指明bean在之上可以被使用的前后关系。有四个可能的值:page,request,session,和application。缺省为page,表明bean仅在当前页可用(保存在当前的PageContext中)。request的一个值表明bean仅用于当前客户端的请求(保存在ServletRequest对象中)。Session的值指出在当前的HttpSession的生命周期内,对象对所有的页面可用。 最后,application的值指出对象对所有共享ServletsContext的页面可以使用。使用jsp:useBean 仅在没有相同的id和scope 的bean时创建一个新的bean,如果已有则使用之,并忽略以jsp:useBean标志开始和结尾的代码。

type
  指明将指向对象的变量的类型。这必须与类名相匹配或是一个超类或者是一个实现类的接口。记住,变量的名由id属性来指定。

beanName
  赋予bean一个名字,您应该在Beans的实例化方法中提供。它允许您给出type和一个beanName,并省略类属性。
  三、jsp:setProperty Action

  语法:

<jsp:setProperty
name="beanInstanceName"
{ property="*" |
property="propertyName" [ param="parameterName" ] |
property="propertyName" value="{string | <%= expression %>}"
}
/>

  在前面我们就知道了可以使用 jsp:setProperty 来为一个bean的属性赋值。您可以使用两种方式实现它。其一是,在jsp:useBean后(而不是在之内)使用jsp:setProperty:

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

  在这种方式中,jsp:setProperty 将被执行无论是否已有一个具有相同的id和scope的bean存在。另一种方式是,jsp:setProperty出现在jsp:useBean 元素内,如:

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

  此种情况下,jsp:setProperty仅在新的对象被实例化时才执行。

  以下是四种jsp:setProperty的可用的属性:

  属性

  用法

name
  这是一个必选属性。它指出哪一个bean的属性将被设置。jsp:usebean必须出现在jsp:setProperty之前。

property
  这是一个必选属性。表明您将设置哪一个属性。然而,有一个特殊的情况:如果以"*"为值意味着,所有的名称与bean的属性匹配的request参数都将被传递到相应的属性设置方法。
value
  这是一个可选属性。它指定被设置的属性的值。字符串的值通过相应的对象或包的标准的valueOf方法将自动的转换为numbers,boolean,Boolean,byte,Byte,char,和Character。例如,boolean或Boolean属性的值“true”将通过Boolean.valueOf方法转化,而,一个int或Integer属性的值“42”将通过Integer.valueOf转化。您不能同时使用value和param属性,但,两个都不用是允许的。

param
  这是一个可选属性。它指明了bean的属性应该继承的request的参数。如果当前的request没有这样的一个参数,就什麽也不做:系统并不将null传给设置属性的方法。因此,您可以使用bean的缺省值。例如下面的这段程序执行“将numberOfItems属性设置为任意numItems request参数的值,如果有这样的一个request参数,否则什么也不做。”

<jsp:setProperty name="orderBean"
property="numberOfItems"
param="numItems" />

  如果您将value和param同时缺省,这和您将param的名称设为bean的属性名相同一样。您可以通过将name的值设置为”*”和省略value和param来自动的使用与bean的属性相应的request的属性。在这种情况下,服务器将反复的查找可用的属性和request参数来匹配具有相同名字的。

  四、jsp:getProperty Action

  语法:

  <jsp:getProperty name="beanInstanceName" property="propertyName" />

  这个属性检索出bean的属性的值并将之转化为一个字符串,然后将之插入到输出。它有两个必选属性:name,在之前用jsp:useBean引入的名称,property,必须被插入值的属性。

(0)

相关推荐

  • JSP教程(五)-JSP Actions的使用下

    jsp:useBean Action 的使用 一. 语法: <jsp:useBeanid="beanInstanceName"scope="page|request|session|application"{ class="package.class" |type="package.class" |class="package.class" type="package.class"

  • JSP教程(四)-JSP Actions的使用

    JSP actions 使用您可以动态的插入一个文件,重用JavaBeans组件,前进到另一个页面,或为Java 插件生成一个HTML.可以使用的action 有: (1) jsp:include --在页面被请求时包含进一个文件.(2) jsp:useBean--找到或实例化一个JavaBean.(3) jsp:setProperty--设置一个JavaBean属性.(4) jsp:getProperty--将JavaBean的属性插入到输出.(5) jsp:forward--让请求者可以向前

  • JSP教程(三)--JSP中”预定义变量”的使用

    为了简化JSP表达式和scriptlets中的代码,提供了8种自动定义的变量,有时称做implicit objects(固有对象).它们是:request,response,out,session,application,config,pageContext,和 page.下面我们来详细的了解它们. request 与request相联系的是HttpServletRequest类,使您可以得到request的参数(通过getParameter方法),request 的类型(GET,POST,HE

  • JSP教程(二)

    JSP directive mso-hansi-font-family:"">影响servlet 类的整体结构.它常用以下形式: <%@ directive attribute="value"%> 而且,您可以将多个属性写在一个语句中: <%@ directive attribute1="value1" attribute2="value2" attributeN="valueN"

  • JSP教程(一)

    JSP概述 JSP(IAVA SERVER PAGES)是由Sun 公司在java语言上开发出来的一种动态网页制作技术,其可使您可以将网页中的动态部分和静态的HTML相分离.您可以使用平常得心应手的工具并按照平常的方式来书写HTML语句.然后,将动态部分用特殊的标记嵌入即可,这些标记常常以"<%"开始并以"%>"结束.例如,这儿有一个JSP页面: <html> <head><title>jsp教程</title&

  • Java Servlet和JSP教程

    ]     这是一个比较完整的Servlet.JSP教程,包含大量的实用资料和示例,仙人掌工作室倾情推荐.全文共十三章,主要包括:Servlet和JSP特点,安装和配置开发.运行环境,表单数据处理,HTTP请求头.应答状态处理,访问CGI变量,会话状态,JSP脚本元素.指令.动作,等等.具体请见<目录>. 目录作 者 : 仙人掌工作室 目 录 一.Servlet和JSP概述 1.1 JavaServlet及其特点 1.2 JSP及其特点 二.设置开发.运行环境 2.1 安装Servlet和JS

  • Java之JSP教程九大内置对象详解(下篇)

    目录 前言 JSP pageContext对象 示例 JSP page对象 示例 JSP Cookie的使用 JSP 使用 cookie 主要分为以下几个步骤. 创建 cookie 对象 写入 cookie 设置 cookie 有效期 读取cookie 示例 读取cookie 删除cookie session和cookie的区别 前言 之前我们在这篇文章Java之JSP教程九大内置对象详解中,已经讲解完了六个个对象,接下来我们讲解最后的三个对象 JSP pageContext对象 pageCon

  • Java之JSP教程九大内置对象详解(上篇)

    目录 JSP九大内置对象一览表 九大内置对象 四大域对象 JSP request对象 示例 JSP response对象 示例 JSP out对象 示例 JSP九大内置对象一览表 为了简化页面的开发过程,JSP 提供了一些内置对象. JSP 内置对象又称为隐式对象,它们由容器实现和管理. 在 JSP 页面中,这些内置对象不需要预先声明,也不需要进行实例化,我们可以直接在脚本和表达式中使用. 注意:JSP 内置对象只能在脚本和表达式中使用,在声明中不能使用. 九大内置对象 JSP 中定义了 9 个

  • JSP教程之使用JavaBean完成业务逻辑的方法

    本文实例讲述了JSP教程之使用JavaBean完成业务逻辑的方法.分享给大家供大家参考.具体如下: 一.目标: ① 掌握什么是JavaBean: ② 掌握如何编写JavaBean: ③ 掌握如何在JSP中访问JavaBean: ④ 理解JSP中对象的4个作用范围. 二.主要内容: 通过把上一讲中login_process.jsp中的验证过程进行封装形成JavaBean,然后在JSP页面中调用这个JavaBean,介绍JavaBean的编写和访问. 通过简单实例介绍JavaBean对象的4个作用范

  • Java之JSP教程九大内置对象详解(中篇)

    目录 前言 JSP session对象 拓展 JSP application对象 示例 JSP config对象 前言 之前我们在这篇文章Java之JSP教程九大内置对象详解(上篇)中,讲解了三个对象,接下来我们讲解下面的三个对象 JSP session对象 JSP session 是 javax.servlet.http.HttpSession 的实例对象,主要用来访问用户数据,记录客户的连接信息. HTTP 协议是一种无状态的协议(即不保存连接状态的协议).每次用户向服务器发出请求,且服务器

随机推荐