# JavaBean
# 认识 Javabean
在 JSP 内嵌大量的 java 代码会造成维护不方便,因此解决这个问题的办法就是将 JSP 中的代码移植到 Java 类中
这些 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; | |
} | |
} |
有待更新...