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一般情况下更多的是封装数据和其他业务逻辑方法。
- JavaBean
- JAVABEAN
- JavaBean
- javabean
- JAVABEAN
- javabean
- javabean
- JavaBean
- JavaBean
- javabean
- JavaBean
- JavaBean
- JavaBean
- JavaBean
- JavaBean
- JavaBean
- JavaBean
- javaBean
- 永久空间内存不足 java.lang.OutOfMemoryError: PermGen space
- Java学习之旅_基础篇_06
- 关于@property是否会自动release的一些想法
- Hibernate常见异常及解决办法(1)
- linux手动安装screen
- JavaBean
- 服务器文件自动备份工具
- Android Spinner
- permgen space这个异常解决方案
- 1040 Be Patient , Read Carefully !【子串和】
- 开发流程简易图
- sql_优化
- MemCache
- 欢迎使用CSDN-markdown编辑器