
简介这是面向JSP初学者的数据库连接实操资料聚焦JSP与ACCESS数据库的基础数据交互方式适用于小型项目、课程设计或学习JDBC原理的练习场景。资源仅含1个doc文档压缩包大小约31KB以图文代码结合的形式完整演示从创建test.mdb数据库、将其部署到Tomcat的webapps/ROOT/data目录到编写JDBCAccess.jsp读取username表数据的全过程。文档以示例代码为主线逐段解释数据库连接字符串、sun.jdbc.odbc.JdbcOdbcDriver驱动加载、Connection/Statement/ResultSet的创建与关闭并强调操作完成后务必释放系统资源。文中还补充了ACCESS与MySQL等企业级数据库在驱动和连接方式上的差异便于读者对照理解JDBC通用原理。读者可照此文档在本地Tomcat环境中复现整个连接过程出现异常时也能根据错误提示定位驱动、路径或字段引用问题。已有240人学习下载内容紧凑、上手直接适合需要快速实现JSP读取ACCESS数据的开发者参考。1. 先搞懂这个组合是什么JSP、ACCESS 数据库和那条看不见的连接线很多新手第一次看到JSP 连接 ACCESS 数据库这个标题时脑子里大概会立刻冒出两个问题JSP 是什么ACCESS 数据库又是谁我用一个场景帮你记住它你想在网页上看到一个登录页面页面背后有一本账本里面记着用户名和密码。JSP 是那个在网页上负责画表格、处理请求的前台接待人员ACCESS 数据库是柜子里放着的账本而连接这两个字就是把账本搬到接待员桌上的一条传输线。JSP 连接 ACCESS 数据库说白了就是让网页能去一个 .mdb 小文件里查数据、读数据再把结果显示到浏览器上。这套技术最适合谁刚学 Java Web 的学生、要做课程设计的小项目、以及只想快速验证网页 数据库到底怎么配合的新手。它最大的优点是不用安装复杂的数据库服务一个数据库文件就能跑出完整效果。老手可能会觉得它过时但对零基础的人来说这是把网页和数据这两个概念串起来的最短路径。这篇文章会带你从建数据库开始一步步走到浏览器里看到数据的那一秒。2. 为什么新手要先学这套组合从零搭一个网页读数据的环境2.1 ACCESS 数据库和 MySQL 比凭什么更适合入门先认识一下 ACCESS。它是 Office 组件里的一个数据库工具打开之后界面很像 Excel上面是功能区中间是表格你可以直接在里面输入数据。它把数据库的表、数据、字段定义全部装在一个以 .mdb 结尾的文件里。你把这个文件复制到另一台电脑上数据也跟着过去了这就是它常被叫做文件型数据库的原因。很多教程一上来就让你装 MySQL但对零基础的人来说装 MySQL 这件事本身就劝退一大半人要下载安装包、要配置服务、要记端口号、还要处理各种权限问题。ACCESS 完全绕开了这些你只需要一个能创建 .mdb 文件的工具剩下的精力都可以花在JSP 代码怎么写上。下面这张表帮你直观感受差别对比项ACCESS 数据库MySQL安装数据库服务不需要Office 组件自带需要单独安装并启动服务数据库存在哪一个 .mdb 文件服务管理的数据目录建库难度界面操作像 Excel命令行或工具创建适合规模学习、课程设计、小型项目中小型 Web 项目连接方式通过 JDBC-ODBC 桥通过专门的 JDBC 驱动所以我的建议是如果你的目标只是先看懂网页到底怎么从数据库拿数据直接选 ACCESS别在自己不熟悉的环境问题上消耗热情。等把 JSP 和数据交互的套路摸熟了再迁移到 MySQL 会轻松很多。2.2 接线员其实是 JDBC-ODBC 桥一句话理解 JSP 怎么找到数据库JSP 是 Java 技术家族的一员Java 程序访问任何数据库都走一套统一接口叫 JDBC。而 ACCESS 数据库这一边主要认 Windows 系统下的 ODBC 接口。两边说的语言不一样直接对话会鸡同鸭讲于是需要一个中间翻译这个翻译就是 JDBC-ODBC 桥。你可以把它想成一个接线员JSP 说 JDBC 方言把请求交给接线员接线员翻译成 ODBC 方言转达给 ACCESS 数据库数据库返回的结果再沿原路翻译回去。代码里那句Class.forName(sun.jdbc.odbc.JdbcOdbcDriver)就是在告诉 Java 虚拟机麻烦请这位接线员上岗。 这句话执行成功之后后面的连接代码才有的谈。学习的时候不需要把桥的原理背下来但你要记住一个事实桥是 JDK 里自带的一个类以前的老版本 JDK 能用较新的 JDK 已经把它移除了。这个细节会在后面避坑章节详细讲现在你只需要知道为什么 JSP 能连上一个文件型数据库因为中间有这么一个翻译官在干活。2.3 开跑前先备齐这四样东西在写第一行代码之前先把工具备齐顺序别乱缺一样都会让后面寸步难行。需要准备的东西怎么检查是否就绪JDK打开命令行输入java -version能看到版本号说明已安装Tomcat启动后浏览器访问http://localhost:8080/能看到默认页面能创建 .mdb 的数据库工具打开工具能新建空数据库即可一个编辑器记事本、Notepad 都可以新手不必纠结用 IDETomcat 是整个演示的运行容器JSP 页面要跑起来必须依赖它。启动方式很简单进入 Tomcat 安装目录下的bin文件夹找到startup.batWindows 环境双击运行看到一个黑窗口不闪退就说明服务起来了。然后打开浏览器输入http://localhost:8080/如果出现一个默认欢迎页恭喜你环境已经通了。提示数据库和表的名字不一定要跟原文完全一样但如果你改了名字后面 JSP 代码里所有对应的地方都要同步改否则会报找不到表之类的错。第一次练习时建议直接用原文里的test.mdb和username少踩一个坑算一个。3. 第一步动手建库、建表再把数据库请进 Tomcat3.1 在 ACCESS 里建出 test.mdb 和 username 表打开你的 ACCESS 工具选择新建一个空白数据库文件名保存为test.mdb。这个文件就是之后所有数据的家。保存位置先放在桌面或者某个临时文件夹因为等一下还要把它移动到一个指定目录先不用纠结放在哪。保存好之后第二步是建表。在 ACCESS 里选择使用设计器创建表进入表设计界面。这里一共要添加两个字段第一个字段名写uid数据类型选文本第二个字段名写pwd类型同样选文本。字段名不要带空格不要用中文否则后面 SQL 查询很容易出问题。设计好之后把这个表保存表名一定要写username不是test。然后切到数据表视图手动往里插入两行测试数据比如第一行uid填zhangsanpwd填123456第二行uid填lisipwd填654321。这两行数据很重要因为后面页面能不能显示内容全靠它们。如果表里是空的页面虽然连接成功了却看不到任何输出你反而分不清到底是成功还是失败。最后关闭 ACCESS 工具。这一步是很多新手的盲区数据库文件如果被 ACCESS 编辑器一直开着Tomcat 是没有权限去读它的后面测试时会报文件占用相关错误。所以建完表、插完数据之后顺手把 ACCESS 整个关掉干净利落。3.2 把 test.mdb 放到 Tomcat 的 data 文件夹进入你的 Tomcat 安装目录一路找到webapps\ROOT这个文件夹。webapps是 Tomcat 存放网页应用的地方ROOT是它的默认根目录。JSP 放进来之后浏览器可以直接访问。我们要在这个ROOT文件夹里新建一个子文件夹名字叫data然后把刚才的test.mdb复制进去。放好之后目录结构应该是这样的webapps └── ROOT ├── data │ └── test.mdb └── 其他默认文件为什么非要放在这里因为后面 JSP 代码里写的是相对路径data/test.mdbTomcat 会把ROOT当作基准根目录帮你找到这个文件的完整物理路径。如果你随便把数据库文件放在桌面代码里就得写死一个绝对路径比如C:\Users\你的用户名\Desktop\test.mdb换一台电脑就失效非常容易翻车。放好之后先启动一次 Tomcat浏览器访问http://localhost:8080/确认默认页面能打开再继续下一步。这一步相当于确认服务器是活的免得后面代码出错时你分不清是 Tomcat 没启动还是代码有问题。3.3 搞懂相对路径和物理路径的差别很多新手第一次接触application.getRealPath()这个方法是懵的其实它做的事情非常简单把相对路径翻译成物理路径。相对路径是站在 Tomcat 视角说的门牌号比如data/test.mdb物理路径是文件在硬盘上的真实地址比如C:\Tomcat\webapps\ROOT\data\test.mdb。application是 JSP 内置的一个对象代表当前 Web 应用本身。调用它的getRealPath()方法就像让一个熟悉本地路况的向导告诉你你手里的门牌号对应的具体门面到底在哪条街上。这个能力特别重要因为你把项目部署到别的电脑上时Tomcat 的安装目录可能完全不同写死路径会崩用相对路径加翻译函数就永远能自适应。这一章踩坑率最高的问题几乎都出在路径上。有些人把数据库文件放到ROOT外面了有些人路径里带了中文文件夹名还有些人复制文件时不小心把test.mdb复制成了test.mdb.txt。记住一个排查思路先检查文件位置再检查文件名最后检查路径里有没有中文和空格基本能解决八成的连接不上问题。4. 写出第一段能跑通的连接代码JDBCAccess.jsp4.1 完整代码可以直接复制到你的 JSP 文件里现在到了整篇最核心的部分写 JSP 页面。在记事本里新建一个文件文件名存为JDBCAccess.jsp保存位置就放在刚才那个ROOT文件夹下和data文件夹平级。把下面这段代码完整复制进去% page contentTypetext/html; charsetgb2312 languagejava importjava.sql.*% % // 数据库连接代码开始 try { // Access 数据库相对路径 String spath data/test.mdb; // 把相对路径转换成 Tomcat 里的物理路径 String dbpath application.getRealPath(spath); // Access 数据库用户名没有则为空 String user ; // Access 数据库密码没有则为空 String password ; // 连接字符串DBQ 后面跟的是数据库物理路径 String url jdbc:odbc:Driver{Microsoft Access Driver (*.mdb)};DBQ dbpath; // 加载 JDBC-ODBC 桥驱动 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); // 建立连接 Connection conn DriverManager.getConnection(url); // 创建语句对象 Statement stmt conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); // 测试数据代码开始 String sql select * from username; ResultSet rs stmt.executeQuery(sql); while (rs.next()) { out.print(用户名: rs.getString(uid)); out.print( 密码: rs.getString(pwd) br); } out.print(br恭喜你数据库连接成功); rs.close(); // 关闭记录集对象 stmt.close(); // 关闭语句对象 conn.close(); // 关闭连接对象 } catch (Exception e) { out.print(数据库连接错误,错误信息如下br); out.print(e.getMessage()); } // 测试数据代码结束 %这段代码的完整流程可以概括成五步加载驱动、建立连接、创建语句对象、执行查询并输出结果、关闭所有对象。顺序不能乱因为每一步都依赖上一步产出的对象。初学者最容易犯的毛病是看到报错就慌其实你把catch里输出的e.getMessage()认真读一遍大部分问题都能直接定位。需要注意这段代码用的是gb2312编码所以你的 JSP 文件在保存时编码也要对应。记事本保存时右下角编码选ANSI否则中文字符会出现乱码。这一点在后面的避坑章节里还会重点提醒因为它实在太容易踩了。4.2 逐句拆解这五个关键步骤第一步Class.forName(sun.jdbc.odbc.JdbcOdbcDriver)。它的作用是让 Java 虚拟机加载这个驱动类。只有驱动类成功加载后面的DriverManager.getConnection()才知道该用谁来处理这次连接。如果这一句报错后面的所有代码根本没有执行的机会。第二步DriverManager.getConnection(url)。url就是刚才拼出来的连接字符串里面最重要的信息是DBQ后面的物理路径。你可以把DriverManager理解成一个调度中心它拿到 url 之后会找出一个合适的驱动去建立真正的连接。连接对象叫conn它就是你跟数据库之间的那根电话线。第三步conn.createStatement()创建语句对象。电话线接通之后你还需要一个信使帮你把话传过去这个信使就是Statement。之后你用stmt.executeQuery(sql)把select * from username这句 SQL 送进数据库数据库执行完把结果装进一个叫ResultSet的容器里还给你。第四步while (rs.next())是循环读取每一行数据。rs.next()每执行一次指针就往下一行走一行走到没有数据时返回false循环结束。在循环体里rs.getString(uid)就是取出当前行里uid字段的值。这里有个关键点字段名必须和表里的一模一样你写成rs.getString(id)数据库会翻脸不认账。第五步依次关闭rs、stmt、conn。这就像出门时候的三连动作关灯、锁门、拔钥匙。顺序也很讲究先关最底层的记录集再关语句对象最后关连接。如果不关连接会一直被占用下次再连可能超时或者报连接已满。4.3 放进 ROOT 目录在浏览器里验证结果保存好JDBCAccess.jsp之后确保你的目录结构长这样webapps └── ROOT ├── data │ └── test.mdb └── JDBCAccess.jsp然后启动 Tomcat在浏览器地址栏输入http://localhost:8080/JDBCAccess.jsp。如果一切正常你会在页面上看到两行测试数据以及最后那句恭喜你数据库连接成功。看到这句话的时候恭喜你你已经走完了一个完整的网页到数据库流程。如果页面上显示的是数据库连接错误别急着抓狂下面的错误信息才是关键。把这些英文信息复制到搜索引擎里比你瞎改代码效率高十倍。另外你还可以去 Tomcat 的logs目录打开localhost日志文件那里也会有更详细的堆栈信息是排查问题的第二现场。5. 新手最容易踩的坑五个常见问题与排查思路5.1 报错 ClassNotFoundException驱动找不到现象页面报错错误信息里包含ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver用大白话说就是加载驱动这一步没成功。原因JDBC-ODBC 桥这个驱动类在较新的 JDK 版本里已经被移除了。如果你的电脑装的是 JDK 8 或者更高版本这个类根本不存在自然加载不了。很多新手在网上下载了新 JDK却还用老教程的代码就会卡在这一步。解决你可以临时换用 JDK 6 或 JDK 7 这样的老版本运行环境也可以继续用新 JDK但把连接方式换成 UCanAccess 这类纯 JDBC 驱动连接字符串会不同。初学阶段最省事的做法是先换一个老版本 JDK把整条链路跑通等理解了这个流程再回头研究替代方案。5.2 报错找不到数据库文件路径出了岔子现象错误信息类似找不到文件...\data\test.mdb或者文件路径无效但你已经确认文件确实存在。原因多半是test.mdb没有放到正确的目录或者文件名不对又或者路径里有中文和空格。还有可能是你把文件放在ROOT之外Tomcat 的application.getRealPath()只能解析到自己应用目录范围内的相对路径。解决先回到webapps\ROOT\data确认test.mdb的真实存在。然后在 JSP 代码里临时加一行输出比如out.print(dbpath);重新访问页面看它打印出来的物理路径到底是什么再把路径复制到文件资源管理器里验证是否存在。这个方法看似笨却能最快定位路径问题。5.3 字符乱码页面显示一堆问号现象页面上的中文和英文字母混在一起显示成乱码数据库里的中文也可能读出来是??。原因JSP 文件保存时的编码和页面声明的charsetgb2312不一致。比如你用记事本把文件保存成 UTF-8但页面头声明的是 gb2312浏览器按 gb2312 去解析 UTF-8 字节自然就乱码了。解决两种做法二选一要么把文件保存为 ANSI 编码同时保持页面声明gb2312不变要么把页面声明改成charsetUTF-8文件也保存为 UTF-8。关键是声明和实际保存的编码必须一致。养成习惯改完编码就重启 Tomcat 再刷新因为 JSP 文件每次编译会缓存。5.4 文件一直被占用test.mdb 改不了、删不掉现象你想往数据库里加一行数据保存后想覆盖原来的test.mdb系统提示文件正在使用或没有权限有时候连删除都删不掉。原因两种情况最常见一是 ACCESS 工具还开着这个数据库文件Windows 会锁定它二是 Tomcat 正在运行连接对象没有正常关闭数据库文件被进程占用。解决先关闭 ACCESS 的所有窗口再停止 Tomcat 服务然后再覆盖或删除文件。改完之后重新启动 Tomcat。如果还是删不掉就去任务管理器里看看是不是有java.exe或javaw.exe进程一直占着手动结束再操作。5.5 连接成功但页面空荡荡没有任何数据输出现象页面没有报错但也没有显示任何数据行甚至恭喜你那句话可能出现了但结果集是空的。原因username表里根本没有数据或者表名、字段名写错了SQL 查询的是别的表还有可能是字段类型不是文本类型读取时类型不匹配抛了异常被catch吞掉。解决先回 ACCESS 里打开test.mdb确认username表里至少有两条数据。然后检查 SQL 是不是select * from username检查字段名是不是uid和pwd。如果查出来的结果集是空的while循环一次都不会进入自然什么都看不到。这种没报错的情况比报错还容易让人一头雾水。6. 跑通之后再往上走下一步学什么你能走到这里说明已经理解了网页如何从数据库里取数据这条最核心的主线这是很多新手折腾一星期都未必迈过去的一步。但连接 ACCESS 这件事本身只是起点接下来有四条路值得按顺序走。首先是改代码把 SQL 查询从select * from username这种写法升级成带参数的查询学一下PreparedStatement。现在的代码把 SQL 直接拼在字符串里虽然能跑但很不安全。如果你以后做一个登录功能用户输入的内容拼进 SQL就会出现注入漏洞。然后是研究怎么把连接代码从 JSP 页面里剥出去。现在写在一个文件里跑通容易但页面越来越乱之后维护会非常痛苦。可以学着把它封装成一个独立的工具类页面里只需要调用一个方法就能获得连接。这也是你理解 DAO 模式的第一步。再往后就可以考虑换数据库了。ACCESS 对环境友好但它不太适合并发的真实场景。等你把 JDBC 的基本套路搞熟迁移到 MySQL 其实很快只要换掉连接字符串和驱动类Connection、Statement、ResultSet这套 API 完全不变。到那时候你会觉得当初从 ACCESS 入门是个明智的选择。如果拿到的是配好建库说明和代码的完整资料别急着复制粘贴我建议你亲手把每个步骤敲一遍。敲代码的过程会强迫你注意每一处细节比如路径、字段名、引号这些正是平时最容易翻车的地方。我记得自己第一次跑通时卡在文件被 ACCESS 占用这个坑上整整一个晚上从那以后我每次写连接代码都强制自己先检查数据库文件有没有被打开再去看代码。希望这篇入门文能帮你少走这些弯路把这个流程顺顺利利地跑通祝你好运。本文还有配套的精品资源点击获取