随笔 - 7  文章 - 3  trackbacks - 0
<2011年10月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

常用链接

留言簿

随笔档案

文章分类

文章档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 今天主要讲解了一下知识点:
  JavaBean、javaBean规范、javaBean的动作、开发模式

先讲一下javaBean的作用,以及我们为什么要使用javabean?
 其实javabean的一个最主要的作用就是对数据进行一个封装,其次是增强代码的复用性、结构更清晰等。
在换句话说javabean他其实本身就是一个对象,之所以学习javabean的好处,就是让我们像操作对象一样进行操作数据。让代码变得更灵活、更简单。

举个小小的例子:
 比如你做一个注册功能。首先呢我们是需要获取用户界面的信息。然后在获取进来的数据传给持久层,进行持久的时候大家有没有注意到,如果表单里面的数据少的话还可以,直接传入参数,而数据一旦超过10个数据,那么你可以想象一个你传入的参数,那该是多么的一大串,所以我们采取javabean的方式,把从页面上取来的信息把它存放到一个对象当中,那么我们在进行持久化传参的时候就只需要传入一个对象就OK。 这就是javabean的好处之一。

JavaBean规范:
 一个javabean由四部分组成:
  第一部分:javabean必须有一个无惨的构造方法。
  第二部分:所有的属性必须都是private的。
  第三部分:必须生成get/set方法。
  第四部分:必须实现序列化(Serializable)这个接口。

下面我呢针对上面这些javabean的规范做一个解释,以及为什么要定义这个规范?
 1:javabean为什么需要一个无惨的构造方法呢?
回答:这个无惨的构造方法的作用主要是针对反射。为什么会针对反射呢?大家知道使用反射实例化一个类,是实例化该类的一个无惨的构造方法。
 比如:
  如果他是一个无惨的构造方法: Class.forName("com.lovo.User").newInstance.
  如果他没有一个无惨的构造方法:Class c = Class.forName("com.lovo.User");
        手动实例化他所有的公共的构造方法: Constructor[] con = c.getConstructors()

 2:javabean为什么所有的属性都是private的呢,为什么不可以是public的?
回答:private属性增强javabean安全性。他们的区别就是如果他的属性设置为public的话,我们可以任意的进行访问或修改(没有安全性)。而private属性为什么要通过get/set去访问这就是下面马上讲到的。

 3:javaBean的get/set方法。
回答:get/set方法也是增加代码的安全性。比如我们可以让外部只可以访问属性不能修改属性的话,那么我在这里只需要生成get方法就行了,无须生成set方法,而public就无法做到这一点。还有一个就是比如我们在设置他的age的时候我们还可以进行验证工作,比如如果你的age小于18,那么就直接跳出,不允许设置该属性。这个功能也是很强大的。

举个小小列子:
 public void setAge(int age){
 //验证传入进来的age否大于18,如果小于就直接return,否则就添加到该对象的age属性中。
  if(age<18){
   return; 
 }
 this.age = age;
}

 4:实现serializable接口?
回答:为了实现远程调用。比如我们要把该JavaBean从一个操作系统中传输到另一台操作系统,我们就只有采取实现该接口。

JavaBean的动作:
    <!-- 创建user对象 -->
 1: 创建动作:  <jsp:useBean id="user" class="com.lovo.User" scope="request" />
    id:一个变量名。可以任意取。
    classs:指明变量的类型,也就是说具体描述的一个对象。包名加类名
    scope:总用于范围。 也就是说在我们在查找一个属性值的时候,首先是从他的一个作用域中去进行查找,如果找到就直接把它输出,否则创建一个新的(null)。

    <!-- 设置user对象中的userName属性 单一属性。。-->
 2:设置动作:     <jsp:setProperty name="user" property="userName" value="222" param="123"/> 
     name:必须和创建动作的id一样。
     property:具体的某一个属性值。
     value:设置该属性的值。
     param:是将请求到的值附加到userName属性中.
  
    <!-- 代表名字相同的自动填充。 如:http://localhost:8080/Huang_JavaBean/index.jsp?userName=444&password=123-->
     <jsp:setProperty name="user" property="*"  /> 
     name:必须和创建动作的id一样。
     property:设置相同属性名的值他会自动填充。
    
 3:输出动作:
   
   <!-- 输出信息 。 相似于 out.println(user.getuserName()) -->
   <jsp:getProperty name="user" property="userName" />
   <jsp:getProperty name="user" property = "password"/>
开发模式:
 为什么进行分层的开发?
  1:主要是为了并发性的开发项目。比如:你做持久层,我做业务层
  2:可以独立的测试,每一个方法。
  3:分层的开发的好处还有一个就是一处代码的改变不会影响到另一处代码的改变。

在这里说一下servlet和jsp的一些缺陷.
 servlet的缺陷使web应用程序开发变得非常繁琐且不利于分工协作。
 jsp页面严重的缺乏代码的可读性而且没有将页面的表现和业务逻辑分开,使维护变得更加复杂。

在这章讲到了两种开发模式:
 模式一:JSP+JavaBean
 模式二:JSP+Servlet+JavaBean

现在大多数情况下都不用模式一,所以我就解释了。
所谓的模式二就是现在比较流行的一个模式,也叫MVC模式。

那么什么是MVC模式?

      M(model)模型层,即完成业务功能部分,也要完成持久功能。

      V(view)视图层,用于客户端进行页面展现的部分,一般是jsp和html。

      C(controller)控制层,转么用于调用业务层,进行逻辑判断,看他跳入那个页面。

MVC的一个最大的好处是实现了良好的松散耦合。

  PO(persistentobject)持久化对象,它通常是在分析系统需求时,外名词或名词短语中抽取出来(javaBan).

  DAO(datebase access  object)数据库访问对象,用于对象关系映射时或对象持久化,他封装了所有的JDBC操作

  BO(business   Object)业务层对象,用于完成业务功能的类

  VO(value object)值对象,用于封装各层次间要传输的数据

 

posted on 2011-10-10 23:18 Tomas 阅读(550) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: