Android——XUtils3实现登录和注册页面校验

本篇是实现app登录和注册校验的操作

案例图:


接口地址:

1. 登录接口

http://120.27.23.105/user/login

请求参数:

mobile手机号  必传参数

password密码  必传参数

2. 注册接口 

http://120.27.23.105/user/reg

请求参数:

mobile手机号  必传参数

password密码  必传参数


案例:实现登录注册功能

1. 新建Android Studio项目,实现登录和注册页面效果

1) 点击登录按钮实现登录接口,登陆成功后跳转到商品列表页面

2) 点击注册按钮跳转到注册页面

2. 集成xUtils,并用xUtils请求数据

3. 实现如图注册页面逻辑

1) 本地使用正则表达式校验手机号为合法手机号

2) 本地校验密码不能少于六位数

3) 点击左上角返回按钮,跳转到登录页面

4) 实现注册接口,注册成功后,toast提示“注册成功”并跳转到登录页面

5) 如果手机号已经被注册,提示手机号已经被注册

4. 实现登录页面逻辑

1) 使用正则表达式校验手机号为合法手机号

2) 校验密码不能少于六位数

3) 实现登录接口,登录成功,toast提示“登录成功”,如果用户名或密码错误,toast提示“用户名或密码错误”

代码:

MainActivity

package com.bawei.com.myapplication;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.gson.Gson;

import org.xutils.common.Callback;
import org.xutils.http.RequestParams;
import org.xutils.x;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MainActivity extends AppCompatActivity {

    private Button btn_login;
    private Button btn_regist;
    private EditText et_mobile;
    private EditText et_password;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //查找控件
        btn_login = findViewById(R.id.btn_login);
        btn_regist = findViewById(R.id.btn_regist);
        et_mobile = findViewById(R.id.et_mobile);
        et_password = findViewById(R.id.et_password);
        btn_regist.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this,Main2Activity.class);
                startActivity(intent);

            }
        });
        btn_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String mobile = et_mobile.getText().toString().trim();
                String password = et_password.getText().toString().trim();
                //判断输入的内容是否为phone
                boolean b = isPhoneNumber(mobile);

                if (mobile.isEmpty() || password.isEmpty()) {
                    Toast.makeText(MainActivity.this, "用户名/密码不能为空", Toast.LENGTH_SHORT).show();
                } else if (!b) {
                    Toast.makeText(MainActivity.this, "手机号不合法", Toast.LENGTH_SHORT).show();
                } else if (password.length() < 6) {
                    Toast.makeText(MainActivity.this, "密码不能少于六位数", Toast.LENGTH_SHORT).show();
                } else {

                    login(mobile, password);
                }
            }
        });
    }
    private boolean isPhoneNumber(String phoneStr) {
        //定义电话格式的正则表达式
        String regex = "^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$";
        //设定查看模式
        Pattern p = Pattern.compile(regex);
        //判断Str是否匹配,返回匹配结果
        Matcher m = p.matcher(phoneStr);
        return m.find();
    }
    private void login(String mobile,String password){

        RequestParams params = new RequestParams("http://120.27.23.105/user/login");
        params.addQueryStringParameter("mobile",mobile);
        params.addQueryStringParameter("password",password);
        x.http().get(params, new Callback.CacheCallback<String>() {
            @Override
            public void onSuccess(String result) {
                //成功
                Gson gson = new Gson();
                LoginBean loginBean = gson.fromJson(result, LoginBean.class);
                Toast.makeText(MainActivity.this,loginBean.getMsg(), Toast.LENGTH_SHORT).show();
                if (loginBean.getCode().equals("0")){
                    Intent intent = new Intent(MainActivity.this, Main3Activity.class);
                    startActivity(intent);
                }
            }


            @Override
            public void onError(Throwable ex, boolean isOnCallback) {

            }

            @Override
            public void onCancelled(CancelledException cex) {

            }

            @Override
            public void onFinished() {

            }

            @Override
            public boolean onCache(String result) {
                return false;
            }
        });
    }
}
Main2Activity

package com.bawei.com.myapplication;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.gson.Gson;

import org.xutils.common.Callback;
import org.xutils.http.RequestParams;
import org.xutils.x;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main2Activity extends AppCompatActivity {

    private EditText et_mobile;
    private EditText et_password;
    private Button btn_regist;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        Intent intent = getIntent();
        et_mobile = findViewById(R.id.et_mobile);
        et_password = findViewById(R.id.et_password);
        btn_regist = findViewById(R.id.btn_regist);
        btn_regist.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String mobile = et_mobile.getText().toString().trim();
                String password = et_password.getText().toString().trim();
                //判断输入的内容是否为phone
                boolean b = isPhoneNumber(mobile);
                if (mobile.isEmpty() || password.isEmpty()) {
                    Toast.makeText(Main2Activity.this, "用户名/密码不能为空", Toast.LENGTH_SHORT).show();
                } else if (!b) {
                    Toast.makeText(Main2Activity.this, "手机号不合法", Toast.LENGTH_SHORT).show();
                } else if (password.length() < 6) {
                    Toast.makeText(Main2Activity.this, "密码不能少于六位数", Toast.LENGTH_SHORT).show();
                } else {
                    register(mobile, password);
                }
            }
        });
    }
    private boolean isPhoneNumber(String phoneStr) {
        //定义电话格式的正则表达式
        String regex = "^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$";
        //设定查看模式
        Pattern p = Pattern.compile(regex);
        //判断Str是否匹配,返回匹配结果
        Matcher m = p.matcher(phoneStr);
        return m.find();
    }
    private void register(String mobile,String password){
        RequestParams params = new RequestParams("http://120.27.23.105/user/reg");
        params.addQueryStringParameter("mobile",mobile);
        params.addQueryStringParameter("password",password);
        x.http().get(params, new Callback.CacheCallback<String>() {
            @Override
            public void onSuccess(String result) {
                //成功
                Gson gson = new Gson();
                RegistBean registBean = gson.fromJson(result, RegistBean.class);

                //如果注册成功就返回登录页面
                Toast.makeText(Main2Activity.this,registBean.getMsg(), Toast.LENGTH_SHORT).show();
                if (registBean.getCode().equals("0")){
                    finish();
                }
            }


            @Override
            public void onError(Throwable ex, boolean isOnCallback) {

            }

            @Override
            public void onCancelled(CancelledException cex) {

            }

            @Override
            public void onFinished() {

            }

            @Override
            public boolean onCache(String result) {
                return false;
            }
        });
    }
}
创建Application

package com.bawei.com.myapplication;

import android.app.Application;

import org.xutils.x;

/**
 * Created by Wangrx on 2017/10/31.
 */

public class RegistApplication extends Application{
    public void onCreate() {
        super.onCreate();
	x.Ext.init(this);
	x.Ext.setDebug(BuildConfig.DEBUG);
}}
activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:context="com.bawei.com.myapplication.MainActivity">

    <EditText
        android:id="@+id/et_mobile"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="64dp"
        android:hint="请输入手机号"
        android:inputType="number" />

    <EditText
        android:id="@+id/et_password"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/et_mobile"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="10dp"
        android:hint="请输入密码"
        android:inputType="textPassword" />
    <Button
        android:id="@+id/btn_login"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:text="登录"
        android:layout_below="@id/et_password"
        android:layout_marginLeft="70dp"
        />
    <Button
        android:id="@+id/btn_regist"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:text="注册"
        android:layout_below="@id/et_password"
        android:layout_toRightOf="@id/btn_login"
        />
</RelativeLayout>
activity_main2.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:context="com.bawei.com.myapplication.Main2Activity">
    <EditText
        android:id="@+id/et_mobile"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="64dp"
        android:hint="请输入手机号"
        android:inputType="number" />

    <EditText
        android:id="@+id/et_password"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/et_mobile"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="10dp"
        android:hint="请输入密码"
        android:inputType="textPassword" />
    <Button
        android:id="@+id/btn_regist"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:text="立即注册"
        android:textColor="@color/colorPrimary"
        android:layout_below="@id/et_password"
        android:layout_centerHorizontal="true"

        />
</RelativeLayout>
添加权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
添加依赖:

implementation 'com.google.code.gson:gson:2.8.2'
implementation 'org.xutils:xutils:3.5.0'

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值