您的位置:首页 > 编程语言 > Java开发

JavaBean

2015-09-01 00:24 645 查看
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:useBean
id="person1"class="domain.Person"
scope="page">
用户:<input
type="text"><br>
密码:<input
type="password"><br>
</jsp:useBean>
<jsp:useBean
id="person2"class="domain.Person"
scope="session">
用户:<input
type="text"><br>
密码:<input
type="password"><br>
</jsp:useBean>
</body>

<jsp:setProperty>

<body>
<jsp:useBean
id="person"class="domain.Person"
scope="page"></jsp:useBean>
<jsp:setProperty
name="person"
property="name"value="sunshuolei"/>
<%=person.getName()%><br>
<jsp:getProperty
name="person"
property="name"/>
</body>

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

<jsp:getProperty>

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

总结

JavaBean一般情况下更多的是封装数据和其他业务逻辑方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: