JavaWeb项目式开发教程电子教案 项目5 Java Web项目中的数据访问_第1页
JavaWeb项目式开发教程电子教案 项目5 Java Web项目中的数据访问_第2页
JavaWeb项目式开发教程电子教案 项目5 Java Web项目中的数据访问_第3页
JavaWeb项目式开发教程电子教案 项目5 Java Web项目中的数据访问_第4页
JavaWeb项目式开发教程电子教案 项目5 Java Web项目中的数据访问_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目5JavaWeb项目中的数据访问教学单元任务5.1实现会员注册授课时数5授课类型理实一体课授课地点机房授课对象计算机类专业二年级学生一、教学分析教学目标理解JDBC的概念和在JavaWeb项目中的作用;掌握JDBCAPI核心接口体系;掌握连接MySQL数据库的完整步骤;能使用Statement实现数据的增删改查操作;能实现会员注册信息写入数据库。学情分析学生已学过SQL基础和Java面向对象编程,但对“如何在JavaWeb项目中执行SQL语句查询并展示数据”不清楚。教学重点JDBCAPI核心类的使用;连接和操作MySQL数据库的完整步骤。教学难点MySQL8.0JDBCURL中各参数的意义二、教学方法与手段教学方法和手段讲授法、案例法、任务驱动法。三、教学实施教学环节教学内容新知导入回顾任务2.1中做的会员注册页,提问:“任务2.1中注册信息提交后只是回显了一下,没有保存,如果用户下次想登录怎么办?”“注册信息应该存在哪里?”引出数据库存储的必要性,引入JDBC技术。知识讲解5.1.1什么是JDBCJDBC全称为Java数据库互连(JavaDatabaseConnectivity),它是一套用于执行SQL语句的JavaAPI。通过JDBC技术,应用程序可以非常方便地与各种数据库交互。开发人员不需要为访问不同的数据库而编写不同的应用程序,只需使用JDBC编写一个通用程序就可以向不同的数据库发送SQL语句。5.1.2JDBCAPIJDBC是一个编程接口集,其定义的接口主要包含在java.sql包中。该包含有一系列用于访问数据库的接口和类。•Driver接口:每个驱动程序类必须实现的接口•DriverManager类:管理一组JDBC驱动程序的基本服务•Connection接口:与指定数据库建立连接,在连接上下文中执行SQL语句并返回结果•Statement接口:用于执行SQL语句并返回生成结果的对象•PreparedStatement接口:表示预编译的SQL语句的对象•CallableStatement接口:用于执行SQL存储过程的接口•ResultSet接口:表示数据库结果集的数据表1Driver接口Driver接口是所有JDBC驱动程序都需实现的接口。这个接口是提供给数据库厂商使用的,不同数据库厂商实现该接口的类名不同。•SQLServer:com.microsoft.sqlserver.jdbc.SQLServerDriver•Oracle:oracle.jdbc.driver.OracleDriver•MySQL:com.mysql.jdbc.Driver(MySQLConnector/J5.x及以下版本)com.mysql.cj.jdbc.Driver(MySQLConnector/J6.x及以上版本)2DriverManager类DriverManager类是JDBC的管理层,作用于用户和驱动程序之间。它跟踪可用的驱动程序,加载驱动程序并创建与数据库的连接。•ConnectiongetConnection(Stringurl,Stringuser,Stringpassword):根据指定参数建立与数据库的连接,参数url为连接数据库的URL,user为连接数据库的用户名,password为连接数据库的密码。参数user和password可选•voidsetLoginTimeout(intseconds):设置要进行登录时驱动程序等待的超时时间•voidregisterDriver(Driverdriver):向DriverManager的管理列表中注册一个驱动对象,参数driver为要注册的驱动对象3Connection接口Connection接口表示与特定数据库之间的连接。•StatementcreateStatement():用于创建一个Statement对象并将SQL语句发送到数据库•PreparedStatementprepareStatement(Stringsql):用于创建一个•PreparedStatement对象并将参数化的SQL语句发送到数据库•CallableStatementprepareCall(Stringsql):用于创建一个•CallableStatement对象来调用数据库中的存储过程•voidcommit():提交事务,此方法只在已禁用自动提交模式时使用•voidrollback():取消在当前事务中进行的所有更改,并释放此连接对象当前持有的所有数据库锁4Statement接口Statement接口用于执行SQL语句并返回生成结果的对象。•booleanexecute(Stringsql):用于执行给定的SQL语句,该语句可能返回多个结果。若给定的SQL语句为查询语句,则第一个结果为•ResultSet对象,该方法返回true;若给定的SQL语句为修改、更新或删除语句,则该方法返回false•ResultSetexecuteQuery(Stringsql):用于执行给定的查询SQL语句,该语句返回ResultSet对象•intexecuteUpdate(Stringsql):用于执行给定的SQL语句,返回值为int类型,表示受该SQL语句影响的记录数目,当执行不成功时返回0。常用于数据更新操作,可以是INSERT、UPDATE或DELETE语句•booleanisClosed():用于查询Statement对象是否已经被关闭5PreparedStatement接口PreparedStatement是Statement接口的子接口,用于执行预编译的SQL语句,当多次执行这条SQL语句时,可以直接执行编译好的SQL语句,大大提高了程序的灵活性和执行效率。•voidsetInt(intparameterIndex,intx):用于将指定参数设置为给定int值。其中parameterIndex值为1时表示第1个参数,值为2时表示第2个参数,依此类推。x为给定的参数值•voidsetString(intparameterIndex,Stringx):用于将指定参数设置为给定String值6CallableStatement接口CallableStatement是PreparedStatement接口的子接口,用于执行SQL存储过程。•voidregisterOutParameter(intparameterIndex,intsqlType):用于注册输出参数(OUT或INOUT)的JDBC数据类型。其中parameterIndex值代表存储过程中参数的位置索引,为1时表示第一个参数,值为2时表示第2个参数,依此类推。sqlType代表输出参数的JDBC数据类型•intgetInt(intparameterIndex):根据索引获取输出参数的int值•StringgetString(intparameterIndex):根据索引获取输出参数的String值7ResultSet接口ResultSet接口表示执行Select语句所得到的结果集。该结果集为一个逻辑表格,ResultSet接口内部拥有一个管理该逻辑表格的游标,该游标默认指向表格的第1行,并根据程序逻辑依次读取逻辑表格中的行。•booleannext():用于从当前位置向下移1行。游标最初位于第1行之前,调用该方法使第1行成为当前行,依此类推。如果存在下一行,则返回true;如果不存在下一行,则返回false•intgetInt(StringcolumnName):用于获取指定字段名称int类型的值,参数columnName代表结果集中字段的名称•intgetInt(intcolumnIndex):用于获取指定索引int类型的值,参数columnIndex代表结果集中字段的索引值,索引从0开始5.1.3连接MySQL数据库使用JDBC连接MySQL数据库的主要步骤如下:(1)下载并导入JDBC驱动程序(2)注册JDBC驱动程序方法一:使用Class.forName()方法Class.forName(“com.mysql.cj.jdbc.Driver”);方法二:使用DriverManager.registerDriver()方法DriverManager.registerDriver(newcom.mysql.cj.jdbc.Driver());【例5-1】创建连接对象。(3)获取数据库连接DriverManager.getConnection(Stringurl,Stringuser,Stringpassword);或DriverManager.getConnection(Stringurl);【例5-2】创建连接本地数据库esbuy,并给出提示信息。5.1.4操作MySQL数据库使用JDBC操作数据库包括添加数据、查询数据、更新数据和删除数据等操作。JDBC提供了Statement、PreparedStatement和ResultSet三个接口来实现对数据库操作。其中,Statement接口主要用于执行不带参数的简单SQL语句;而ResultSet接口表示记录集,用于保存数据表操作后返回的记录集。操作MySQL数据库主要步骤:创建Statement接口实例执行SQL语句处理ResultSet结果集关闭连接【例5-3】添加商品类型示例。【例5-4】查询商品类型示例。任务实施:创建chap0501项目导入数据库驱动创建会员注册页reg.html新建css.css外部样式表文件创建处理注册信息的RegServlet.java文件运行项目,查看效果教学总结总结JDBC编程核心流程,包括注册驱动、获取连接、创建Statement、执行SQL、处理结果、释放资源;梳理会员注册从HTML表单到数据库入库的完整处理流程。四、课后巩固与拓展简述JDBC的概念为会员注册增加用户名唯一性校验(先查询用户名是否存在,不存在再插入)。教学单元任务5.2实现会员管理授课时数5授课类型理实一体课授课地点机房授课对象计算机类专业二年级学生一、教学分析教学目标掌握PreparedStatement预编译SQL的使用方法和优势;理解数据库连接池的概念和工作原理;掌握C3P0连接池的配置和使用方法;掌握CommonsDBUtils组件的核心类;能使用C3P0+DBUtils实现会员列表查询和删除功能。学情分析学生此前每次操作数据库都手动创建和关闭连接,效率低且资源易泄露。"连接池"概念是初次接触,需要理解"复用连接"的意义。DBUtils的ResultSetHandler实现类体系较复杂,学生可能对选择哪个Handler感到困惑。教学重点PreparedStatement预编译SQL的编写和参数设置;C3P0连接池的配置文件参数和ComboPooledDataSource使用;QueryRunner的常用方法和ResultSetHandler实现类的使用。教学难点BeanHandler与BeanListHandler需要JavaBean属性名与数据库字段名严格匹配;C3P0+DBUtils组合使用时的数据源传递方式。二、教学方法与手段教学方法和手段讲授法、案例法、任务驱动法、类比法。三、教学实施教学环节教学内容新知导入回顾任务5.1中用原生JDBC写的注册代码,提问:“如果每次注册都要写一大段JDBC代码,每次都要创建和关闭连接,效率会不会很低?有什么办法可以复用连接?”引出预编译SQL和连接池技术。知识讲解5.2.1执行预编译SQLPreparedStatement接口是Statement接口的子接口,直接继承并重载了Statement的方法。PreparedStatement接口具有如下优点:(1)比Statement更快(2)可以实现动态参数化的查询(3)可以防止SQL注入式攻击。使用PreparedStatement接口操作MySQL数据库主要步骤:(1)创建PreparedStatement接口实例PreparedStatementpst=conn.prepareStatement("select*fromcategorywhereid=?");(2)为占位符赋值,执行SQL语句pst.setInt(1,1);pst.executeQuery();【例5-5】预编译SQL示例。5.2.2C3P0连接池技术JDBC2.0引入了数据源这一概念,定义了javax.sql.DataSource接口,它负责建立与数据库的连接,在应用程序访问数据库时,不必编写连接数据库的代码,可以直接从数据源获取连接。DataSource接口的实现方式有三种,而连接池就是其中之一。应用程序从连接池中获取数据库连接进行数据访问,而连接池负责创建、管理和释放数据库连接。使用连接池实现数据库连接相对于传统方式的优势在于:(1)资源重用。(2)系统反应速度加快。(3)数据库安全性提高。使用C3P0连接池组件的使用步骤:(1)下载C3P0连接池组件。(2)使用C3P0连接池。1下载C3P0连接池组件C3P0连接池组件需要两个JAR包,分别是mchange-commons-java-0.2.20.jar和c3p0-.jar,可以从MVN官方仓库下载。(1)在浏览器中访问MVN官方仓库,搜索com.mchange。(2)单击“c3p0”超链接,进入C3P0专题页面。(3)选择“”版本,进入该版本的C3P0详细页面,单击“jar(489KB)”超链接,下载文件名为“c3p0-.jar”的JAR包文件。(4)单击“mchange-commons-java”超链接,进入MchangeCommonsJava专题页面。(5)选择“0.2.20”版本,进入该版本的MchangeCommonsJava详细页面。单击“jar(616KB)”超链接,下载文件名为“mchange-commons-java-0.2.20.jar”的JAR包文件。(6)参考5.1.3小节“连接MySQL数据库”中“下载并导入JDBC驱动程序”的JAR包导入步骤,将“c3p0-.jar”和“mchange-commons-java-0.2.20.jar”JAR包文件导入项目,之后就可以使用C3P0连接池了。2使用C3P0连接池(1)使用配置文件配置数据库连接信息#数据库URLc3p0.jdbcUrl=@c3p0.jdbcUrl@#数据库驱动名c3p0.driverClass=@c3p0.driverClass@#登录用户名c3p0.user=@c3p0.user@#登录密码c3p0.password=@c3p0.password@#初始化连接数,默认值为15,可以省略c3p0.initialPoolSize=15#连接池中最小的连接数,默认值为10,可以省略c3p0.minPoolSize=10#连接池中最大的连接数,默认值为40,可以省略c3p0.maxPoolSize=40#连接的最大空闲时间,默认值为2秒,表示2秒内连接未被使用会被丢弃,可以省略c3p0.maxIdleTime=2(2)使用ComboPooledDataSource类获取数据源C3P0组件提供了ComboPooledDataSource类,该类实现了DataSource数据源接口,通过DataSource接口的getConnection()方法可以获取连接。【例5-6】修改【例5-5】,使用连接池连接数据库,显示类别id为1的商品类别信息。5.2.3CommonsDBUtils组件CommonsDBUtils是Apache提供的一个对JDBC进行简单封装的开源工具类库,它是操作数据库的一个组件,可以在不影响数据库访问性能的前提下简化JDBC的编程工作。它的特点主要有以下几个方面:(1)简化读写操作的步骤;(2)对于读操作,可以把结果集转换成List、Array、Set等Java集合,便于操作;(3)可以使用数据源、连接池等技术来优化性能。1.CommonsDBUtils组件的组成CommonsDBUtils组件主要包括DBUtils类、QueryRunner类和ResultSetHandler接口。DBUtils类提供了加载JDBC驱动、关闭资源等方法。QueryRunner类简化了SQL语句的操作,将它与ResultSetHandler接口配合使用可以完成大部分的数据库操作,大大减少了代码量。•<T>Tquery(Stringsql,ResultSetHandler<T>rsh):执行查询操作•<T>Tquery(Stringsql,ResultSetHandler<T>rsh,Object…params):执行带参数的查询操作•<T>Tquery(Stringsql,Object[]params,ResultSetHandler<T>rsh):执行带参数的查询操作•intupdate(Stringsql):执行一个插入、删除或更新操作•intupdate(Stringsql,Object…params):执行一个带参数的插入、删除或更新操作ResultSetHandler接口用于处理查询结果集ResultSet,根据结果集中数据的不同类型,ResultSetHandler接口提供了几种常见的实现类。•BeanHandler:结果集中只有一条记录,将这条记录数据封装到一个实体类中•BeanListHandler:将结果集中的每一行数据封装到一个实体类中,结果集封装到List集合中•ScalarHandler:用于提取结果集中的单一标量值,适用于查询结果集中只有一个值(如单个计数值或总和)的情况•ArrayHandler:将结果集中的第一行数据转换成Object数组•ArrayListHandler:将结果集的所有行转换成ArrayList<Object[]>,每行数据是一个Object数组CommonsDBUtils组件的下载CommonsDBUtils是Apache提供的开源组件,可以从ApacheCommons官网进行下载。(1)在浏览器中访问ApacheCommons官网,在首页中找到“DBUtils”超链接。(2)单击“DBUtils”超链接进入ApacheCommonsDbUtils专题页,在左侧选择“Download”进入CommonsDbUtils下载页。(3)单击“commons-dbutils-1.7-bin.zip”超链接,下载文件名为“commons-dbutils-1.7-bin.zip”的压缩包文件。(4)将“commons-dbutils-1.7-bin.zip”压缩包中的“commons-dbutils-1.7.jar”JAR包文件解压到磁盘,同样参考5.1.3小节“连接MySQL数据库”中“下载并导入JDBC驱动程序”的JA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论