IO实战篇:用户登录 | 带你学《Java语言高级特性》之七十八

简介: 本节将带领读者实战用户登录功能,通过输入指定的用户名和密码简单实现用户登录功能来进一步掌握IO相关的知识和其他基本知识。

上一篇:IO实战篇:奇偶数统计 | 带你学《Java语言高级特性》之七十七
本节将带领读者实战用户登录功能,通过输入指定的用户名和密码简单实现用户登录功能来进一步掌握IO相关的知识和其他基本知识。

【本节目标】
通过阅读本节内容,你将复习到String一些基础的操作,进一步掌握数据输入的方法,简单了解用户登录功能的基本原理和实现过程,以及程序开发过程中的代理思想。

用户登录

完成系统登录程序,从命令行输入用户名和密码,如果没有输入用户名和密码,则提示输入用户名和密码;如果输入了用户名但是没有输入密码,则提示用户输入密码,然后判断用户名是否是mldn,密码是否是hello,如果正确,则提示登录成功,如果错误,显示登录失败的信息,用户再次输入用户名和密码,连续3次输入错误后系统退出。
对于此时的程序发现可以将用户名和密码同时输入,也可以先输入用户名,而后输入密码,如果超过了3次就表示登录结束了。对于用户名和密码的使用可以采用“用户名/密码”的形式完成,如果发现没有“/”表示没有输入密码。
1、定义用户的操作接口

public interface IUserService {
    public boolean isExit();
    public boolean login(String name,String password);
}

2、定义操作接口的子类

import cn.mldn.demo.service.IUserService;
public class UserServiceImpl implements IUserService {
    private int count = 0;   //作为登录统计
    @Override
    public boolean isExit() {
        return this.count >= 3;  //执行登录退出的条件
    }
    @Override
    public boolean login(String name, String password) {
        this.count ++;
        return "mldn".equals(name) && "hello".equals(password);
    }
}

3、对于登录失败的检测处理操作,应该单独定义一个用户的代理操作类。

import cn.mldn.demo.service.IUserService;
public class UserServiceProxy implements IUserService {
    private IUserService userService ;
    public UserServiceProxy(IUserService userService) {
        this.userService = userService;
    }
    @Override
    public boolean login(String name, String password) {
        while(!this.isExit()) {  //不进行退出
            String inputData = inputUtil.getString("请输入登录信息:");
            if(inputData.contains("/")) {  //输入了用户名和密码
                String temp [] = inputData.split("/");  //数据拆分
                if(this.userService.login(temp[0], temp[1])) {  //登录认证
                    return true;  //循环结束了
                }else {
                    System.out.println("登录失败,错误的用户名或密码!");
                }
            }else {  //现在只有用户名
                String pwd = inputUtil.getString("请输入密码:");
                if(this.userService.login(inputData, pwd)) {  //登录认证
                    return true;  //循环结束了
                }else {
                    System.out.println("登录失败,错误的用户名或密码!");
                }
            }
        }
        return false;
    }
    @Override
    public boolean isExit() {
        return this.userService.isExit();
    }
}

4、修改工厂类定义

import cn.mldn.demo.service.IUserService;
import cn.mldn.demo.service.impl.UserServiceImpl;
import cn.mldn.demo.service.proxy.UserServiceProxy;
public class Factory{
    private Factory() {}
    public static IUserService getInstance() {
        return new UserServiceProxy();
    }
}

5、定义测试类处理:

public class IOCaseDemo {
    public static void main(String[] args) {
        System.out.println(Factory.getInstance.login(null, null));
    }
}

执行结果:

image.png
image.png
image.png

真实业务只实现核心功能,辅助逻辑处理交给代理控制。

想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学

下一篇:IO实战篇:投票选举 | 带你学《Java语言高级特性》之七十九
更多Java面向对象编程文章查看此处

相关文章
|
Java 关系型数据库 数据库
Java 项目实战教程从基础到进阶实战案例分析详解
本文介绍了多个Java项目实战案例,涵盖企业级管理系统、电商平台、在线书店及新手小项目,结合Spring Boot、Spring Cloud、MyBatis等主流技术,通过实际应用场景帮助开发者掌握Java项目开发的核心技能,适合从基础到进阶的学习与实践。
1620 4
|
缓存 前端开发 Java
基于最新 Java 技术栈的在线任务管理系统开发实战详解
本项目基于最新Java技术栈开发在线任务管理系统,涵盖任务创建、分配、跟踪、统计等功能。采用Spring Boot 3.2.x、React 18、PostgreSQL 16等主流技术,详解项目架构设计、核心功能实现及部署流程,助力掌握现代Java全栈开发技能。
622 6
|
Java API Maven
2025 Java 零基础到实战最新技术实操全攻略与学习指南
本教程涵盖Java从零基础到实战的全流程,基于2025年最新技术栈,包括JDK 21、IntelliJ IDEA 2025.1、Spring Boot 3.x、Maven 4及Docker容器化部署,帮助开发者快速掌握现代Java开发技能。
1905 1
|
11月前
|
安全 Java 开发者
告别NullPointerException:Java Optional实战指南
告别NullPointerException:Java Optional实战指南
408 119
|
12月前
|
存储 前端开发 Java
【JAVA】Java 项目实战之 Java Web 在线商城项目开发实战指南
本文介绍基于Java Web的在线商城技术方案与实现,涵盖三层架构设计、MySQL数据库建模及核心功能开发。通过Spring MVC + MyBatis + Thymeleaf实现商品展示、购物车等模块,提供完整代码示例,助力掌握Java Web项目实战技能。(238字)
1311 0
|
12月前
|
Java 开发者
Java并发编程:CountDownLatch实战解析
Java并发编程:CountDownLatch实战解析
665 100
|
数据采集 JSON Java
Java爬虫获取1688店铺所有商品接口数据实战指南
本文介绍如何使用Java爬虫技术高效获取1688店铺商品信息,涵盖环境搭建、API调用、签名生成及数据抓取全流程,并附完整代码示例,助力市场分析与选品决策。
|
消息中间件 Java 数据库
Java 基于 DDD 分层架构实战从基础到精通最新实操全流程指南
本文详解基于Java的领域驱动设计(DDD)分层架构实战,结合Spring Boot 3.x、Spring Data JPA 3.x等最新技术栈,通过电商订单系统案例展示如何构建清晰、可维护的微服务架构。内容涵盖项目结构设计、各层实现细节及关键技术点,助力开发者掌握DDD在复杂业务系统中的应用。
2093 0
|
12月前
|
人工智能 Java API
Java AI智能体实战:使用LangChain4j构建能使用工具的AI助手
随着AI技术的发展,AI智能体(Agent)能够通过使用工具来执行复杂任务,从而大幅扩展其能力边界。本文介绍如何在Java中使用LangChain4j框架构建一个能够使用外部工具的AI智能体。我们将通过一个具体示例——一个能获取天气信息和执行数学计算的AI助手,详细讲解如何定义工具、创建智能体并处理执行流程。本文包含完整的代码示例和架构说明,帮助Java开发者快速上手AI智能体的开发。
3650 8
|
12月前
|
人工智能 Java API
Java与大模型集成实战:构建智能Java应用的新范式
随着大型语言模型(LLM)的API化,将其强大的自然语言处理能力集成到现有Java应用中已成为提升应用智能水平的关键路径。本文旨在为Java开发者提供一份实用的集成指南。我们将深入探讨如何使用Spring Boot 3框架,通过HTTP客户端与OpenAI GPT(或兼容API)进行高效、安全的交互。内容涵盖项目依赖配置、异步非阻塞的API调用、请求与响应的结构化处理、异常管理以及一些面向生产环境的最佳实践,并附带完整的代码示例,助您快速将AI能力融入Java生态。
1644 12