代码我放到文章最后面了
工具准备
首先你需要电脑一台:如果没有电脑将会很难办呢 -----沃兹基硕德
下载并安装以下开发工具
- Android Studio 官网最新版 用来开发安卓App
- IntelliJ IDEA 官网最新版 用来开发后端,处理安卓APP的请求
- Navicat for MySql 官网最新版 数据库可视化工具,用来查看数据库和表,以及必要时手动修改表
- Mysql 数据库 社区最新版 用来存储 APP产生的用户数据,比如用户的账户密码
- Post Man 官网最新版 用来测试后端API的
- JDK 20 JDK官网就是Java 开发工具包,用JAVA 20的,实际上 JAVA 1.8以上就可以,但用高版本是最佳的
关于一些注意事项:
- IntelliJ IDEA 需要通行证才能使用,通行证要钱,而且很贵,但如果你是大学生或者开源作者,那么是免费的,但是申请过程会比较久,所以我建议去万能的某宝买通行证,八毛即可获得。
- Navicat for Mysql 这个也要钱,会给你14天免费试用,这个也可以万能的某宝,或者如果你单纯只是为了学习,不太在意数据库的数据持久问题,比如我就是想过一个大学的大作业,那么我觉得14天试用足够了,到期后清除一下软件本地缓存,又可以继续用。
- 你应该要会JAVA语言,有一点Android基础。
- 关于软件配置这里久不多赘述,默认你安装好了,那么开始学习吧。
数据库构建
打开 Navicat for Mysql, 新建连接, 以及新建数据库。
请记住你填写的 用户名、密码、和新建数据库的名字。
后端项目构建
打开 IDEA 新建一个项目,选择 Spring Initializr.
由于博主从事工作是Android开发,对于Gradle管理依赖比较熟悉,所以选择的是 Gradle-Groovy,
如果你对Maven比较熟悉,你也可以选择Maven。
如果你不知道这是啥玩意,那你选择Gradle-Groovy。
Tips: 简单说这两种方式管理的都是项目依赖,依赖通俗讲 就是你这个项目除了使用 JAVA JDK提供的API以外,你还想用的其他第三方提供的库或者插件。
创建完后,等待IDEA初始化完成。(它主要在下载 Spring- Boot框架)
1. 配置Gradle中的依赖
在 项目结构中找到 build.gradle文件,并在dependencies闭包中 添加以下依赖代码:
// json解析库 用于解析json
implementation 'com.google.code.gson:gson:2.10.1'
// mysql数据库操作
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'mysql:mysql-connector-java:8.0.27'
// Lombok 插件 减少模版代码编写
compileOnly "org.projectlombok:lombok:1.18.20"
annotationProcessor "org.projectlombok:lombok:1.18.20"
添加完成后,需要手动同步一下依赖,在这个框框中选择 “项目名[dependencies]”, 然后点击右侧按钮。
2. 数据库连接配置
在application.properties中,添加以下代码:
spring.datasource.url=jdbc:mysql://localhost:3306/数据库名字?useSSL=false&serverTimezone=UTC
spring.datasource.username=数据库账号
spring.datasource.password=数据库密码
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url:指定了数据库的连接URL,连接地址为“localhost:3306/数据库名”。useSSL=false 表示不使用SSL加密连接数据库,serverTimezone=UTC 表示使用UTC时区。
spring.datasource.username和spring.datasource.password分别指定了数据库的用户名和密码。
spring.jpa.database-platform 指定了Hibernate的数据库方言,这里是指定使用MySQL 8的方言。
spring.jpa.hibernate.ddl-auto=update 表示在启动应用程序时,会根据实体类的变化来更新数据库模式,如果没有表,就会创建,如果有就会更新,不会删除或修改现有的数据。
3.配置服务器启动Banner
新增一个banner.txt文件并添加一位佛祖,保证顺顺利利,亲测有效。
_
_ooOoo_
佛祖保佑 o8888888oo 不要崩溃
88" . "88
(| -_- |)
O\ = /O
____/`---'\____
.' \\| |// `.
/ \\||| : |||// \
/ _||||| -:- |||||_ \
| | \\\ - /'| | |
| \_| `\`---'// |_/ |
\ .-\__ `-. -'__/-. /
___`. .' /--.--\ `. .'___
."" '< `.___\_<|>_/___.' _> \"".
佛祖保佑 | | : `- \`. ;`. _/; .'/ / .' ; | 不要出Bug
\ \ `-. \_\_`. _.'_/_/ -' _.' /
================-.`___`-.__\ \___ /__.-'_.'_.-'================
4. 检测环境是否正常
新增一个测试Controller类,代码如下:
@Controller
public class TestController {
@RequestMapping("/banana")
@ResponseBody
public String doTest() {
return "这个我的测试请求,请求成功了!!!!";
}
}
在这个框框中选择 “项目名Application”,然后点击右侧按钮:
这个时候,如果不出意外,你应该可以看到一个佛祖,并且没有任何抱错:
然后打开浏览器,或者Post Man, 访问网址: http://localhost:8080/banana
接下来,升级难度,将请求数据存入数据库中
本博客只告诉最基本的使用
以下内容涉及Spring 提供的一些语法,详细可以看官网文档
5. 建立表
新建一个User.java文件
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = Constants.USER_TABLE)
public class User {
// 用户ID,唯一的
@Id
private Long uid;
// 用户名字
@Column(name="name")
private String name;
// 用户手机号
@Column(name="phone_number")
private String phoneNumber;
// 用户密码
@Column(name = "password")
private String password;
// 用户是否是黑名单
@Column(name = "is_black")
private int isBlack;
// 用户是否注销了账号
@Column(name = "is_log_off")
private int isLogOff;
}
6. 建立 Repository 仓库层
新建一个 UserRepository接口文件,继承 JpaRepository<表类名, Long>
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
// 根据用户UID查询用户
List<User> findByUid(Long uid);
// 根据用户手机号查询用户
List<User> findByPhoneNumber(String phoneNumber);
// 获取数据库中用户实体数量
long count();
// 添加一位用户进数据库
User save(User user);
}
7. 新建Service层,对数据进行预处理
新建一个 UserService.java文件
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public List<User> getUsersByUid(Long uid) {
return userRepository.findByUid(uid);
}
public List<User> getUserByPhoneNumber(String phoneNumber) {
return userRepository.findByPhoneNumber(phoneNumber);
}
public long countUser() {
return userRepository.count();
}
public User addUser(User user) {
return userRepository.save(user);
}
}
8.最后一层,Controller,和上面TestController类似
新建一个RegisterController.java, 在这里定义用户Call 注册API时的处理逻辑
@Controller
public class RegisterController {
@Autowired
UserService service;
@RequestMapping("/register")
@ResponseBody
public String doRegister(@RequestBody String body) {
// 核验用户上传参数数据是否正确
BaseRequest<RegisterMessage> baseRequest =
CheckRequestBodyUtil.instance().checkJsonStr(body, new TypeToken<RegisterMessage>() {}.getType());
if (baseRequest.isOk()) {
// 参数核验正确,判断是否已经注册过这个手机号
List<User> userList = service.getUserByPhoneNumber(baseRequest.getData().getPhoneNumber());
if (userList != null && userList.size() > 0) {
// 已经注册过了
return ErrorResponseUtil.instance().initResponse(Constants.PHONE_NUMBER_USED);
} else {
// 没有注册过,那么生成UID,并将用户信息插入数据库的 user_message表中
long count = service.countUser();
User user = new User(
UidUtil.instance().provide(count),
baseRequest.getData().getName(),
baseRequest.getData().getPhoneNumber(),
baseRequest.getData().getPassword(),
0,
0
);
User useResult = service.addUser(user);
if (useResult != null) {
// 新增用户成功了
return SuccessResponseUtil.instance().simpleResponse();
} else {
// 新增用户失败了
return ErrorResponseUtil.instance().initResponse(null);
}
}
} else {
// 参数核验失败
return ErrorResponseUtil.instance().initResponse(Constants.PARAM_ERROR);
}
}
}
9. 用PostMan模拟 客户端发出的注册请求
在Post Man中,输入 http://localhost:8080/register, 然后请求方式改为 Post, 最后填写Body数据,点击Send.
然后我们打开 Navicat for Mysql, 找到对应的表中发现已经有数据了,这说明API是可以跑通的,后端工作已经完成了。
注意:
- 上面的代码中,表、Repository、Service、Controller是告诉你它是怎么跑起来的,你将代码粘贴上你的项目,肯定有很多爆红的地方,提示你一些类找不到,剩余其他一些工具类文件请访问GitHub获取。
- 如果请求API结果显示为图中,那么你已经成功90%了。
Android项目构建
如果你有Android基础,其实这个项目可以忽略,因为Android本身就是去Call这个API拿数据,只要API跑通,在哪个平台请求都是可以拿到数据的,比如:IOS,Web, Android,Windows应用,OS应用等。
1. 项目构建
2. 配置网络权限
在 AndroidManifest.xml 文件中添加网络权限代码:
<!--添加网络请求-->
<uses-permission android:name="android.permission.INTERNET" />
3. 配置第三方库依赖
我们需要以下依赖:
Retrofit :用于http协议/https协议的网络请求
Gson: 用于json数据解析
Rxjava: 用于异步操作
在app目录下的 build.gradle文件下添加以下依赖,然后点击右上角的 “Sync Now”,下载并同步远程依赖。
// Retrofit
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:adapter-rxjava3:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
// Rxjava
implementation "io.reactivex.rxjava3:rxjava:3.1.6"
// Gson
implementation 'com.google.code.gson:gson:2.10.1'
剩余代码请从GitHub克隆下项目进行查阅
效果图如下:
Github链接
后端JAVA项目 IntelliJ IDEA: 链接
Android项目 : 链接文章来源:https://www.toymoban.com/news/detail-794520.html
如果你Android APP注册时,总提示网络故障,说明你访问的本地IP域名不对,解决原理是 让手机和电脑处于同一局域网下:
一种方式是: 手机开热点,让电脑连接热点,查看电脑IP地址,并将其填入Android APP中 访问API的域名。
另外一种是: 电脑用虚拟机模拟器运行 Android项目,并将“http://localhost:8080”作为Android APP访问API的域名。文章来源地址https://www.toymoban.com/news/detail-794520.html
到了这里,关于手把手教你实现:Android注册登录功能,通过本地服务器保存用户账号密码到数据库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!