手把手教你实现:Android注册登录功能,通过本地服务器保存用户账号密码到数据库

这篇具有很好参考价值的文章主要介绍了手把手教你实现:Android注册登录功能,通过本地服务器保存用户账号密码到数据库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

代码我放到文章最后面了

工具准备

首先你需要电脑一台:如果没有电脑将会很难办呢 -----沃兹基硕德

下载并安装以下开发工具

  • Android Studio 官网最新版 用来开发安卓App
  • IntelliJ IDEA 官网最新版 用来开发后端,处理安卓APP的请求
  • Navicat for MySql 官网最新版 数据库可视化工具,用来查看数据库和表,以及必要时手动修改表
  • Mysql 数据库 社区最新版 用来存储 APP产生的用户数据,比如用户的账户密码
  • Post Man 官网最新版 用来测试后端API的
  • JDK 20 JDK官网就是Java 开发工具包,用JAVA 20的,实际上 JAVA 1.8以上就可以,但用高版本是最佳的

关于一些注意事项

  1. IntelliJ IDEA 需要通行证才能使用,通行证要钱,而且很贵,但如果你是大学生或者开源作者,那么是免费的,但是申请过程会比较久,所以我建议去万能的某宝买通行证,八毛即可获得。
  2. Navicat for Mysql 这个也要钱,会给你14天免费试用,这个也可以万能的某宝,或者如果你单纯只是为了学习,不太在意数据库的数据持久问题,比如我就是想过一个大学的大作业,那么我觉得14天试用足够了,到期后清除一下软件本地缓存,又可以继续用。
  3. 你应该要会JAVA语言,有一点Android基础。
  4. 关于软件配置这里久不多赘述,默认你安装好了,那么开始学习吧。

数据库构建

打开 Navicat for Mysql, 新建连接, 以及新建数据库。
请记住你填写的 用户名、密码、和新建数据库的名字
android实现1)用户登录:根据账号昵称和密码实现登录。 2)用户注册:信息包括但不限,android,服务器,数据库android实现1)用户登录:根据账号昵称和密码实现登录。 2)用户注册:信息包括但不限,android,服务器,数据库

后端项目构建

打开 IDEA 新建一个项目,选择 Spring Initializr.

由于博主从事工作是Android开发,对于Gradle管理依赖比较熟悉,所以选择的是 Gradle-Groovy,
如果你对Maven比较熟悉,你也可以选择Maven。
如果你不知道这是啥玩意,那你选择Gradle-Groovy。

Tips: 简单说这两种方式管理的都是项目依赖,依赖通俗讲 就是你这个项目除了使用 JAVA JDK提供的API以外,你还想用的其他第三方提供的库或者插件。

android实现1)用户登录:根据账号昵称和密码实现登录。 2)用户注册:信息包括但不限,android,服务器,数据库android实现1)用户登录:根据账号昵称和密码实现登录。 2)用户注册:信息包括但不限,android,服务器,数据库
创建完后,等待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]”, 然后点击右侧按钮。

android实现1)用户登录:根据账号昵称和密码实现登录。 2)用户注册:信息包括但不限,android,服务器,数据库

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 表示在启动应用程序时,会根据实体类的变化来更新数据库模式,如果没有表,就会创建,如果有就会更新,不会删除或修改现有的数据。

android实现1)用户登录:根据账号昵称和密码实现登录。 2)用户注册:信息包括但不限,android,服务器,数据库
3.配置服务器启动Banner
新增一个banner.txt文件并添加一位佛祖,保证顺顺利利,亲测有效。
android实现1)用户登录:根据账号昵称和密码实现登录。 2)用户注册:信息包括但不限,android,服务器,数据库

                                 _
                              _ooOoo_
    佛祖保佑                  o8888888oo                不要崩溃
                             88" . "88
                             (| -_- |)
                             O\  =  /O
                          ____/`---'\____
                        .'  \\|     |//  `.
                       /  \\|||  :  |||//  \
                      /  _||||| -:- |||||_  \
                      |   | \\\  -  /'| |   |
                      | \_|  `\`---'//  |_/ |
                      \  .-\__ `-. -'__/-.  /
                    ___`. .'  /--.--\  `. .'___
                 ."" '<  `.___\_<|>_/___.' _> \"".
    佛祖保佑      | | :  `- \`. ;`. _/; .'/ /  .' ; |    不要出Bug
                \  \ `-.   \_\_`. _.'_/_/  -' _.' /
  ================-.`___`-.__\ \___  /__.-'_.'_.-'================

4. 检测环境是否正常
新增一个测试Controller类,代码如下:
android实现1)用户登录:根据账号昵称和密码实现登录。 2)用户注册:信息包括但不限,android,服务器,数据库

@Controller
public class TestController {
    @RequestMapping("/banana")
    @ResponseBody
    public String doTest() {
        return "这个我的测试请求,请求成功了!!!!";
    }
}

在这个框框中选择 “项目名Application”,然后点击右侧按钮:
android实现1)用户登录:根据账号昵称和密码实现登录。 2)用户注册:信息包括但不限,android,服务器,数据库
这个时候,如果不出意外,你应该可以看到一个佛祖,并且没有任何抱错:
android实现1)用户登录:根据账号昵称和密码实现登录。 2)用户注册:信息包括但不限,android,服务器,数据库
然后打开浏览器,或者Post Man, 访问网址: http://localhost:8080/banana
android实现1)用户登录:根据账号昵称和密码实现登录。 2)用户注册:信息包括但不限,android,服务器,数据库android实现1)用户登录:根据账号昵称和密码实现登录。 2)用户注册:信息包括但不限,android,服务器,数据库

接下来,升级难度,将请求数据存入数据库中
本博客只告诉最基本的使用
以下内容涉及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.

android实现1)用户登录:根据账号昵称和密码实现登录。 2)用户注册:信息包括但不限,android,服务器,数据库

然后我们打开 Navicat for Mysql, 找到对应的表中发现已经有数据了,这说明API是可以跑通的,后端工作已经完成了。
android实现1)用户登录:根据账号昵称和密码实现登录。 2)用户注册:信息包括但不限,android,服务器,数据库

注意:

  1. 上面的代码中,表、Repository、Service、Controller是告诉你它是怎么跑起来的,你将代码粘贴上你的项目,肯定有很多爆红的地方,提示你一些类找不到,剩余其他一些工具类文件请访问GitHub获取。
  2. 如果请求API结果显示为图中,那么你已经成功90%了。

Android项目构建

如果你有Android基础,其实这个项目可以忽略,因为Android本身就是去Call这个API拿数据,只要API跑通,在哪个平台请求都是可以拿到数据的,比如:IOS,Web, Android,Windows应用,OS应用等。

1. 项目构建
android实现1)用户登录:根据账号昵称和密码实现登录。 2)用户注册:信息包括但不限,android,服务器,数据库android实现1)用户登录:根据账号昵称和密码实现登录。 2)用户注册:信息包括但不限,android,服务器,数据库android实现1)用户登录:根据账号昵称和密码实现登录。 2)用户注册:信息包括但不限,android,服务器,数据库
2. 配置网络权限
在 AndroidManifest.xml 文件中添加网络权限代码:
android实现1)用户登录:根据账号昵称和密码实现登录。 2)用户注册:信息包括但不限,android,服务器,数据库

<!--添加网络请求-->
<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'
android实现1)用户登录:根据账号昵称和密码实现登录。 2)用户注册:信息包括但不限,android,服务器,数据库

剩余代码请从GitHub克隆下项目进行查阅
效果图如下:
android实现1)用户登录:根据账号昵称和密码实现登录。 2)用户注册:信息包括但不限,android,服务器,数据库android实现1)用户登录:根据账号昵称和密码实现登录。 2)用户注册:信息包括但不限,android,服务器,数据库

Github链接

后端JAVA项目 IntelliJ IDEA: 链接
Android项目 : 链接

如果你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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 手把手教你:gitee的注册以及代码的提交(上)

    个人主页(找往期文章包括但不限于本期文章中不懂的知识点):我要学编程(ಥ_ಥ)-CSDN博客 目录 gitee的介绍  gitee的注册 提交代码到gitee 安装git和图形化界面工具  在gitee上创建远程仓库。 clone远程仓库到本地电脑 git的三板斧  add commit  push   首先,我们得了解什么是git

    2024年02月22日
    浏览(58)
  • Midjourney教学使用教程,AI绘图赏析prompt,手把手教你Midjoureny注册和使用

    话不多说请先赏图: 目前 Midjourney 暂不支持免费次数了,尽量付费吧。 如果不清楚如何付费请参考:【保姆级】国内如何购买midjourney?midjourney购买教程?midjourney注册教程  1.写实: 提示词(prompt): a beautiful asian women ::2,red bow, christmas tree ::2 ,skirt,gifts ::1,christmas card,beaut

    2024年04月14日
    浏览(72)
  • GitHub从注册到上传静态网页(保姆级教程手把手教你上载自己的静态网页)

    全程我会卸载软件和创建小号进行展示,小白也可以玩转 这是按照本教程搭建的GitHub托管网页,由于是GitHub的服务器,国内访问会非常!慢! https://hidered.github.io/zzz.github.io/ https://github.com/ 浏览器输入 进入后网页如下 无法验证就要再输入一次,这个验证方式还是很好玩的 那

    2024年02月03日
    浏览(44)
  • 手把手图文并茂教你创建并使用私钥privateKey登录 SSH 服务器

    我们平时登录Linux服务器的时候,经常是使用用户名和密码进行登录,但是如果我们要使用它进行代码连接或者其他操作的情况下,我们需要一种更为安全的方式进行登录,就需要privateKey登录 SSH 服务器 RSA 非对称加密 在 SSH 登录时可以使用 RSA 密钥登录 使用工具ssh-keygen可以

    2024年02月15日
    浏览(57)
  • 手把手教你实现SpringBoot的监控!

    任何一个服务如果没有监控,那就是两眼一抹黑,无法知道当前服务的运行情况,也就无法对可能出现的异常状况进行很好的处理,所以对任意一个服务来说,监控都是必不可少的。 就目前而言,大部分微服务应用都是基于 SpringBoot 来构建,所以了解 SpringBoot 的监控特性是非

    2024年02月11日
    浏览(51)
  • 【uni-app】【Android studio】手把手教你运行uniapp项目到Android App

    选择运行到Android App基座 选择运行项目 1、连接手机,在手机上选择 传输文件。 2、打开 设置 - 关于本机 - 版本信息 -连续点击4-5次 版本号 ,输入手机密码,系统就进入了开发者模式。 3、 设置 其他设置 开发者选项 打开 开发者选项 打开 USB调试 。 4、回到Hbuilder,点击刷新

    2024年02月09日
    浏览(55)
  • 深入浅出:手把手教你实现单链表

    链表是一种 链状数据结构 。简单来说,要存储的数据在内存中分别独立存放,它们之间通过某种方式相互关联。 如果我们使用C语言来实现链表,需要声明一个 结构体 作为链表的结点,结点之间使用指针关联。 单向链表的每个结点内都有一个指针指向下一个结点,从而把所

    2024年02月10日
    浏览(53)
  • 记录--手把手教你,用electron实现截图软件

    因为我们日常开发项目的时候,需要和同事对接 api 和 文档 还有 UI图 ,所以有时候要同时打开多个窗口,并在多个窗口中切换,来选择自己要的信息,如果 api 和 文档 不多的情况还好,但是有时候就是要做大量的页面,为了提升效率我决定自己做一个截图工具,并把自己要

    2024年02月12日
    浏览(69)
  • 手把手教你快速实现内网穿透

    前言 要想实现在公网访问到本地的项目,除了将其部署到云服务器上外,还可以通过内网穿透来实现,避免了项目出现问题修改后需要重新部署到云服务器上比较繁琐的步骤,也不需要公网IP以及服务器。 内网穿透,简单来说就是通过公网IP服务器进行数据流量转发,将原本

    2024年02月13日
    浏览(49)
  • 手把手教你用video实现视频播放功能

    哈喽。大家好啊 今天需要做一个视频播放列表,让我想到了video的属性 下面让我们先看看实现效果 这里是我的代码 width是当前播放页面的宽度 height是当前播放页面的高度 Controls属性用就是控制栏那些了 比如播放按钮 暂停按钮 autoplay是指的是自动播放 poster是指的是初始化进

    2024年02月12日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包