330 likes | 599 Views
JAVA 程序设计 (10) JAVA Programming. 湖南大学软件学院 主讲:荣辉桂 Email ronghg@163.com. JavaBean. JavaBean 的开发. 10.1 JavaBean 的基本概念. 软件开发过程中一个比较重要的目的就是实现软件的可重用性。 Bean 的中文意思就是豆, JavaBean 可以理解为 Java 豆,它应用在 Java 语言的每个地方。 JavaBean 被定义为 “ 一种可在开发工具中可视化操作的可复用平台独立的软件构件 ” 。
E N D
JAVA程序设计 (10)JAVA Programming 湖南大学软件学院 主讲:荣辉桂 Email ronghg@163.com
JavaBean JavaBean的开发
10.1 JavaBean的基本概念 • 软件开发过程中一个比较重要的目的就是实现软件的可重用性。 • Bean的中文意思就是豆,JavaBean可以理解为Java豆,它应用在Java语言的每个地方。 • JavaBean被定义为“一种可在开发工具中可视化操作的可复用平台独立的软件构件”。 • JavaBean的实质就是一个.Class文件,也可以称为类文件(无main主方法) • Write once,run anywhere,reuse everywhere。
10.2 JavaBean设计目标 • 紧凑而方便地创建和利用 • 完全的可移植性 • 继承Java强大功能 • 应用程序构造器支持 • 分布式计算支持
10.3实例DemoBean.java package jsptaglibpro; public class DemoBean { //声明产品的名字 String product; //声明产品的税率 double rate; //JavaBean的构造方法,定义默认的产品名字和税率 public DemoBean() { this.product = "A001"; this.rate = 5; } //设置产品的名字 public void setProduct (String ProductName) { this.product = ProductName; }
//获取产品的名字 public String getProduct() { return (this.product); } //设置产品的税率 public void setRate (double rateValue) { this.rate = rateValue; } //获取产品的税率 public double getRate () { return (this.rate); } //显示信息的方法 public String showMessage(){ return "这是JavaBean的传入的信息."; } }
非可视化的JavaBean • JSP与JavaBean的结合 • 从JSP程序抽取常用的代码,如访问数据库的代码,放在JavaBean中,在需要时调用
10.4 JSP与JavaBean的结合方法 • 使用jsp:useBean 在JSP中添加JavaBean • 使用jsp:setProperty设置JavaBean属性的值 • 使用jsp:getProperty动作读取JavaBean属性的值 • 案例:说明如何在JSP中通过动作标记使用JavaBean 及如何在Tomcat上部署
案例的相关文件的建立 1.按照相关语法来定义DemoBean.java 2.编译并测试 DemoBean.java到 DemoBean.class
3.建立使用DemoBean的JSP文件JavaBeanDemo.jsp <%@page contentType="text/html; charset=GBK" %> <html> <head> <title>JavaBean示例</title> </head> <jsp:useBean id="demoBeanId" scope="session" class="jsptaglibpro.DemoBean" /> <body> <center> <h3>JavaBean示例</h3> <p><%=demoBeanId.showMessage()%></p> </center> </body> </html>
4. 文件部署 • 如果部署到Tomcat 环境中,则: • TOMCAT_HOME\webapps下放置各种“应用”目录。 • 而在个应用目录下必须包括WEB-INF目录,主要是进行应用配置。 • 如果DemoBean的包名是JSPBaseTaglib,则在TOMCAT_HOME\webapps\Demo\WEB-INF\classes 目录下建一个子目录JSPBaseTaglib。 • 将DemoBean.class复制到TOMCAT_HOME\webapps\demo\JSPBaseTaglib 目录。 • 将调用DemoBean的JavaBeanDemo.jsp复制到TOMCAT_HOME\webapps\demo(可称之为demo应用目录)或其他目录下,如TOMCAT_HOME\webapps\demo\useBean目录下 。
5.执行 • 部署后重新启动Tomcat • 打开IE浏览器,在地址栏中输入: • http://localhost:8080/Demo/ JavaBeanDemo.jsp • http://localhost:8080/Demo/useBean/ JavaBeanDemo.jsp • 另外几个设置property属性的.JSP文件,请参考: • 设置bean中所有属性:SetAllProperty.jsp • 应用property和Value属性设置JavaBean属性;SetPropertyByValue.jsp(程序直接给出值) • 应用property和param属性设置JavaBean的属性,传入参数给property属性,SetPropertyByParm.jsp.
像普通类一样使用JavaBean • 案例:通过使用命令标记<%@page import=“XXX”%>像普通类一样使用案例7-2中定义的DemoBean
JavaBeanDemo.jsp <HTML> <%@page contentType="text/html;charset=GBK"%> <%@page import=" jsptaglibpro.* “ %> <BODY BGCOLOR="#FFFFFF"> <% //象使用普通类一样使用DemoBean DemoBean myBean=new DemoBean(); out.println(“调用Product初 值:"+myBean.getProduct()+"<br>"); myBean.setProduct(“littleCar"); out.println(“调用setProduct后的 值:”+myBean.getProduct()+”<br>”); %> </BODY> </HTML>
10.5 JavaBean 的生命期 • 标记 jsp:useBean 的scope属性设置JavaBean的生命期 • page表示这个Bean对象在使用JavaBean的网页范围内有效,默认值 • request表示在请求过程范围内有效 • session表示在一个会话期间内有效 • application表示在整个应用程序期间有效
JDBC 数据库访问
client/server • 支持多种数据库服务器。 • 主要的处理逻辑在客户端(胖客户机)。 • 服务器端的逻辑侧重于数据库的操作。 • 胖客户机将频繁访问远程数据库,并导致网络流量的增大。 DB Server SQL Client
JDBC概述 • ODBC(Open DataBase Connectivity) • 微软制定的一个C语言与数据库的统一接口 • JDBC(Java DataBase Connectivity) • 为Java语言定义的一个SQL调用级的统一界面。 • 为访问关系数据库提供了一个标准的界面。 • JDK1.2中已包括了JDBC2.0的内容。
JDBC概述 Java application JDBC API JDBC Driver Manager JDBC Driver API JDBC Driver (数据库厂家提供) DBMS
数据库连接 • 每个JDBC应用程序至少要有一个JDBC驱动程序版本,JDBC驱动程序是Driver接口类的实现。 • Driver类是驱动程序厂家实现的接口,Driver使DriverManager和JDBC应用程序层可以独立于具体的数据库系统。 应用程序 JDBC Oracle 驱动程序 Sybase 驱动程序
JDBC API(类) • java.sql.DriveManager 负责装载、拆除驱动程序,负责连接驱动程序。 • java.sql.Connection 实现对某一特定数据库的连接(建立连接)。 • java.sql.ResultSet 控制对一个特定语句的行数据的存取。 • java.sql.Statement 在一个给定的连接中作为执行SQL语句的容器。 其中java.sql.Statement 又有两个子类型: • java.sql.PreparedStatement 执行预编译的SQL声明。 • java.sql.CallableStatement 执行存储过程的调用
JDBC API 层次 驱动程序管理器 驱动程序层 驱动程序 应用程序层 连接 预处理语句 语句 可调用语句 结果集 结果集 结果集
JDBC API(类) • JDBC API 被描述成为一族抽象的Java接口,使应用程序可以对某个数据库打开连接,执行SQL语句并且处理结果。 • 所有的驱动程序必须提供对上述类的实现。如果目标DBMS提供有OUT参数的内嵌过程,还必须提供java.sql.CallableStatement接口。 • 另外一个显然的驱动器是在ODBC上提供对JDBC的实现,从而提供与ODBC接口的JDBC-ODBC桥。
JDBC数据库连接 • 将驱动程序类包的全路径名加入到环境变量CLASSPATH中. (JSP中可以放置在WEB-INF \ lib目录下) • 装载驱动程序 1、String sqlServerDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver“ ; 2、Class.forName(sqlServerDriver); • 加载Driver类后,建立连接(到指定数据库) 1、Connection conn; 2、String url = "jdbc:microsoft:sqlserver://localhost:1031;" + "DatabaseName=common" ; 3、conn=DriverManager.getConnection(url,"sa","1976819"); 至此,我们建立了一个打开的连接,可以对数据库进行操作
JDBC数据库连接例(SQLServer 2000) • 请参考例子 :实现JDBC 驱动连接SQLServer 2000 数据库,并访问common库中的具体数据表。 • JDBCSQLServerConnection.jsp 查看源码
执行sql语句—Statement类 • 建立Statement类对象(sql容器) Statement stmt = conn.createStatement(); • 查询: 1、String sql="select * from Usr_role” ; 2、ResultSet rs = stmt.executeQuery(sql) ; • 显示结果,并关闭连接: while(rs.next() ){ 数据按行取出,处理 } rs.close(); stmt.close(); conn.close();
执行sql语句—Statement类 • 一般语句执行 boolean b = stmt.execute("select ename,job from emp"); 可执行任何一个SQL语句,可返回多个结果集。 • true—第一个结果是ResultSet对象 • false—结果为一个整数,或空。 • 取查询结果: ResultSet rs = stmt.getResultSet(); 取出当前结果集。 int I = stmt.getUpdateCount () 将结果视为更新数,取结果。
执行结果—ResultSet类 方法: • 移动指针 boolean rs.next() ; • 取结果集当前行的数据: getXXX(列序号或列名) String rs.getString("ename") ; int rs.getInt (“age”) ; 或 int rs.getInt (2) ; • 检查结果集有关信息 ResultsetMetaData rsmd = rs.getMetaData(); 利用ResultsetMetaData的有关方法。
访问数据库例 • 例: Statement stmt = conn.createStatement(); stmt.execute("select ename,job from emp"); ResultSet rs = stmt.getResultSet(); while (rs.next()) { System.out.println(rs.getString("ename") + rs.getString("job") ); } stmt.close(); conn.close();
PreparedStatement类 • 预编译(反复执行效率高),带参数 • PreparedStatement ps = conn. preparedStatement( “update emp set sal=sal+? where eno=? ”) ; • ps.setFloat(1, 210.00) ps.setInt(2, 110592) • ps.executeQuery(); ps.execUpdate() ;
CallableStatement类 • 执行存储过程 CallableStatement cs = conn.prepareCall(“ call 过程名 ” ); • cs. executeQuery(); ps.execUpdate() ;
JDBC-ODBC桥连接access • 利用JDBC-ODBC桥 连接Access数据库,并访问库表数据的例子,其他类型的数据库JDBC-ODBC 连接也类似。 • 该程序部署在webapp\DatabasePro\下。 • JSP文件名称为:ODBCAccessConnection.jsp • 查看源码,并演示
下课了。。。 追求 休息一会儿。。。