JavaBean学习笔记
JavaBean可以实现代码复用,也是MVC模式中的重要成员之一。JavaBean是一种Java类,通过封装属性和方法成为具有某种功能或者处理某个业务的对象,简称Bean。
Bean的编写
为了能让使用这个bean的应用程序构建工具(例如JSP引擎)知道这个bean的属性和方法,只需在类的方法命名上遵守以下规则:
如果类的成员变量的名字是xxx,那么在类中必须提供两个方法:
- getXXX()
- setXXX()
即方法的名字用get或set为前缀,后缀是将成员变量名字的首字母大写的字符序列。对于boolean类型的成员变量,允许使用is代替。
类中方法的访问权限都必须是public的
类中如果有构造方法,那么这个构造方法的访问权限也是public的,并且是无参数的。
实例:
package po;
public class News {
public String getDescription() {
return Description;
}
public void setDescription(String description) {
Description = description;
}
public String getPicUrl() {
return PicUrl;
}
public void setPicUrl(String picUrl) {
PicUrl = picUrl;
}
public String getUrl() {
return Url;
}
public void setUrl(String url) {
Url = url;
}
public String getTitle() {
return Title;
}
public void setTitle(String title) {
Title = title;
}
private String Title;
private String Description;
private String PicUrl;
private String Url;
}
Bean的使用
在JSP页面中使用bean需要用到JSP动作标记:useBean
,来加载使用bean,useBean动作标记的格式如下:
<jsp:useBean id="name" class="package.classname" scope="bean-valid"></jsp:useBean>
当JSP引擎上某个含有useBean动作标记的JSP页面被加载执行时,JSP引擎将首先在一个同步块中查找内置pageContent对象中是否含有名字id和作用域scope的对象。如果这个对象存在,JSP引擎就分配一个这样的对象给用户,这样,用户就在服务器端获得了一个作用域是scope、名字是id的bean。如果在pageContent对象中没有查找到指定的对象,就根据class指定的类创建一个对应id的bean,并添加到pageContent中,并指定该bean的作用域是scope,同时JSP引擎在服务器上分配给用户一个bean。
**特别说明:**JSP引擎的内置对象pageContent对象用来存储供JSP引擎使用的数据对象,即通过该内置对象向用户提供不同类型的数据对象。当含有useBean标记的JSP页面被执行后,bean就被存放在pageContent对象中,如果更改了创建bean的Java类文件后,pageContent对象的bean并不能被更新,这是因为任何JSP页面再次被访问执行时,总是先到pageContent中查找bean,而pageContent对象直到JSP引擎关闭才释放它存储的数据对象。因此如果修改了创建bean的字节码,必须重新启动JSP引擎。
bean的有效期限
scope有四个取值。
page 当JSP引擎执行完这个页面时,JSP引擎取消分配给该用户的bean。
request 用户在网站的访问期间可能请求过多个页面,如果这些页面含有scope取值是request的useBean标记,那么pageContent对象在每个页面分配给用户的bean也是互不相同的。JSP引擎对请求作出响应之后,取消分配给用户的bean。
session 该bean取值表示有效期限是用户的会话期间,也就是说,如果用户在某个web服务目录多个页面中相互连接,每个页面都含有一个useBean标记,而且各个页面的useBean标记中id的值相同、scope的值都是session,那么该用户在这些页面得到的bean是相同的一个(占有相同的内存空间)。如果用户在某个页面更改了这个bean的属性,其他页面的这个bean的属性也会发生变化。当用户的session消失,JSP引擎取消分配的bean,即释放bean所占有的内存空间。
application JSP引擎为web服务目录下所有的JSP页面分配一个共享的bean,不同用户的scope取值是application的bean也都是相同一个,也就是说,当多个用户同时访问一个JSP页面时,任何一个用户对自己bean的属性的改变都会影响到其他的用户。
从上面的叙述可知道,有效期限最长的bean是scope取值为application的bean,最短的是page的bean**。**
获取和修改bean的属性
当JSP页面使用useBean动作标记创建一个bean之后,就可在Java程序片中让这个bean调用方法产生行为。
getProperty动作标记
使用该标记可以获得bean的属性值,并将这个值以字符串的形式显示给用户。使用这个标记之前必须使用useBean的标记获取一个bean
<jsp:getProperty name="bean的id" property="bean的属性"/>
相当于:<% = bean的id.getXxx() %>
setProperty动作标记
使用该标记可以设置bean的属性值。
<jsp:setProperty name="bean的id" property="bean的属性" value="<% = expression%>"/>
或者
<jsp:setProperty name="bean的id" property="bean的属性" value=字符串/>
通过HTTP表单的参数的值来设置bean的响应属性的值
<jsp:setProperty name="bean的id" property="bean的属性值" param="参数名"/>