1 前言&概述
这篇文章是基于此处文章的更新,更新了一些技术栈,更加贴近实际需要,以及修复了若干的错误。
这是一个前端Android+后端Java/Kotlin通过Servelt进行后台数据库(MySQL)交互的详细步骤以及源码实现,技术栈:Android基础
原生JDBC+原生Servlet
Tomcat+MySQL(Docker)
当然现在的很多Java后端开发都使用了Spring Boot而不是原生的Servlet,所以使用Spring Boot实现的可以笔者的另一篇文章。
尽管基于Spring Boot实现非常的简便,但是使用原生的Servlet更能理解底层的原理。另外本篇文章是偏基础向的教程,很多步骤都会比较详细而且附上了图,好了废话不说,正文开始。
2 环境Android Studio 4.1.2
IntelliJ IDEA 2020.3
MySQL 8.0.23
Tomcat 10.0
Docker 20.10.1
服务器CentOS 8.1.1911
3 环境准备
3.1 IDE准备
官网安装Android Studio+IDEA,这部分就省略了。
3.2 MySQL
3.2.1 安装概述
这里的MySQL若无特殊说明指的是MySQL Community。
首先,在Windows下,MySQL提供了exe安装包:
macOS下提供了dmg安装包:
可以戳这里下载。
Linux下一般来说MySQL安装有如下方式:软件包安装(apt/apt-get、yum、dnf、pacman等)
下载压缩包安装
源码编译安装
Docker安装
其中相对省事的安装方式为Docker安装以及软件包安装,其次是压缩包方式安装,特别不建议源码安装(当然如果喜欢挑战的话可以参考笔者的一篇编译安装8.0.19以及编译安装8.0.20)。
3.2.2 安装开始
这里笔者本地测试选择的是使用Docker安装,步骤可以查看这里。
另外对于服务器,也可以使用Docker安装,如果使用软件包安装的话,这里以笔者的CentOS8为例,其他系统的参考如下:
3.2.2.1 下载并安装
添加仓库:sudo yum install https://repo.mysql.com/mysql80-community-release-el8-1.noarch.rpm
禁用默认MySQL模块(CentOS8中会包含一个默认的MySQL模块,不禁用的话没办法使用上面添加的仓库安装):sudo yum module disable mysql
安装:sudo yum install mysql-community-server
3.2.2.2 启动服务并查看初始化密码
启动服务:systemctl start mysqld
查看临时密码:sudo grep 'temporary password' /var/log/mysqld.log
输入临时密码登录:mysql -u root -p
修改密码:alter user 'root'@'localhost' identified by 'PASSWORD'
3.2.2.3 创建外部访问用户
不建议在Java中直接访问root用户,一般是新建一个对应权限的用户并进行访问,这里就为了方便就省略了。
3.3 Tomcat
3.3.1 本地Tomcat
Tomcat安装不难,直接从官网下载即可:
解压:tar -zxvf apache-tomcat-10.0.0.tar.gz
进入bin目录运行startup.sh:cd apache-tomcat-10.0.0/bin
./startup.sh
本地访问localhost:8080:
这样就算成功了。对于Windows的读者,可以戳这里下载,解压步骤类似,解压后运行startup.bat即可访问localhost:8080。
3.3.2 服务器Tomcat
服务器的话可以直接使用wget安装:wget https://downloads.apache.org/tomcat/tomcat-10/v10.0.0/bin/apache-tomcat-10.0.0.tar.gz
但是这样速度很慢,建议下载到本地再使用scp上传:scp apache-tomcat-10.0.0.tar.gz username@xxx.xxx.xxx.xxx:/
一样按照上面的方法解压后运行startup.sh,访问公网IP:8080即可观察是否成功。
4 建库建表
4.1 用户表
这里使用到的MySQL脚本如下:CREATE DATABASE userinfo;
USE userinfo;
CREATE TABLE user
(
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
name CHAR(30) NULL,
password CHAR(30) NULL
)
4.2 导入mysql -u root -p
5 后端部分
因为是比较基础向的教程,所以先从创建项目开始吧。
5.1 创建项目+导库
选择对应Java Enterprise,默认是选中了其中的Web application,构建工具默认Maven,测试工具JUnit,如果需要Gradle或Kotlin的话自行勾选即可:
2020.3版本的IDEA相比起以前,更加人性化的添加了选择库的功能,默认是选中了Servlet,需要其他库的话自行选择即可。
另外一个要注意的是JavaEE已经更名为JakartaEE,因此版本这里可以选择JakartaEE:
填上对应包名并选择位置:
创建完成后,这里笔者遇到了一个错误,找不到对应的Servlet包:
在设置中选择更新中心仓库即可:
创建后的目录如图所示:
接着添加依赖,用到的依赖包括:MySQL
Jackson
Lombok
添加到pom.xml中即可(注意版本,MySQL不同版本可以查看这里):
mysql
mysql-connector-java
8.0.23
org.projectlombok
lombok
1.18.16
provided
com.fasterxml.jackson.core
jackson-databind
2.12.1
这样第一步就完成了。
5.2 结构
项目结构如下:持久层操作:Dao
实体类:User
响应体:ResponseBody
Servlet层:SignIn/SignUp/Test
工具类:DBUtils
启动类:不需要,因为在Web服务器中运行
先创建好文件以及目录: