如何运行一个 SSM 项目以及解决 JDBC 连接数据库遇到的问题(已解决) |
您所在的位置:网站首页 › 数据分析项目培训内容 › 如何运行一个 SSM 项目以及解决 JDBC 连接数据库遇到的问题(已解决) |
#2023 博客之星–城市之星领跑者活动开启# 文章目录 📋前言🎯运行与配置🎯报错与解决🧩问题分析🧩解决过程 🎯知识点补充🧩关于 com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver 的区别 📝最后这篇文章分享记录一下,运行超市订单管理系统的 SSM 项目遇到的问题和相关配置,以及 JDBC 连接数据库遇到的问题和解决方法。文章内容包括,运行 SSM 项目,弄好相关配置,解决项目运行出现的问题,以及解决方法和知识点补充。 🎯运行与配置首先在 idea 中打开项目,第一次导入项目,需要安装和下载相关的配置,如下图的项目的部分目录结构。我们可以看到 cn.smbms 目录下的五个层级,分别表示为: Controller:控制器,负责处理请求数据、调用 Service 层处理业务逻辑,并将结果返回给视图(UI 层)或直接响应给客户端。DAO:数据访问对象,负责与数据库进行交互,实现对数据的增删改查等操作。POJO:简单 Java 对象,通常用于描述业务模型或数据库映射对象。不带有业务逻辑或特殊行为。Service:业务逻辑层,负责处理业务逻辑、调用 DAO 层进行数据访问、组装数据等。UI:用户界面,是与用户进行交互的部分,通常包括 Web 页面、移动应用等。这些术语在 SSM (Spring + Spring MVC + MyBatis)项目中都非常常见,每个层次之间都有着不同的关系和职责。例如,Controller 层负责接收用户请求并调用 Service 层处理业务逻辑,DAO 层负责访问数据库并提供数据操作的方法,而 Service 层则负责协调 DAO 层和 Controller 层之间的数据传输和处理。 上面也提及到了项目出现的报错,然后报错定位到了 JDBC 连接数据库出现了问题,除了 JDBC Connection 这两个词很清楚的显示了报错的定位,我们浅浅看下其他报错内容,也可以很清晰的知道哪出了问题,接下来我们来逐步解决。 这是一个 SSM 项目中的异常信息,其中嵌套了多个异常。可以从堆栈信息中分析出以下几点: 最外层的异常类型为 NestedServletException,表示 Servlet 处理请求时发生了异常。原因是 Request processing failed,即请求处理失败。根本原因是 org.mybatis.spring.MyBatisSystemException,即 MyBatis 运行时发生了异常。再次嵌套的异常类型为 org.apache.ibatis.exceptions.PersistenceException,表示 MyBatis 操作数据库时发生了异常。错误信息中含有 Failed to obtain JDBC Connection,表示获取数据库连接失败。综合来看,这个异常可能是由于应用程序无法连接到数据库服务器导致的。应检查以下几个方面: 数据库服务器是否正常启动并且能够接受连接。数据库连接配置是否正确,包括数据库地址、端口号、用户名、密码等。数据库连接池配置是否正确,包括连接池大小、最大连接数、空闲连接超时时间等。 🧩解决过程第一次跑出来时,因为没有数据库,出现这个报错也无可奈何。之后搞到了数据库,然后用 Navicat 启动 MySQL 服务,然后在确保数据库地址、端口号、用户名、密码都正确的情况下还出现了报错。 然后我们到 WEB-INF => lib 文件下看看驱动是什么版本的,意料之中,这个包版本很低,而且我的数据库的版本是 8。这也是出现报错的主要原因。
前身和版本 com.mysql.jdbc.Driver 是旧版的 MySQL 驱动程序,已经过时,不再提供更新。它是从 MySQL Connector/J 5.1 版本开始使用的,到 MySQL Connector/J 5.1.49 版本停止更新。 com.mysql.cj.jdbc.Driver 是新版的 MySQL 驱动程序,当前稳定版本为 8.x,推荐使用此版本的驱动程序。它是从 MySQL Connector/J 5.1 版本开始引入的一个分支,最初是为了添加 Java 7 和 8 的功能而创建的,后来又添加了其他功能。 时间处理 在 com.mysql.jdbc.Driver 中,时间处理是基于服务器时区的。这意味着,在使用 com.mysql.jdbc.Driver 时,所有的时间戳都以服务器时区为基准。 但是,在 com.mysql.cj.jdbc.Driver 中,时间处理是基于连接时区的。这样可以更好地控制时间戳的处理方式,因为时间戳取决于应用程序的连接时区。 加载方式 在 com.mysql.jdbc.Driver 中,驱动程序将被自动加载和注册,无需显式加载或注册驱动程序。 而在 com.mysql.cj.jdbc.Driver 中,您需要显式地加载和注册驱动程序。通常在应用程序的初始化中注册驱动程序,即可使用这个驱动程序。 安全性 com.mysql.jdbc.Driver 存在一些安全性问题,因此不建议在生产环境中使用它。而 com.mysql.cj.jdbc.Driver 较为安全,推荐在生产环境中使用。连接属性 com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver 都支持连接属性,但在两个驱动程序中,这些属性的名称和默认值是不同的。 com.mysql.jdbc.Driver 中的连接属性名称通常以 “jdbc” 的前缀开始,例如 “jdbcCompliantTruncation”,默认情况下为 “false”。 而 com.mysql.cj.jdbc.Driver 中的连接属性名称通常以 “mysql” 的前缀开始,例如 “allowPublicKeyRetrieval”,默认情况下为 “false”。 数据库的支持程度 com.mysql.jdbc.Driver 对于一些在新版 MySQL 中引入的功能和特性可能不支持。而 com.mysql.cj.jdbc.Driver 则对这些新特性进行了改进和扩展,如支持 JSON 数据类型、支持 OpenSSL 和 SHA256_PASSWORD 加密方式等。因此,在使用 MySQL 的新特性时,建议使用 com.mysql.cj.jdbc.Driver,总之,com.mysql.cj.jdbc.Driver 更为全面、更加安全且功能更强大,建议优先使用它来连接 MySQL 数据库。 📝最后这就是文章的全部内容了,成功运行超市订单管理系统的 SSM 项目,以及 解决了 JDBC 连接数据库出现的问题。文章全部内容包括,运行 SSM 项目,弄好相关配置,解决项目运行出现的问题,以及解决方法和知识点补充,关于 com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver 的区别。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |