JSP培训(10)——使用JavaBean封装对数据库的访问、连接池的配置和使用

数据库课程设计实战:人力资源管理系统开发 在现代企业管理中,人力资源是核心竞争力的关键组成部分。为了高效管理企业内部的人力资源,人力资源管理系统(HRMS)应运而生。该系统通过信息化手段,对企业员工的招聘、入职、培训、绩效、薪资等全流程进行集中管理,提升组织效率与员工满意度。E-R 图由三部分组成:实体(Entity):表示现实世界中的对象,如员工、部门。属性(Attribute):描述实体的特征,如员工姓名、部门名称。关系(Relationship):表示实体之间的联系,如员工与部门的“从属”关系。 阅读详情

目标:
l         掌握如何共享连接数据库的代码;
l         掌握PrepareSatement的使用;
l         掌握数据库连接池的配置和使用;
主要内容:
l         通过对数据库的访问过程进行分析,把数据库访问过程封装成DBBean;
l         修改User.java中的根据页码查询用户的方法,使用DBBean完成对数据库的操作;
l         修改User.java中的添加用户信息的方法,使用DBBean完成对数据库的操作;
l         配置数据库连接池;
l         修改DBBean中连接数据库的代码,使用连接池完成连接
1、 DBBean的编写
在前面的几讲中,有多个方法连接数据库对数据库进行操作,并且我们编写代码的过程中存在很多复制和粘贴,这意味着在各个方法中有很多代码可以共享。那么在连接数据库的代码中有过程是可以共享的?
对数据库操作的基本过程如下:
l         加载驱动程序;
l         创建连接;
l         编写SQL语句;
l         创建语句对象;
l         执行SQL语句;
l         对结果进行处理;
l         关闭相关对象。
在上面的过程中,很多操作都是相同的,不同的方面包括:不同的功能需要编写不同的SQL语句,对结果的处理。
对这个过程进行封装,得到下面的代码(封装的方式有很多种):
package javabean;
 
import java.sql.*;
import java.util.*;
public class DBBean {
       private Connection con;
       private PreparedStatement stmt;
       private ResultSet rs;
      
       // 获取连接对象
       public Connection getConnection() throws Exception{
              if(con == null){
                     // 指出连接数据库所需要的驱动程序
                     Class.forName("oracle.jdbc.driver.OracleDriver");
 
                     // 建立与数据库之间的连接
                     con = DriverManager.getConnection(
                                   "jdbc:oracle:thin:@192.168.0.170:1521:fhdn", "scott",
                                   "tiger");
              }
              return con;
       }
      
       // 创建语句对象
       public PreparedStatement getStatement(String sql) throws Exception{
              con = getConnection();
              stmt = con.prepareStatement(sql);
              return stmt;   
       }
      
       // 执行有结果集的查询
       public ResultSet executeQuery(String sql,ArrayList paras) throws Exception{
              stmt = getStatement(sql);
              if (paras != null) {
                     Object o[] = paras.toArray();
                     for (int i = 0; i < o.length; i++) {
                            if (o[i] instanceof String) {
                                   stmt.setString(i + 1, (String) o[i]);
                            }
                     }
              }
              return stmt.executeQuery();
       }
       // 执行没有结果集的查询
       public int executeUpdate(String sql,ArrayList paras) throws Exception{
              stmt = getStatement(sql);
              if (paras != null) {
                     Object o[] = paras.toArray();
                     for (int i = 0; i < o.length; i++) {
                            if (o[i] instanceof String) {
                                   stmt.setString(i + 1, (String) o[i]);
                            }
                     }
              }
              return stmt.executeUpdate();       
       }
      
       // 关闭对象
       public void close(){
              try{
                     rs.close();
              }catch(Exception e){}
              try{
                     stmt.close();
              }catch(Exception e){}
              try{
                     con.close();
              }catch(Exception e){}
       }
}
注意:因为采用预编译的语句对象,所以在执行SQL语句的时候需要提供参数,因为参数的个数不定,所以采用ArrayList对象进行封装,而代码中只对String类型的参数进行了处理,如果使用其它类型的参数,需要再编写支持代码。
2、 修改getUserByPage方法
使用DBBean中方法的基本过程如下:
l         创建DBBean的对象;
l         编写SQL语句;
l         封装SQL语句需要的参数;
l         执行SQL语句;
l         关闭对象。
    public ArrayList getUserByPage(int pageNo) {
              int number = 10;
              // 每一页显示的记录数
 
              int begin = (pageNo * number) - 9;
              int end = pageNo * number;
              int index = 1;
             
              DBBean db = new DBBean();
              // 要返回的结果对象
              ArrayList users = new ArrayList();
             
              String sql = "select * from usertable";
              ResultSet rs;
              try{
                     rs = db.executeQuery(sql,null);
                     while (rs.next()) {
                            // 在begin之前的记录是不显示的
                            if (index < begin) {
                                   index++;
                                   continue;
                            }
 
                            // 在end之后的记录也不显示
                            if (index > end)
                                   break;
 
                            index++;
 
                            String username = rs.getString(1);
                            String userpass = rs.getString(2);
                            // java.util.Date birthday = rs.getDate(3);
                            // int age = rs.getInt(4);
                            User user = new User();
                            user.setUsername(username);
                            user.setUserpass(userpass);
                            users.add(user);
                     }
              }catch(Exception e){
                     e.printStackTrace();
              }finally{
                     db.close();
              }
              return users;
       }
3、 修改addUser方法
以addUser方法为例介绍具有参数的SQL语句的执行。
基本访问过程与2中介绍的相同,修改后的addUser方法的代码如下:
public boolean addUser() {
        DBBean db = new DBBean();
        String sql = "insert into usertable values(?,?)";
        ArrayList<String> paras = new ArrayList<String>();
        paras.add(username);
        paras.add(userpass);
        int n=0;
        try{
               n = db.executeUpdate(sql,paras);
        }catch(Exception e){
               System.out.println(e.toString());
        }
        db.close();
        boolean b; // 表示添加成功与否
        if (n > 0)
               b = true;
        else
               b = false;
        return b;
}
4、 使用连接池的好处
在前面的例子中,对于每个用户的每次访问都要先创建数据库连接,使用完之后释放连接。如果能够让用户多次访问之间共享数据库连接,则可以大幅度提供访问的效率。可以使用数据库连接处完成连接的共享,在服务器启动的时候,创建多个连接,如果用户需要访问数据库,直接从连接池中得到一个连接使用,使用完之后直接放回连接池。
使用连接池的另外一个好处是,如果客户端太多,连接池可以通过控制连接的数量来保护数据库服务器,不会让数据库的响应变得非常缓慢,从而影响服务器的性能。
5、 Tomcat中连接池的配置
连接池的配置包括3个部分:
l         把数据库JDBC驱动程序放到Tomcat安装目录的lib下面。有些版本的Tomcat应该放在安装目录的common/lib下面。
l         配置安装目录下的conf/server.xml
打开server.xml文件,在</host>之前添加如下代码:
<Context path="/ch10" docBase="ch10"
        debug="5" reloadable="true" crossContext="true">
 <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000"
               username="scott"
password="tiger"
driverClassName="oracle.jdbc.driver.OracleDriver"
               url="jdbc:oracle:thin:@myserver:1521:mydb"/>
path是应用的访问路径,docBase是应用的根目录,Resource其他红色部分分别是用户名、口令、驱动程序和url。
</Context>
l         配置工程的web.xml文件
在web.xml中添加如下代码。注意:元素res-ref-name的值应该和前面配置的Resource的名字相同。
 <resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/TestDB</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
 </resource-ref>
6、 在Java代码中使用连接池
修改DBBean.java中的getConnection方法,修改后的代码如下:
public Connection getConnection() throws Exception{
        if (con == null) {
               Context initContext = new InitialContext();
               Context envContext = (Context) initContext.lookup("java:/comp/env");
               DataSource ds = (DataSource) envContext.lookup("jdbc/TestDB");
               con = ds.getConnection();
        }
        return con;
}
注意:在类头需要引入javax.sql包和javax.naming包。
7、运行代码进行测试。
参考教材:《Java Web程序设计基础教程》

JSP培训目录:

JSP培训(1)——概述
JSP培训(2)——运行原理、文档结构、简单输入输出
JSP培训(3)——客户端验证、常用输出方式、JSTL基本用法
JSP培训(4)——实例:登录功能、jsp:forward标签、jsp:include标签、include指令、EL、c:if
JSP培训(5)——使用JavaBean完成业务逻辑
JSP培训(6)——使用Servlet作为控制器实现MVC模式
JSP培训(7)——使用JDBC完成动态验证、采用MVC完成数据查询
JSP培训(8)——添加功能和分页显示
JSP培训(9)——使用MVC模式完成删除和修改功能
JSP培训(10)——使用JavaBean封装对数据库的访问、连接池的配置和使用
JSP培训(11)——Java Web中的安全控制
JSP培训(12)——Java Web应用国际化
JSP培训(13)——异常处理
JSP培训(14)——购物车实例(上)
JSP培训(15)——购物车实例(下)及小结
DBBean.java jsp连接mysql 立即下载

相关推荐

Java Web应用开发 43 课堂案例-应用JavaBean封装数据库访问操作.docx

Java Web应用开发 43 课堂案例-应用JavaBean封装数据库访问操作.docx 学习资料 复习资料 教学资源

javabean连接mysql数据库,jsp+javabean 链接 mysql 数据库

JSP+JavaBean html一、JavaBean类java首先先澄清 这个三个都是绝对路径 没有相对路径, E://test.txt 和 E:/test.txt 是一个意思 E:\\text.txt 用这样的写法是 \\ 转义了 ‘\’.linux为何有\\ 的写法 和 / 这样的写法呢 ,由于window 默认的是\\ 这样的写法 若是你把这样的写法放到了 linux系统下面,...

weixin_32760125的博客 743

融合ZILN损失与深度学习的LTV预测:从概率分布到精准营销决策

本文探讨了融合ZILN损失与深度学习的LTV预测方法,通过深度概率模型精准预测用户生命周期价值(LTV),优化营销决策。文章详细解析了ZILN损失函数的优势、模型架构设计要点及工程化落地实践,帮助企业在预算分配、用户分层等场景实现数据驱动的精准营销。

weixin_29093169的博客 308

DBbean

import java.sql.*; public class DBBean { private String driverStr = "com.mysql.jdbc.Driver"; private String connStr = "jdbc:mysql://localhost/context"; private String username = ""; private...

bby12345的博客 707

深入解析时钟同步技术:相位同步、频率同步与同源时钟的实战应用

本文深入解析时钟同步技术的三种核心方式:相位同步、频率同步与同源时钟,详细阐述其技术原理、实现方案及实战应用。通过对比分析不同同步方式的特点与适用场景,为电子系统设计提供选型指南,帮助工程师优化时钟网络设计,提升系统稳定性和性能。

weixin_29240711的博客 451

离线安装 nvidia-docker2(nvidia-container-toolkit)

很多时候大家都有用docker使用gpu的需求,但是因为网络等原因不是那么好用,这里留了一个给ubuntu的安装包,网络好的话也提供了在线安装方式。

father_yingying的博客 1181

JavaBean封装数据库连接

1、创建数据库 【服务】窗口->右击【Java DB】命令->【创建数据库】命令 单击【确定】 2、连接数据库 【服务】窗口->右击【Java DB】->【启动服务】命令 在输出窗口中如下显示(有时第一步完成就能看到下面内容) 右击【数据库】->【新建连接】命令,打开【新建连接对话框】 单击【下一步】 信息填完单击【测试链接】...

weixin_30279671的博客 412

Grey Hack v0.7.3618 保姆级教程:手把手教你用metaxploit.so写一个自动提权脚本

本文详细介绍了如何在Grey Hack v0.7.3618中使用metaxploit.so库编写自动化提权脚本。从环境准备到核心功能解析,再到漏洞利用链构建和权限提升的智能处理,手把手教你掌握游戏中的高级黑客技巧。通过多库联合利用和错误处理优化,提升脚本的效率和成功率。

weixin_42537919的博客 396

数据库连接池原理

基本原理 在内部对象池中,维护一定数量的数据库连接,并对外暴露数据库连接的获取和返回方法。 如外部使用者可通过getConnection方法获取数据库连接,使用完毕后再通过releaseConnection方法将连接返回,注意此时的连接并没有关闭,而是由连接池管理器回收,并为下一次使用做好准备。 线程池作用 ①资源重用 由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性能开销。在减少系统...

selt791的博客 254

Figma汉化教程

Figma汉化教程

cc蒲公英的博客 1万+

Ubuntu20.04 安装 MATLAB R2023b 常见问题及解决方案

本文提供了Ubuntu20.04系统上安装MATLAB R2023b的完整指南,包括系统要求检查、依赖项安装、详细安装步骤及常见问题解决方案。特别针对GTK模块加载失败、OpenGL图形加速问题和中文显示乱码等常见问题提供了有效解决方法,帮助用户顺利完成安装并优化使用体验。

weixin_42619061的博客 487

JSP培训(10)——使用JavaBean封装对数据库的访问、连接池的配置和使用(转)

原作者地址:http://blog.csdn.net/JavaEETeacher/archive/2007/09/10/1779279.aspx只是怕自己忘记,所以转到自己这里来,谢谢。-----------------------目标:l         掌握如何共享连接数据库的代码;l         掌握PrepareSatement的使用;l         掌握数据库连接

uaudy的专栏 545

vivado下ECO操作-不重新综合实现修改属性并生成.bit

ECO即engineer change order,即工程变更指令,可以对设计做局部小改动并只对改动部分重新布局布线并生成.bit。在一个工程动辄编译几个小时情况下,可以在调试中节省大量时间。比如我们在调试中,需要改变时钟占空比或者相位,需要改变寄存器初值等等,此时用ECO暂时改动,待验证后在重新编译无疑是最有效率的方法。 实现ECO通常有两种方式,一是通过vivado界面完成,另一种方法就是tcl脚本。所有的ECO操作都可以通过tcl操作完成,有的操作用vivado界面无法完成,只能通过tcl。以下主要

4661

Mysql通用查询操作类(Jsp+servlet+javaBean+Mysql)

在腾科培训了有1个半月了,终于学完JSP+SERVLET+JAVABEAN+MYSQL,学了java的第一套web解决方案。老师要求我们6人一组开始做一个订餐系统。这个系统没有什么特别的,就跟电子商城是一个样的。由于要对数据库做大量的增删改查,那个代码又多,我想能不能将数据库操作的这一层打包起来(SqlOperDao),让我对数据库操作,用几行代码就搞定的。然后我只修改sql语句,和传进来的参数就

lzy6871143的专栏 2334

【26美赛F题 To Gen-AI, or Not To Gen-AI】(MCM/ICM)思路解析及代码分享

摘要:本文研究生成式人工智能(Gen-AI)对三类职业(STEM、技能型工艺、艺术)的影响,建立量化模型预测未来10-20年岗位需求变化。通过分析AI替代效应($R_{sub}(t)$)和增强效应($R_{enh}(t)$),提出差异化高校课程调整策略:STEM专业需加强AI集成能力,技能型工艺专业应结合智能工具与实操训练,艺术专业需平衡AI创作辅助与原创性培养。模型表明,高校通过针对性课程优化可提升毕业生在AI时代的就业竞争力,为教育决策提供数据支持。(149字)

一键难忘的博客 640

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

JSP培训(1)——概述

chen__jinfei的专栏 1327

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

黑马程序员_day33-JavaBean

----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------ 1、什么是JavaBean JavaBean是Java的可重用组件技术,实质是一种符合某些命名和设计规范的Java类 ASP通过COM或COM+组件来扩充复杂的功能,如文件上载,发送email,以及将业务处理或复杂计算分离出来称为可独立使用的模块。 JSP通过Ja

huasen1990的专栏 633

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

黑马程序员_学习记录22:JavaBean

------- android培训、java培训、期待与您交流! ---------- 1、什么是JavaBean JavaBean是Java的可重用组件技术,实质是一种符合某些命名和设计规范的Java类 ASP通过COM或COM+组件来扩充复杂的功能,如文件上载,发送email,以及将业务处理或复杂计算分离出来称为可独立使用的模块。 JSP通过JavaBean组建实现同样

zy_bgd的专栏 435

JSP初级学习路线

我多年的教学内容是JSP,JAVAEE框架。教学的范围、难度,够完成简易的毕业设计项目,不够复杂项目开发。 初级的JSP学习路线如下,也是一般JSP课本的主要内容: 第一部分内容:开发工具介绍,基本JSP语法,常用的JSP内置对象。 第一部分的目的:调用内置对象的库函数,编写一个请求页、一个结果页,完成一次业务处理。 请求页多数是一个表单:<form action="结果...

钢七连软件项目管理和开发 610

JavaWeb学习---JavaBean

—JavaBean

Adair81的博客 378

JSP(Java Server Pages), Servlet, JDBC(Java Database Connectivity) 和 JavaBeans 是Java中用于Web开发的重要技术

JSP(Java Server Pages), Servlet, JDBC(Java Database Connectivity) 和 JavaBeans 是Java中用于Web开发的重要技术。

[Blog][Domain] programb.blog.youkuaiyun.com 537
上一篇: JSP培训(9)——使用MVC模式完成删除和修改功能
下一篇: JSP培训(11)——Java Web中的安全控制
老李-大连
博客等级 码龄20年 3206粉丝 308原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值