Android前端+Spring Boot后端 登录功能实现

这篇具有很好参考价值的文章主要介绍了Android前端+Spring Boot后端 登录功能实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.后端比较熟悉,先说后端框架搭建

(1)创建项目,总体框架

创建项目后,自己添加包,框架如下

android与spring,学习生活,前端,maven,java,spring boot,intellij idea

android与spring,学习生活,前端,maven,java,spring boot,intellij idea android与spring,学习生活,前端,maven,java,spring boot,intellij idea

userController里的一些内容,只供参考,代码不全,无法实现

@RestController
@Slf4j
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 用户登录类
     */
    @PostMapping("/login")
    public R<User> login(@RequestBody User user, HttpSession session){
        // 查询数据库
        final LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(User::getUserName, user.getUserName());
        final User user1 = userService.getOne(queryWrapper);
        // 没有根据账号找到数据
        if (user1 == null) {
            return R.error("账号不存在");
        }
        // 密码比对
        if (!user1.getUserPassword().equals(user.getUserPassword())) {
            return R.error("密码错误");
        }
        // 登陆成功,保存userID
        session.setAttribute("userName", user.getUserName());
        log.info("当前登录用户name:" + user.getUserName());
        
        return R.success(user1);

    }
}

(2)创建数据库

数据库是直接在社区版IDEA里连接Mysql,在控制台端创建的数据库和user表,用于数据交互。

android与spring,学习生活,前端,maven,java,spring boot,intellij idea

2.Android前端

(1)前端主要框架

Activity包里是Activity Java类,主要响应layout包里activity_login.xml等页面布局内的按钮响应

android与spring,学习生活,前端,maven,java,spring boot,intellij idea

(2)写登录功能

activity_login.xml里的内容,只参考界面布局代码即可,代码不可用

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:gravity="bottom|center"
    android:orientation="vertical"
    tools:context=".Activity.LoginActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="122dp"
        android:orientation="vertical">

        <TextView
            android:id="@+id/textView"
            android:layout_width="match_parent"
            android:layout_height="80dp"
            android:gravity="bottom|center"
            android:paddingBottom="15dp"
            android:text="登录"
            android:textColor="#0E0D0B"
            android:textSize="34sp" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <EditText
            android:id="@+id/Username"
            android:layout_width="match_parent"
            android:layout_height="56dp"
            android:layout_marginLeft="40dp"
            android:layout_marginTop="40dp"
            android:layout_marginRight="30dp"
            android:layout_marginBottom="20dp"
            android:ems="10"
            android:gravity="bottom|center"
            android:hint="请输入用户名"
            android:inputType="textPersonName"
            android:paddingLeft="20dp"
            android:textSize="24sp" />

        <EditText
            android:id="@+id/password"
            android:layout_width="match_parent"
            android:layout_height="56dp"
            android:layout_marginLeft="40dp"
            android:layout_marginTop="25dp"
            android:layout_marginRight="30dp"
            android:layout_marginBottom="20dp"
            android:ems="10"
            android:gravity="bottom|center"
            android:hint="请输入密码"
            android:inputType="textPassword"
            android:paddingLeft="20dp"
            android:textSize="24sp"
            android:visibility="visible" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <Button
            android:id="@+id/login"
            android:layout_width="320dp"
            android:layout_height="75dp"
            android:layout_gravity="bottom|center"
            android:layout_marginTop="30dp"
            android:text="登录"
            android:textSize="24sp" />

        <Button
            android:id="@+id/register"
            android:layout_width="320dp"
            android:layout_height="75dp"
            android:layout_gravity="bottom|center"
            android:layout_marginTop="30dp"
            android:text="注册"
            android:textSize="24sp" />
    </LinearLayout>
</LinearLayout>

LoginActivity.java

public class LoginActivity extends AppCompatActivity {
    private EditText name;
    private EditText password;

    Button login,register;  //登录、注册按钮

    @Override
    protected void onCreate(Bundle savedState){
        super.onCreate(savedState);
        setContentView(R.layout.activity_login);

        name = findViewById(R.id.Username);  //获取输入的账号
        password = findViewById(R.id.password);  //获取输入的密码
        login = findViewById(R.id.login);
        register = findViewById(R.id.register);

        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String url = "http://后端部署ip地址:8080/user/login";
                String username = name.getText().toString().trim();
                String userPassword = password.getText().toString().trim();

                if(username.equals("")){
                   Toast.makeText(LoginActivity.this, "请输入用户名", Toast.LENGTH_SHORT).show();

                }else if(userPassword.equals("")){
                   Toast.makeText(LoginActivity.this, "请输入密码", Toast.LENGTH_SHORT).show();

                }else {

                    //请求传入的参数
                    JSONObject user = new JSONObject();
                    try{
                        user.put("userName",username);
                        user.put("userPassword",userPassword);
                    }catch (JSONException e){
                        e.printStackTrace();
                    }


                    OkHttpClient httpClient = new OkHttpClient();
                    MediaType type = MediaType.parse("application/json;charset=utf-8");
                    RequestBody requestBody = RequestBody.create(type,""+ user);

                    Request getRequest = new Request.Builder()
                        .url(url)
                        .post(requestBody)
                        .build();
                    Call call = httpClient.newCall(getRequest);
                    call.enqueue(new Callback() {
                        @Override
                        public void onFailure(Call call, IOException e) {

                            Log.i(TAG, "post请求失败 \n" +
                                "*********请求体,传送数据*********** \n"+
                                requestBody.toString() + "\n"+
                                "*****user里的数据***** \n"+
                                user);
                        }

                        @Override
                        public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
                            assert response.body() != null;
                            String R = response.body().string();
                            Log.i(TAG, "okHttpPost enqueue: \n " +
                                "onResponse:"+ response.toString() +"\n " +
                                "body:" +R);
                            //将resoust转换成jsonPath 格式
//                            io.restassured.path.json.JsonPath jsonPath =io.restassured.path.json.JsonPath.from(R);
                            try {
                                JSONObject toJsonObj= new JSONObject(R);
                                if(response.code()==200 && toJsonObj.get("code").equals(1)){
                                    Intent intent = new Intent();
                                    intent.setClass(LoginActivity.this, MainActivity.class);
                                    startActivity(intent);
                                }
                                else {
                                    Looper.prepare();
                                    Toast.makeText(LoginActivity.this, toJsonObj.get("code")+"****"+toJsonObj.get("msg").toString(), Toast.LENGTH_SHORT).show();
                                    Looper.loop();
                                }
                            } catch (JSONException e) {
                                throw new RuntimeException(e);
                            }

                        }
                    });

                }
            }
        });

       
    }


}

3.注意踩坑

(1)后端数据库配置

建议后端代码运行时,确认数据库是否能正常连接,不只看IDEA连接数据库,更要看application.yml配置文件里的数据库

(2)Android传数据时使用的URL

建议查看后端运行的所在网络IPV4地址,即为url请求地址。我在本机上运行的后端,但是有时候电脑联网不同,IPV4地址也不同,url会变,不一致则出现请求失败的情况。

(3)Android okhttp3网络请求框架

建议初学者仔细阅读官方文档和教程,不要在网上随意找个代码,大家的代码思路不太相同,复制别人的代码,但是又搞不懂请求流程,反而耗费时间文章来源地址https://www.toymoban.com/news/detail-517669.html

到了这里,关于Android前端+Spring Boot后端 登录功能实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 微信小程序的授权登录-Java 后端 (Spring boot)

    微信开发文档链接:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 一个可以测试的微信小程序 此微信小程序的APPID和APPscret(至开发者后台获取) 从时序图我们可以了解到流程大致分为两步: 小程序端获取code后传给Java后台 Java后台获取code后向微信后台接口

    2024年02月09日
    浏览(41)
  • 网页版Java(Spring/Spring Boot/Spring MVC)五子棋项目(二)前后端实现用户的登录和注册功能【用户模块】

    1. 用户id 2. 用户名 3. 密码 4. 天梯积分 5. 总场数 6. 获胜场数 和数据库的数据一一对应 1. 连接数据库(application.yml连接数据库) 这个可以直接赋值代码 2. 创建UserMapper的Java接口(interface UserMapper) 创建接口,在UserMapper.xml实现 在model中创建 需要实现@Mapper注释 3. 创建UserMappe

    2024年02月13日
    浏览(45)
  • Spring Boot 统一功能处理(拦截器实现用户登录权限的统一校验、统一异常返回、统一数据格式返回)

    目录 1. 用户登录权限校验 1.1 最初用户登录权限效验 1.2 Spring AOP 用户统⼀登录验证 1.3 Spring 拦截器 (1)创建自定义拦截器 (2)将自定义拦截器添加到系统配置中,并设置拦截的规则 1.4 练习:登录拦截器 (1)实现 UserController 实体类 (2)返回的登录页面:login.html (3)实

    2024年02月12日
    浏览(45)
  • 【安卓app开发一】Android Studio + Bmob后端云实现注册&登录账号、密码找回、意见反馈及数据可视化

    目录 前言 概览 Bmob后端云介绍 Bmob后端云与Android Studio配置 一、Bmob后端云  二、Android Studio配置 工具类 一、User类 二、Suit类 三、Code类 实现类  一、登录代码  二、注册代码  三、找回密码代码  四、想法反馈代码         本项目尚在开发阶段,主要针对的是安卓用户,通

    2024年02月08日
    浏览(49)
  • Android Studio实现Mysql(5.7)数据库增删改查(上)——用户登录功能实现

    前言:如果android studio安装和第一次跑helloworld有什么问题可以参考:(34条消息) Android Studio踩的那些坑(gradle build、unable to find tasks to···等等)_TidesWise的博客-CSDN博客 目录 准备工作 查询学生数目demo:  增删改查完整案例 1、在Android Studio中新建项目My Application; 2、在Androi

    2024年02月10日
    浏览(36)
  • React.js前端 + Spring Boot后端员工管理

    该项目是一个员工管理系统,前端使用 React.js 构建,后端使用 Spring Boot 和 Data JPA 和 Lombok 构建。它提供了有效管理员工信息的全面解决方案。 特征 响应式设计:响应式 UI 设计,确保跨各种设备的可用性。 数据验证:验证用户输入以确保数据完整性。 使用的技术 前端:R

    2024年04月28日
    浏览(46)
  • Spring Boot后端+Vue前端:打造高效二手车交易系统

    作者介绍: ✌️大厂全栈码农|毕设实战开发,专注于大学生项目实战开发、讲解和毕业答疑辅导。 🍅 获取源码联系方式请查看文末 🍅  推荐订阅精彩专栏 👇🏻 避免错过下次更新 Springboot项目精选实战案例 更多项目: CSDN主页YAML墨韵 学如逆水行舟,不进则退。学习如赶

    2024年04月28日
    浏览(59)
  • Spring Boot后端与Vue前端融合:构建高效旅游管理系统

    作者介绍: ✌️大厂全栈码农|毕设实战开发,专注于大学生项目实战开发、讲解和毕业答疑辅导。 🍅 获取源码联系方式请查看文末 🍅  推荐订阅精彩专栏 👇🏻 避免错过下次更新 Springboot项目精选实战案例 更多项目: CSDN主页YAML墨韵 学如逆水行舟,不进则退。学习如赶

    2024年04月28日
    浏览(54)
  • 手把手教你实现:Android注册登录功能,通过本地服务器保存用户账号密码到数据库

    代码我放到文章最后面了 首先你需要电脑一台:如果没有电脑将会很难办呢 -----沃兹基硕德 下载并安装以下开发工具 Android Studio 官网最新版 用来开发 安卓App IntelliJ IDEA 官网最新版 用来开发 后端 ,处理安卓APP的请求 Navicat for MySql 官网最新版 数据库可视化工具,用来查看数

    2024年01月16日
    浏览(43)
  • SpringBoot + Vue前后端分离项目实战 || 三:Spring Boot后端与Vue前端连接

    系列文章: SpringBoot + Vue前后端分离项目实战 || 一:Vue前端设计 SpringBoot + Vue前后端分离项目实战 || 二:Spring Boot后端与数据库连接 SpringBoot + Vue前后端分离项目实战 || 三:Spring Boot后端与Vue前端连接 SpringBoot + Vue前后端分离项目实战 || 四:用户管理功能实现 SpringBoot + Vue前后

    2024年02月12日
    浏览(62)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包