第 7 章 配合 例子源代码一起使用 Power point 制作:耿祥义 张跃平 普通高等教育 “ 十一五 ” 国家级规划教材 JSP 与 JavaBean
S JP 主要内容 编写Javabean和使用Javabean 获取和修改Javabean的属性 使用Javabean的简单例子 Javabean与文件操作 Javabean与数据库操作 难点 Javabean与文件操作 Javabean与数据库操作 关键实践 有效期限为request的Javabean 有效期限为session的Javabean 有效期限为application的Javabean 第 7 章 导读
S JP 第 7 章 JSP 与 JavaBean Javabean 是一种 Java 类,通过封装属性和方法成为具有某 种功能或者处理某个业务的对象,简称 bean 。按着 Sun 公司 的定义, Javabean 是一个可重复使用的软件组件,由于 Javabean 是基于 Java 语言的,因此 Javabean 不依赖平台, 具有以下特点: 可以实现代码的重复利用。 易编写、易维护、易使用。 可以在任何安装了 Java 运行环境的平台上使用,而不需要 重新编译。 JSP 页面应当将数据的处理过程指派给一个或几个 bean 来 完成,我们只需在 JSP 页面中调用这个 bean 即可。不提倡大 量的数据处理都用 Java 程序片来完成。在 JSP 页面中调用 bean ,可有效地分离静态工作部分和动态工作部分。
S JP § 7.1 编写 Javabean 和使用 Javabean bean 的编写与保存 _1 1. 如果类的成员变量的名字是 xxx ,那么为了获取或更改成员 变 量的值,即获取或更改属性,类中必须提供两个方法: getXxx() 用来获取属性 xxx setXxx() 用来修改属性 xxx 即方法的名字用 get 或 set 为前缀,后缀是将成员变量名字的 首字母大写的字符序列。对于 boolean 类型的成员变量,即布 尔逻辑类型的属性,允许使用 “ is ” 代替上面的 “ get ” 和 “ set ” 。 3. 类中声明的方法的访问属性都必须是 public 的。 4. 类中声明的构造方法必须是 public 、无参数的。 参考 p196 Circle.java
S JP bean 的编写与保存 _2 在当前 Web 服务目录下建立如下目录结构: Web 服务目录 \WEB-INF\classes 根据类的包名 ( 比如 :package tom.jiafei;), 在目录 classes 下建立相应的子目录. Web 服务目录 \WEB-INF\classes\tom\jiafei 把创建 bean 的字节码文件复制到复制到上述目录 中。 注:要重新启动 Tomcat 服务器。
S JP 使用 bean 1. 在使用 bean 的 JSP 页面中,首先必须有相应的 page 指令 2. 在 JSP 页面中再使用 JSP 动作标记: useBean ,来加载使用 bean 。格式: 或 例如: 3. bean 的有效期限 (1) scope 取值 page (2) scope 取值 request (3) scope 取值 session (4) scope 取值 application 例 7-1, 7-2, 7-3 P199
S JP §7.2 获取和修改 bean 的属性 使用动作标记 getProperty 可以获得 bean 的属性值, 并将这个值以字符串的 形式显示给用户。 格式如下: 或 注: 该指令相当于 Java 表达式: 《 %= bean 的 id.getXxx()% 》 使用这个标记之前,必须使用 useBean 标记获取一个 bean 。 bean 必须保证有相应的 getXxx 方法 例 7-4 P getProperty 动作标记
S JP setProperty 动作标记 使用动作标记 setProperty 可以设置 bean 的属性值 1. 设置 bean 的属性为一个表达式的值或字符串的格式如下: " /> 2. 通过 HTTP 表单的参数的值来设置 bean 的相应属性的值 : 要明确 bean 的某属性设置为表单中的对应的参数的值,其格式如下: 注: 使用这个标记之前,必须使用 useBean 标记获取一个 bean 。 bean 必须保证有相应的 setXxx 方法 例 7-5, 7-6 P203
S JP §7.3 bean 的辅助类 除了需要用 import 语句引入 Java 的内置包中 的类,还可能还需要其他自己写的一些类,那 么你只要将这些类的字节码文件和 bean 的字节 码放在同一目录中即可。 例 7-7 P206
S JP §7.4 使用 bean 的简单例子 1. 三角形 P 猜数字 P 日历 P 四则运算 P 浏览图片 P215
S JP §7.5 Javabean 与文件操作 1. 读文件 bean 可以列出用户指定的目录中的文件、并可读取目录中文件的内容, bean 的 scope 取值为 session 。 例题 P 写文件 bean 可以将 JSP 页面提交的文本信息以文件格式保存到服务器。 例 题 P 上传文件 JSP 页面调用 bean 将用户选择的文件上传至服务器(上传至当前 Web 服务目录的 image 子目录中), 如果上传的是图像文件,就显示上传的图 像. 例题 P221 注:上传文件 bean 使用了 javax.servlet.http 包中的类, javax.servlet.http 包不在 JDK 的核 心类库中,因此你需要将 Tomcat 安装目录 lib 子目录中的 servlet-api.jar 文件复制到 Tomcat 服务器所使用的 JDK 的扩展目录中,比如,复制到 D:\jdk1.6\jre\lib\ext 中。
S JP §7.6 Javabean 与数据库操作 1. 查询记录 bean 使用加载 SQLServer 2000 的 Java 数据库驱动程序方式连接数据 库、查询表。 例题 P 分页显示记录 bean 在实现分页显示记录时使用了 CachedRowSetImpl 对象,该 bean 具有很 好的通用性,可以分页显示 SQLServer 2000 管理的数据库中的任何表中的记录。 com.sun.rowset 包提供了 CachedRowSetImpl 类,该类实现了 CachedRowSet 接口。 CachedRowSetImpl 对象可以保存 ResultSet 对象中的数据,而且 CachedRowSetImpl 对象不依赖 Connnection 对象,这意味着一旦把 ResultSet 对象中的数据保存到 CachedRowSetImpl 对象中后,就可以关闭和数据库的连接。 CachedRowSetImpl 继承了 ResultSet 的所有方法,因此可以像操作 ResultSet 对 象一样来操作 CachedRowSetImpl 对象。 CachedRowSetImpl CachedRowSetImpl 对象 =new CachedRowSetImpl(); rowSet.populate( ResultSet 对象 ); 例题 P227