1 / 33

JAVA 程序设计 (10) JAVA Programming

JAVA 程序设计 (10) JAVA Programming. 湖南大学软件学院 主讲:荣辉桂 Email ronghg@163.com. JavaBean. JavaBean 的开发. 10.1 JavaBean 的基本概念. 软件开发过程中一个比较重要的目的就是实现软件的可重用性。 Bean 的中文意思就是豆, JavaBean 可以理解为 Java 豆,它应用在 Java 语言的每个地方。 JavaBean 被定义为 “ 一种可在开发工具中可视化操作的可复用平台独立的软件构件 ” 。

aadi
Download Presentation

JAVA 程序设计 (10) JAVA Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. JAVA程序设计 (10)JAVA Programming 湖南大学软件学院 主讲:荣辉桂 Email ronghg@163.com

  2. JavaBean JavaBean的开发

  3. 10.1 JavaBean的基本概念 • 软件开发过程中一个比较重要的目的就是实现软件的可重用性。 • Bean的中文意思就是豆,JavaBean可以理解为Java豆,它应用在Java语言的每个地方。 • JavaBean被定义为“一种可在开发工具中可视化操作的可复用平台独立的软件构件”。 • JavaBean的实质就是一个.Class文件,也可以称为类文件(无main主方法) • Write once,run anywhere,reuse everywhere。

  4. 10.2 JavaBean设计目标 • 紧凑而方便地创建和利用 • 完全的可移植性 • 继承Java强大功能 • 应用程序构造器支持 • 分布式计算支持

  5. 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; }

  6. //获取产品的名字 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的传入的信息."; } }

  7. 非可视化的JavaBean • JSP与JavaBean的结合 • 从JSP程序抽取常用的代码,如访问数据库的代码,放在JavaBean中,在需要时调用

  8. 10.4 JSP与JavaBean的结合方法 • 使用jsp:useBean 在JSP中添加JavaBean • 使用jsp:setProperty设置JavaBean属性的值 • 使用jsp:getProperty动作读取JavaBean属性的值 • 案例:说明如何在JSP中通过动作标记使用JavaBean 及如何在Tomcat上部署

  9. 案例的相关文件的建立 1.按照相关语法来定义DemoBean.java 2.编译并测试 DemoBean.java到 DemoBean.class

  10. 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>

  11. 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目录下 。

  12. 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.

  13. 像普通类一样使用JavaBean • 案例:通过使用命令标记<%@page import=“XXX”%>像普通类一样使用案例7-2中定义的DemoBean

  14. 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>

  15. 10.5 JavaBean 的生命期 • 标记 jsp:useBean 的scope属性设置JavaBean的生命期 • page表示这个Bean对象在使用JavaBean的网页范围内有效,默认值 • request表示在请求过程范围内有效 • session表示在一个会话期间内有效 • application表示在整个应用程序期间有效

  16. JDBC 数据库访问

  17. client/server • 支持多种数据库服务器。 • 主要的处理逻辑在客户端(胖客户机)。 • 服务器端的逻辑侧重于数据库的操作。 • 胖客户机将频繁访问远程数据库,并导致网络流量的增大。 DB Server SQL Client

  18. JDBC概述 • ODBC(Open DataBase Connectivity) • 微软制定的一个C语言与数据库的统一接口 • JDBC(Java DataBase Connectivity) • 为Java语言定义的一个SQL调用级的统一界面。 • 为访问关系数据库提供了一个标准的界面。 • JDK1.2中已包括了JDBC2.0的内容。

  19. JDBC概述 Java application JDBC API JDBC Driver Manager JDBC Driver API JDBC Driver (数据库厂家提供) DBMS

  20. 数据库连接 • 每个JDBC应用程序至少要有一个JDBC驱动程序版本,JDBC驱动程序是Driver接口类的实现。 • Driver类是驱动程序厂家实现的接口,Driver使DriverManager和JDBC应用程序层可以独立于具体的数据库系统。 应用程序 JDBC Oracle 驱动程序 Sybase 驱动程序

  21. 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 执行存储过程的调用

  22. JDBC API 层次 驱动程序管理器 驱动程序层 驱动程序 应用程序层 连接 预处理语句 语句 可调用语句 结果集 结果集 结果集

  23. JDBC API(类) • JDBC API 被描述成为一族抽象的Java接口,使应用程序可以对某个数据库打开连接,执行SQL语句并且处理结果。 • 所有的驱动程序必须提供对上述类的实现。如果目标DBMS提供有OUT参数的内嵌过程,还必须提供java.sql.CallableStatement接口。 • 另外一个显然的驱动器是在ODBC上提供对JDBC的实现,从而提供与ODBC接口的JDBC-ODBC桥。

  24. 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"); 至此,我们建立了一个打开的连接,可以对数据库进行操作

  25. JDBC数据库连接例(SQLServer 2000) • 请参考例子 :实现JDBC 驱动连接SQLServer 2000 数据库,并访问common库中的具体数据表。 • JDBCSQLServerConnection.jsp 查看源码

  26. 执行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();

  27. 执行sql语句—Statement类 • 一般语句执行 boolean b = stmt.execute("select ename,job from emp"); 可执行任何一个SQL语句,可返回多个结果集。 • true—第一个结果是ResultSet对象 • false—结果为一个整数,或空。 • 取查询结果: ResultSet rs = stmt.getResultSet(); 取出当前结果集。 int I = stmt.getUpdateCount () 将结果视为更新数,取结果。

  28. 执行结果—ResultSet类 方法: • 移动指针 boolean rs.next() ; • 取结果集当前行的数据: getXXX(列序号或列名) String rs.getString("ename") ; int rs.getInt (“age”) ; 或 int rs.getInt (2) ; • 检查结果集有关信息 ResultsetMetaData rsmd = rs.getMetaData(); 利用ResultsetMetaData的有关方法。

  29. 访问数据库例 • 例: 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();

  30. 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() ;

  31. CallableStatement类 • 执行存储过程 CallableStatement cs = conn.prepareCall(“ call 过程名 ” ); • cs. executeQuery(); ps.execUpdate() ;

  32. JDBC-ODBC桥连接access • 利用JDBC-ODBC桥 连接Access数据库,并访问库表数据的例子,其他类型的数据库JDBC-ODBC 连接也类似。 • 该程序部署在webapp\DatabasePro\下。 • JSP文件名称为:ODBCAccessConnection.jsp • 查看源码,并演示

  33. 下课了。。。 追求 休息一会儿。。。

More Related