JavaBean

来源:互联网 发布:杰刚队长知乎 编辑:程序博客网 时间:2024/06/16 16:00

JavaBean是为了减少JSP中嵌套的Java语言而按一定规则编写的Java类,其目的是为了实现HTML与Java的分离,该类封装了数据和一些经常重复使用的方法。其规则如下:

  •  JavaBean是一个public类;
  • JavaBean必须有一个不带参数的构造方法;
  •  属性必须私有化;
  • JavaBean中的私有属性,必须通过public类型的方法供其他程序使用,可以通过访问器和更改器进行操作,格式必须为setXXX()getXXX(),且属性名第一个字母要大写;
  • 以上要求的格式,是为了通过使用反射技术来实例化JavaBean对象,从而获知JavaBean的属性,进而调用其操作属性的方法来保存数据。

为了在JSP中使用JavaBean对象,JSP提供了三个动作标签,如下

标签

格式

描述

<jsp:useBean>

<jsp:useBean id=”xxx” class=”packet.classname”  scope=”page|request|session|application”/>

根据id值来JSP页面中查找或实例化一个JavaBean对象,id值就是实例对象的实例名

<jsp:setProperty>

<jsp:setProperty name=”xxx” property=”yyy” value=”zzz”/>

根据name设置属性yyy的值zzz,其实name值就是useBean的ID值,也即JavaBean实例名xxx

<jsp:getProperty>

<jsp:getProperty name=”xxx” property=”yyy”>

获取xxx对象属性yyy的值

 

  •  <jsp:useBean>

在使用该标签时,在指定的域内查找或实例化一个对象,若此实例存在则直接返回该实例的引用,否则在指定的域内实例化一个制定的对象;域默认为page,在该page内可以看做为已有对象。具体原理如下:

 JSP源码:

<jsp:useBeanid="person" class="domain.Person"scope="page"></jsp:useBean>对应的servlet源码:

  domain.Personperson = null;

  synchronized(_jspx_page_context)

  {

        person = (domain.Person)_jspx_page_context.getAttribute("person", PageContext.PAGE_SCOPE);

        if (person== null)

{

          person =new domain.Person();

    _jspx_page_context.setAttribute("person",person,PageContext.PAGE_SCOPE);

        }

      }

 

 

useBean标签体内可以嵌套HTML元素,但嵌套的HTML元素只在userBean实例化对象时,才会有效。所以根据实例对象的域不同,HTML元素的有效范围不同。如下:

<body>

     <jsp:useBeanid="person1"class="domain.Person"scope="page">

        用户:<inputtype="text"><br>

        密码:<inputtype="password"><br>

     </jsp:useBean>

     <jsp:useBeanid="person2"class="domain.Person"scope="session">

        用户:<inputtype="text"><br>

        密码:<inputtype="password"><br>

</jsp:useBean>

</body>

 

  •  <jsp:setProperty>

<body>

     <jsp:useBeanid="person"class="domain.Person"scope="page"></jsp:useBean>

     <jsp:setPropertyname="person"property="name"value="sunshuolei"/>

     <%=person.getName()%><br>

     <jsp:getPropertyname="person"property="name"/>

  </body>

 

其实<jsp:getPropertyname="person"property="name"/><%=person.getName()%>是等价的,由此可以看出<jsp:getProperty>获得的结果就是一个字符串。

 

  • <jsp:getProperty>

如果一个JavaBean实例对象的某一个属性的值为null,那么使用<jsp:getProperty>标签输出该属性的结果将是一个内容为null的字符串。

  • 总结

JavaBean一般情况下更多的是封装数据和其他业务逻辑方法。

0 0
原创粉丝点击