# JavaBean

# 认识 Javabean

在 JSP 内嵌大量的 java 代码会造成维护不方便,因此解决这个问题的办法就是将 JSP 中的代码移植到 Java 类中

JavaBean诞生

这些 java 类就是 JavaBean

在 JavaBean 中可以将逻辑控制、值、数据库访问和其他对象进行封装

实际上 JavaBean 就是一种 Java 组件技术

作用:向用户提供实现特定逻辑的方法接口

JavaBean 支持两种组件:可视化组件和非可视化组件

可视化组件和非可视化组件

可视化组件:开发人员可以在运行结果中看到的界面效果

非可视化组件:一般不能被观察到,主要用在服务器端

JSP 只支持非可视化组件


# 写 JavaBean

编写 JavaBean 要注意的事项:

  • 通过 getter/setter 方法来读 / 写变量的值,对应变量首字母必须大写

  • 属性的名称由 getter 和 setter 方法决定

    class JavaBean{
        private String str;
        public String getXiaoming(){
            return str
        }
        public void setXiaoming(String name){
            this.str=name;
        }
    }

    此时,系统中定义的属性名称为 xiaoming,而不是 str


JavaBean 就是一个 Java 类,只是它严格按照 JavaBean 规范编写


# 定义 JavaBean

有两种选择

# 直接在 JSP 中实例化 JavaBean

< % 
   Student student = new Student();
   // 使用student
   % >

# 使用 <jsp:useBean> 标签

< jsp:useBean id = "idName" class = "" scope = "page|session···" >

id:指定 JavaBean 对象的名称

class:指定使用哪个类来实例化 JavaBean 对象

scope:指定对象的作用范围

上面的等价于:

< jsp:useBean id="student" class = "Student" ></jsp:useBean>

# 设置 JavaBean 属性

# 直接编写 Java 代码

< jsp:useBean id="student" class = "Student" ></jsp:useBean>
< %
   student.setName("愧诗");
   % >

# 使用 <jsp:setProperty> 标签

使用方法:

< jsp:setProperty  property = "属性名" name = "对象名(JavaBean里的id)" value = "" >

不仅仅可以设置单一的属性

还可以将实例化对象传入

< jsp:setProperty  property = "*" name = "student" />
<!--实例化的对象student-->

表示将所有和属性名相同参数的值放入 student 对应的属性中


# 获取 JavaBean 属性

# 使用 JSP 表达式或者 JSP 程序段

	< % @ page language = "java" import = "Student" contenType = "text/html;charset = gb2312" % >
    < jsp:useBean id="student" class = "Student" ></jsp:useBean>
    < jsp:setProperty  property = "stuname" name = "student" value = "rose" >
    < %= student.getStrname() % >

# 使用 jsp:getProperty

< jsp:getProperty  property = "属性名" name = "对象名(JavaBean里的id)" />

上面的等价于

< jsp:getProperty  property = "stuname" name = "student" />

# DAO 和 VO

DAO和VO

DAO :data access object 数据访问对象

  • 主要用来封装对 DB 的访问(CRUD 操作)。
  • 通过接收 Business 层的数据,把 POJO 持久化为 PO。

VO:value object 值对象 /view object 表现层对象 (并不是数据模型)

  • 主要对应页面显示(web 页面 /swt、swing 界面)的数据对象。
  • 可以和表对应,也可以不对应,这根据业务的需要。

注意: 上面的 Student 类可以充当 VO

使用这些的好处是在 JSP 中不会出现任何与 JDBC 有关的代码,使得更容易维护,效率更高

class StudentDAO{
    public ArrayList queryAllStudents() throws Exception{
        Connection conn=nell;
        ArrayList students=new ArratList();
        try{
            // 获取连接
            Class.forName("com.cj.jdbc.Driver");
        	String url = "jdbc:mysql://localhost:3306/数据库名";
            conn = DriverManager.getConnection(url,"账号","密码");
            // 执行 sql 语句 Statement
            // 返回结果 ResulSet
            while(rs.next()){
                // 实例化 VO
                Student student = new Stufent();
                student.set...();
                ...;
                // 加入集合
                students.add(student);
            }
            rs.close();
           	Statement.close();
        }catch(SQLException e){
            e.printStackTrece();
        }finally{
            try{
                // 关闭连接
                if(conn!=null){
                    conn.close();
                    conn=null;
                }
            }catch(Exception e){
            }
        }
        return students;
    }
}

有待更新...