【版本】
当前版本号v20241028
版本 | 修改说明 |
---|---|
v20241028 | 新增常见问题,连接MySQL8出现的问题 |
v20211125 | 增加常见问题 |
v20211106 | 初始化版本 |
【实验名称】 实验2.1 导入 Web 项目
【实验目的】
- 掌握 Java Web 项目的导入和配置
- 掌握数据库的连接和配置
【实验环境】
- 内存:至少4G
- 硬盘:至少空余10G
- 操作系统: 64位 Windows系统。
【实验资源】
下载地址:
链接:https://pan.baidu.com/s/1qy0QpYbG_dWT8fKx3ZjvnQ
提取码:heis
资源说明:
travel-stu.zip
【实验步骤】
获取
travel-stu.zip
使用 IDEA 打开travel-stu
项目目录。导入项目以后,打开 IDEA
File -> Settings
菜单。找到Maven 选项,指向你安装的 Maven 路径。
- 右键点击 pom.xml,选择
Maven -> Reload project
下载 Maven 包依赖。
参考Part 1,启动 MySQL 数据库和 Redis 。
找到
src/main/resources/db/migration
目录,按脚本名称顺序执行 SQL 脚本,构建数据库。找到
src/main/resources/druid.properties
,配置相应的数据库连接URL,用户名和密码。
提示:数据库名称、用户名和密码可以在
src/main/resources/db/migration/V001__CREATE_DB.sql
找到。
打开 IDEA
Build -> Build project
菜单,开始构建项目。新增一个名为
redeploy
运行任务,其中Command Line
输入以下内容:
compile war:exploded
运行
redeploy
任务。新增一个名为
Application
的 Java 运行任务,指向com.zjtec.travel.Application
。运行
Application
任务。访问http://localhost:8082 可以看到网站首页。
【实验名称】 实验2.2 使用 IDEA 调试模式重新构建项目
【实验目的】
- 掌握 Java Web 项目开发过程中重新构建技巧
【实验环境】
- 内存:至少4G
- 硬盘:至少空余10G
- 操作系统: 64位 Windows系统。
【实验说明】
在开发的过程中,如果修改了代码可能需要重新构建项目、并重新发布,使用自动任务的方式可以提升我们的开发调试效率。
【实验步骤】
- 停止运行
Application
任务。并使用Debug模式启动。
找到旅游网站首页对应的网页文件
src/main/webapp/index.html
在约108行找到以下代码,并修改其中的价格。从889修改为899。
<div class="price">网付价<em>¥</em><strong>889</strong><em>起</em></div>
重新构建项目。
运行
redeploy
任务,重新发布项目。访问[http://localhost:8082],并刷新查看首页的第一个旅游产品价格是否修改为了899。
【常见问题】
1. 运行 Application 的时候提示错误:找不到或无法加载主类com.zjtec.travel.Application
答:只需要重新构建项目。
2. 使用 MySQL 8,IDEA 运行 Application 控制台提示“public key retrieval is not allowed”错误。
答:这个是由于没有开启允许从服务器直接下载加密公钥提示出错。
- (1) 修改
travel-stu/src/main/resources/druid.properties
文件,在URL后面加入参数设置allowPublicKeyRetrieval=true
,注意使用&
符号作为分隔符。
url=jdbc:mysql://localhost:3306/travel?useUnicode=true&characterEncoding=UTF-8
- 修改为
url=jdbc:mysql://localhost:3306/travel?useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=true
3. 连接数据库提示 SSL 相关错误
答:需要关闭连接 MySQL 的 SSL选项。
- (1) 修改
travel-stu/src/main/resources/druid.properties
文件,在URL后面加入参数设置useSSL=false
,注意使用&
符号作为分隔符。
url=jdbc:mysql://localhost:3306/travel?useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=true
- 修改为
url=jdbc:mysql://localhost:3306/travel?useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=true&useSSL=false
4. 使用MySQL 8数据库,启动项目 Application 的时候,出现validateconnection false
错误提示。
答:部分包不兼容 MySQL 8,需要更新包的版本。
- (1)修改项目Maven配置文件
travel-stu/pom.xml
,MySQL连接驱动包的版本
<!-- MySQL 连接驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
- 修改为
<!-- MySQL 连接驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
- (2)修改项目Maven配置文件
travel-stu/pom.xml
,Druid的版本。
<!-- 数据库连接池的包 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.9</version>
</dependency>
- 修改为
<!-- 数据库连接池的包 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.23</version>
</dependency>
5. 连接 MySQL 连接出现以下时区(Time Zone)错误。
Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
答:MySQL 使用系统的时区设置来确定时间,但是系统时区设置是中文有可能会导致错误。
- (1)通过 Windows 搜索找到“服务”。
- (2)找到服务里面的 MySQL 或 MySQL80 服务,查看“可执行文件路径”,找到MySQL 的配置文件
my.ini
的所在路径。
- (3)文本编辑器打开
my.ini
,在[mysqld]
组下加入以下配置,表示默认时区为东8区。
default-time-zone='+08:00'