A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐志兵 中级黑马   /  2012-6-17 20:03  /  1643 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

JavaBean感觉学起来比较难,看了两三遍教程差不多,而且也不明白到底有什么实际的应用。就像那个反射一样,貌似也没神马用途,可能是现在还没接触到吧。

JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。
JavaBean的属性是根据对应的方法名称来的,比如方法的名称为getAge,那么这个属性名称就是age,原因是这样的,如果属性名称第二个字母是小写,那么第一个字母改成小写,如果第二个字母是大写,则第一个字母也改成大写。
例:  getAge 的属性名称为age(属性名的第二个字母为小写),getCPU的属性名称为CPU(第二个字母为大写)。

对JavaBean的简单内省操作:
  1. import java.beans.PropertyDescriptor;
  2. import java.lang.reflect.Method;


  3. public class IntroSpectorTest {
  4. public static void main(String[] args) throws Exception {
  5. Beans hs = new Beans(5, 3);
  6. String propertyName = "x";//首先定义要获取的属性名称
  7. PropertyDescriptor pd = new PropertyDescriptor(propertyName, hs.getClass());
  8. //PropertyDescriptor 属性描述类,描述 Java Bean 通过一对存储器方法导出的一个属性。
  9. Method methodgetX = pd.getReadMethod(); //获取应该用于读取属性值的方法。
  10. Object obj = methodgetX.invoke(hs); //调用这个方法
  11. System.out.println(obj);

  12. Method setX = pd.getWriteMethod(); //获得应该用于写入属性值的方法。
  13. Object obj2 = setX.invoke(hs, 3);

  14. }
  15. }

  16. class Beans{
  17. private int x;
  18. private int y;

  19. public Beans(int i, int j) {
  20. this.x = i;
  21. this.y = j;
  22. }
  23. public int getX() {
  24. return x;
  25. }
  26. public void setX(int x) {
  27. this.x = x;
  28. }
  29. public int getY() {
  30. return y;
  31. }
  32. public void setY(int y) {
  33. this.y = y;
  34. }
  35. }
复制代码
对JavaBean的复杂内省操作:
采用遍历BeanInfo的所有属性方式来查找和设置某个JavaBean对象的x属性。首先可以通过内省类(Introspector)的getBeanInfo(Class<?> beanClass) 方法(在 Java Bean 上进行内省,了解其所有属性、公开的方法和事件)来获取所有的属性和方法,这个BeanInfo就是代表了整个javabean。
  1. import java.beans.BeanInfo;
  2. import java.beans.Introspector;
  3. import java.beans.PropertyDescriptor;
  4. import java.lang.reflect.Method;


  5. public class IntroSpectorTest {
  6. public static void main(String[] args) throws Exception {
  7. Beans hs = new Beans(5, 3);
  8. String propertyName = "x";//首先定义要获取的属性名称


  9. BeanInfo bInfo = Introspector.getBeanInfo(hs.getClass());
  10. PropertyDescriptor[] pds = bInfo.getPropertyDescriptors();
  11. PropertyDescriptor pdx = null;
  12. for(PropertyDescriptor pd : pds){
  13. if(pd.getName().equals(propertyName)){
  14. pdx = pd;
  15. break;
  16. }
  17. }

  18. if(pdx != null){
  19. Method methodGet = pdx.getReadMethod();
  20. Method methodSet = pdx.getWriteMethod();
  21. System.out.println(methodGet.invoke(hs));
  22. }

  23. }
  24. }

  25. class Beans{
  26. private int x;
  27. private int y;

  28. public Beans(int i, int j) {
  29. this.x = i;
  30. this.y = j;
  31. }
  32. public int getX() {
  33. return x;
  34. }
  35. public void setX(int x) {
  36. this.x = x;
  37. }
  38. public int getY() {
  39. return y;
  40. }
  41. public void setY(int y) {
  42. this.y = y;
  43. }
  44. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
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 语句存入。
回复 使用道具 举报
avabean是一个特殊的java类:方法符合特定的规则
        int  getAge()                                |——符合特定规则的类称为javabean
        void setAge(int age)                |——
       
如果有set get方法就可以用bean来操作也可以用普通方法来操作
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马