黑马程序员技术交流社区
标题:
JavaBean学习总结
[打印本页]
作者:
唐志兵
时间:
2012-6-17 20:03
标题:
JavaBean学习总结
JavaBean感觉学起来比较难,看了两三遍教程差不多,而且也不明白到底有什么实际的应用。就像那个反射一样,貌似也没神马用途,可能是现在还没接触到吧。
JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。
JavaBean的属性是根据对应的方法名称来的,比如方法的名称为getAge,那么这个属性名称就是age,原因是这样的,如果属性名称第二个字母是小写,那么第一个字母改成小写,如果第二个字母是大写,则第一个字母也改成大写。
例: getAge 的属性名称为age(属性名的第二个字母为小写),getCPU的属性名称为CPU(第二个字母为大写)。
对JavaBean的简单内省操作:
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
public class IntroSpectorTest {
public static void main(String[] args) throws Exception {
Beans hs = new Beans(5, 3);
String propertyName = "x";//首先定义要获取的属性名称
PropertyDescriptor pd = new PropertyDescriptor(propertyName, hs.getClass());
//PropertyDescriptor 属性描述类,描述 Java Bean 通过一对存储器方法导出的一个属性。
Method methodgetX = pd.getReadMethod(); //获取应该用于读取属性值的方法。
Object obj = methodgetX.invoke(hs); //调用这个方法
System.out.println(obj);
Method setX = pd.getWriteMethod(); //获得应该用于写入属性值的方法。
Object obj2 = setX.invoke(hs, 3);
}
}
class Beans{
private int x;
private int y;
public Beans(int i, int j) {
this.x = i;
this.y = j;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
复制代码
对JavaBean的复杂内省操作:
采用遍历BeanInfo的所有属性方式来查找和设置某个JavaBean对象的x属性。首先可以通过内省类(Introspector)的getBeanInfo(Class<?> beanClass) 方法(在 Java Bean 上进行内省,了解其所有属性、公开的方法和事件)来获取所有的属性和方法,这个BeanInfo就是代表了整个javabean。
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
public class IntroSpectorTest {
public static void main(String[] args) throws Exception {
Beans hs = new Beans(5, 3);
String propertyName = "x";//首先定义要获取的属性名称
BeanInfo bInfo = Introspector.getBeanInfo(hs.getClass());
PropertyDescriptor[] pds = bInfo.getPropertyDescriptors();
PropertyDescriptor pdx = null;
for(PropertyDescriptor pd : pds){
if(pd.getName().equals(propertyName)){
pdx = pd;
break;
}
}
if(pdx != null){
Method methodGet = pdx.getReadMethod();
Method methodSet = pdx.getWriteMethod();
System.out.println(methodGet.invoke(hs));
}
}
}
class Beans{
private int x;
private int y;
public Beans(int i, int j) {
this.x = i;
this.y = j;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
复制代码
作者:
sbeeqnui1987
时间:
2012-6-17 20:55
Javabean 就是一个类,这个类就定义一系列 get<Name> 和 set<Name> 方法。 So simple !
Javabean 就是为了和 jsp 页面传数据化简交互过程而产生的。
自己的理解:
使用 javabean 和不用 javabean 的区别:
一个 javabean 就是为 jsp 页面上的元素一一开辟一个空间,然后根据需要赋值、读值。而如果不用 javabean ,就直接使用 HttpServlet 的 request 对象:
只在 jsp 页面间传递获取数据:
String name=req.getParameter(“name”);
显示数据: out.println(name);
存数据入 DB :在 jsp 中直接嵌入 java 代码,用 insert 语句存入。
作者:
吴超
时间:
2012-6-17 21:07
avabean是一个特殊的java类:方法符合特定的规则
int getAge() |——符合特定规则的类称为javabean
void setAge(int age) |——
如果有set get方法就可以用bean来操作也可以用普通方法来操作
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2