JavaBean技术

   引言:

JavaBeans与一般Java类的编写类似.
在JSP页面中要使用JavaBeans,只要在JSP页面中使用JavaBeans的操作标记就可以了。
JavaBeans的编写和使用非常简单,下面举例说明。
   本讲内容:
1.JavaBeans的编写规范
2.在JSP中使用JavaBeans的操作标记
一、JavaBeans的编写规范

1.  JavaBeans的编写要求

JavaBeans也是一个Java类,但在定义JavaBeans时一般要遵守下面的要求:
  • nJavaBeans必须是一个公共类(public),即在类定义的前面一定要加访问修饰符public;
  • nJavaBeans必须有一个公共的(public)、不带参数的构造函数。因为构造函数可以重载,所以也可以有其他带参数的构造函数;
  • nJavaBeans一般都属性,这些属性是以类中数据成员的方式定义的,这些属性都是私有的(private),仅能通过一组共有的成员方法对其进行操作。
  • 设置属性的方法名要用setXXX();取得属性的方法名要用getXXX()。

2.  一个简单的JavaBeans实例

下面是一个简单的JavaBeans,该JavaBeans只定义了一个字符串属性。
实例10-1:一个简单的JavaBeans程序(HelloBean.java)

01: package myBean;

02: import java.io.*;

03: public class  HelloBean

04: {

05:   //定义属性

06:   private String name="Hello Bean";

07:   //定义无参的构造函数

08:   public HelloBean(){}

09:   //定义获取属性的getXXX方法

10:   public String getName()

11:   {

12:   return name;

13:   }

14:   //定义设置属性的setXXX方法

15:   public void setName(String  str)

16:   {

17:   name=str;

18:   }

19:         public static void main(String[] args)

20:   {

21:   System.out.println("Example JavaBeans");

22:   }

23: }

  • 该实例已经在代码的注释中进行了说明。
  • 由于该实例有main()主函数(一般JavaBeans不需要定义main()函数,因它是提供服务的程序,由其它的程序来调用它),所以在编译后,可以在DOS环境下执行,执行结果为Example JavaBeans。

3.  在JSP中使用JavaBeans

  • 在JSP中使用JavaBeans,首先要在Tomcat Web服务器中部署已经编译好的JavaBeans。
  • 在TOMCAT_HOME\webapps\jsp\WEB-INF\classes目录下创建myBean文件夹(这是为了与实例10-1第01行所定义的包名myBean相对应),然后将编译好的字节代码文件复制到该目录中。
下面是一个使用实例10-1 JavaBeans的实例。
实例10-2:使用JavaBeans的实例程序(useHelloBean.jsp)

01: <%@page contentType="text/html;charset=GBK"%>

02: <HTML>

03: <HEAD><TITLE>使用JavaBeans</TITLE>

04: </HEAD>

05: <BODY>

06: <H2>该实例说明了在一个JSP中如何使用JavaBeans的属性</H2>

07: <HR>

08:<jsp:useBean id="myBean" class="myBean.HelloBean" scope="application"/>

09: 调用setProperty前name属性的值是:

10: <jsp:getProperty name="myBean" property="name" />

11: <P>

12: <jsp:setProperty name="myBean" property="name" value="Hello World"/>

13: 调用setProperty后name属性的值是:

14: <jsp:getProperty name="myBean" property="name" />

15: </BODY>

16: </HTML>

 

  • 将实例10-2复制到TOMCAT_HOME\webapps\jsp目录下,然后在地址栏输入http://localhost:8080/jsp/useHelloBean.jsp,则浏览器窗口显示如图10-1所示的内容。
  • 实例10-2的08行<jsp:useBean…>是说明在该程序要使用一个类名为myBean.HelloBean的JavaBeans,第10行是取得属性名为name的值,第12行是将属性name的值设置为“Hello World”,第14行取得重新设置后属性name的值。
 
 
二、在JSP中使用JavaBeans的操作标记
  • 在前面介绍过,JSP操作是为了使客户机或服务器实现某种操作而下达的指令。
  • JSP有七个操作标记,即jsp:include、jsp:useBean、jsp:setProperty、jsp:getProperty、jsp:forward、jsp:param和jsp:plugin。其中的jsp:include、jsp:forward、jsp:param和jsp:plugin已经介绍过,下面介绍jsp:useBean、jsp:setProperty和jsp:getProperty三个操作的功能和使用方法。

1.  jsp:useBean操作

该操作表示在JSP页面中要使用JavaBeans,它的常用语法格式如下:

  <jsp:useBean id=“beanName” 

                            scope="page|request|session|application“

                            class="package.class"

     />

其中,id为JavaBeans在该JSP页面中的名称,即JSP页面的设计者所起的在JSP页面中标识该JavaBeans的名称,它的意思就是将一个JavaBeans对象与一个id定义的变量相关联。
 
scope定义该JavaBeans对象的有效使用范围,它可以取以下4个值中的任一个:
  • page:表示这个JavaBeans在该JSP页面文件及此文件中的所有静态包含文件中有效(<%@ include file=…>)。
  • request:表示这个JavaBeans在该页面发出的请求中有效。
  • session:表示这个JavaBeans将作为一个对象绑定于session会话中,即在客户机与服务器的一个会话期内有效。
  • application:表示这个JavaBeans将做为一个对象绑定于application中,在本应用中有效。
                scope缺省的值page,表明此JavaBeans只能应用于当前页。
                通过定义scope属性,可以使此JavaBeans不只在当前页面有效。
                class说明存储JavaBeans的字节代码文件名(.class)。
注意:如果在JavaBeans中定义了包(package),则这里要指出整个包名。实例10-2的08行就是使用jsp:useBean操作创建了一个myBean.HelloBean类的实例,该实例在JSP页面中的名称为“myBean”。

2.  jsp:setproperty操作

n当在JSP中创建了JavaBeans对象之后,就可以通过jsp:setproperty操作标记设置JavaBeans的属性值。
n其常用语法如下:

  <jsp:setProperty name="beanName " 

                                             property="propertyName" 

                                             value="propertyValue“

               />

其中,name表示jsp:useBean操作中定义的id名称,property表示JavaBeans中定义的某个属性,该属性要设置一个值,value表示为该属性将要设置的新值。
在上面的格式中,jsp:setproperty操作标记用在jsp:useBean操作之后,这种情况下,此jsp:setProperty操作不管是新的JavaBeans实例还是原有的JavaBeans对象,都会执行。jsp:useBean操作还可以用在jsp:useBean实体之内,表示如下:

<jsp:useBean id="beanName " ... >

..

<jsp:setProperty name=" beanName " property=" propertyName"  value="propertyValue" />

</jsp:useBean>

这种情况下,此操作只在一个新的JavaBeans对象产生时才执行。
注意:jsp:setProperty操作必须使用在jsp:useBean操作之后。

3.  jsp:getProperty操作

jsp:getProperty操作取得JavaBeans属性的值,并将其转换成字符串值,最后插入到输出结果中。
如实例10-2中第10行和14行。它的常用语法格式如下:

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

其中,name表示通过jsp:useBean得到的此JavaBeans在JSP页面中的名字,property表示要取出其值并插入JSP页面中的属性名。
出处:http://wenku.baidu.com/view/be43723e25c52cc58bd6be93.html

================================================================

以下代码是我根据上面的说明,写的简单的测试:

方式一:

package Java.Bean;

import java.util.Date;
import java.text.*;
public class Test1 {
    public Test1(){}
    public String say()
    {
        String time=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
        return " Welcome! Now :"+time; 
    }
}
--------------------------------------
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="Java.Bean.*"%>
<html>
<body>
<h1>Hi <%= new Java.Bean.Test1().say()%></h1> 
</body>
</html>

方式二:

package mybean;

public class Test1 {
    public Test1(){}
    public String say()
    {
        return " Welcome Java Bean."; 
    }
}
--------------------------------------------
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<jsp:useBean id="my" scope="request" class="mybean.Test1"></jsp:useBean>
<html>
<body>
<h1>Hi <%=my.say()%></h1> 
</body>
</html>

 

posted on 2014-07-28 17:01  jack_Meng  阅读(2252)  评论(0编辑  收藏  举报

导航