做一个小登录接口方法,让用户传入用户名,密码,就可以知道登录的结果信息,并以接口监听的方式控制。


先看客户端执行效果:

输入正确:

输入错误:

模拟客户端使用登录小框架

package com.demo1.client;

import java.util.Scanner;

import com.demo1.login.Login;
import com.demo1.login.LoginInfo;
import com.demo1.login.LoginState; /**
* 模拟客户端程序
* @author Liudeli
*/
public class Client { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入用户名 input userName...");
String userName = scanner.nextLine(); System.out.println("请输入密码 input userPwd...");
String userPwd = scanner.nextLine(); Login.getInstance()
.setUserName(userName) // 设置用户名
.setUserPwd(userPwd) // // 设置密码
.setOnLoginState(new LoginState() { // 登录状态 public void onLoginSuccess(int loginState) {
System.out.println("登录成功 login success ! " + loginState);
}
public void onLoginFail(int loginState) {
System.out.println("登录失败 login fail ! " + loginState);
}
})
.setOnLoginInfo(new LoginInfo() { // 登录的信息 public void onLoginUserInfo(String userName, String userPwd, String loginTime) {
System.out.println("登录具体信息 userName:" + userName +
" userPwd:" + userPwd + " loginTime:" + loginTime);
}
})
.doLoginCommit();// 最后提交登录命令即可
}
}

Login的具体实现:

package com.demo1.db;

/**
* 此类用于模拟数据表(Database)
* @author Liudeli
*/
public class UserDB { /**
* 模拟用户输入的用户名(本来应该存入数据库中)
*/
public static final String USER_NAME = "liudeli"; /**
* 模拟用户输入的密码(本来应该存入数据库中)
*/
public static final String USER_PWD = "123"; }
package com.demo1.login;

/**
* 此接口为登录信息接口
* @author Liudeli
*/
public interface LoginInfo { /**
* 次方法为登录信息的方法
* @param userName 用户名称
* @param userPwd 用户密码
* @param loginTime 登录时间
*/
public void onLoginUserInfo(String userName, String userPwd, String loginTime); }
package com.demo1.login;

/**
* 此接口为登录状态接口
* @author Liudeli
*/
public interface LoginState { /**
* 登录成功
* @param loginState 传入登录状态
*/
public void onLoginSuccess(int loginState); /**
* 登录失败
* @param loginState 传入登陆状态
*/
public void onLoginFail(int loginState); }
package com.demo1.login;

/**
* 定义登陆接口标准
* @author Liudeli
*/
public interface ILogin { /**
* 设置用户名
* @param userName
* @return 返回当前对象
*/
public Login setUserName(String userName); /**
* 设置用户密码
* @param userPwd
* @return 返回当前对象
*/
public Login setUserPwd(String userPwd); /**
* 设置登录状态
* @param loginState 传入登录状态的实现
* @return 返回当前对象
*/
public Login setOnLoginState(LoginState loginState); /**
* 设置登录信息
* @param loginInfo 传入登录信息的实现
* @return 返回当前对象
*/
public Login setOnLoginInfo(LoginInfo loginInfo); /**
* 做最后登录的提交操作(必须为最后调用)
*/
public void doLoginCommit(); }
package com.demo1.login;

import com.demo1.db.UserDB;

/**
* 具体登录业务实现类
* @author Liudeli
*/
public class Login implements ILogin{ public static Login login = null; public static Login getInstance() {
if (null == login) {
synchronized (Login.class) {
login = new Login();
}
}
return login;
} private String userName;
private String userPwd; public Login setUserName(String userName) {
this.userName = userName;
return this;
} public Login setUserPwd(String userPwd) {
this.userPwd = userPwd;
return this;
} private LoginState loginState;
private LoginInfo loginInfo; public Login setOnLoginState(LoginState loginState) {
this.loginState = loginState;
return this;
} public Login setOnLoginInfo(LoginInfo loginInfo) {
this.loginInfo = loginInfo;
return this;
} /**
* 具体登录业务
*/
public void doLoginCommit() { if (UserDB.USER_NAME.equals(userName) && UserDB.USER_PWD.equals(userPwd)) {
loginState.onLoginSuccess(1);
} else {
loginState.onLoginFail(0);
}
setOnLoginState(loginState); loginInfo.onLoginUserInfo(userName, userPwd, "2016年12月22日 16:26:10");
setOnLoginInfo(loginInfo);
} }

Project结构:


以上其实就是使用了一下接口的知识完成一下回调工作,只需在客户端调用Login对象即可。


谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,

刘德利CSDN博客, http://blog.csdn.net/u011967006

JavaLogin小框架制作【精品博客】的更多相关文章

  1. 《全栈营销之如何制作个人博客》之一:用什么开发语言和CMS系统

    现在的互联网,已经不再是初级互联时代,是需要全方位营销,自建粉丝池的时代,云码素材从提出全栈营销,到实践分析,总结出全栈营销第一步,先制作一个个人博客是最好的开始.今天开始就跟我一起学习如何制作一个精 ...

  2. python random模块 - 小驹的专栏 - 博客频道 - CSDN.NET

    python random模块 - 小驹的专栏 - 博客频道 - CSDN.NET python random模块 分类: python 2011-11-15 15:31 6037人阅读 评论(2) ...

  3. webapi框架搭建系列博客

    webapi框架搭建系列博客 webapi框架搭建-创建项目(一) webapi框架搭建-创建项目(二)-以iis为部署环境的配置 webapi框架搭建-创建项目(三)-webapi owin web ...

  4. 微信小程序--简约风博客小程序(基于云开发 - 全开源)

    微信小程序--简约风博客小程序(基于云开发 - 全开源) 项目启动纯属突发奇想,想看看博客小程序,例如wehalo博客小程序,但是感觉自建平台还要浪费自己的服务器算力,还没有访问量,省省吧. 本着白嫖 ...

  5. JavaOperator小框架制作【精品博客】

    以下是运算小框架的制作过程,以及核心代码,完成(计算,监听,回馈等): package com.demo2.operator; /** * 运算标准接口 * @author Liudeli */ pu ...

  6. 《全栈营销之如何制作个人博客》之二:php环境安装及个人博客后台搭建 让你的博客跑起来

    上一节我们讲了个人博客用什么开发语言,用什么CMS系统,从这一节我们就开始真正的干货,这一节我们讨论一下PHP环境的安装,及个人博客后台的搭建,让你的博客在正常的PHP环境中运行起来,你就可以进行后台 ...

  7. ASP.NET Core微服务+Tabler前端框架搭建个人博客1--开始前想说的话

    写在前面 本人为在读研究生,特别喜欢.NET,觉得.NET的编程方式.语法都特别友好,学习.NET Core已经差不多有一年半了,从一开始不知道如何入门到现在终于可以编写一些小的应用程序,想一想还是非 ...

  8. 【实战】如何通过html+css+mysql+php来快速的制作动态网页(以制作一个博客网站为列)

    一.开发环境的搭建 (1)apache+php+mysql环境搭建 因为要用apache来做服务器,mysql作为数据库来存储数据,php来写代码以此实现网页与数据库的交互数据,所以需要下载上述软件, ...

  9. 《PHP制作个人博客》之四:分类添加及前端导航数据用php动态调取

    大家好,今天我们接着上一节的全栈营销个人博客制作,上一节我们把博客的模板给加载运行起来.今天我们主要讲解后台模板分类的添加,后台导航的添加,及前台导航的动态调用.一个好的博客,导航很重要,导航就像你网 ...

随机推荐

  1. css3 fileter始终效果 图片渲染

    http://www.w3cplus.com/css3/ten-effects-with-css3-filter

  2. jsp 不显示换行 Eclipse复制一行快捷键

    jsp通过out.println();不能换行.html中需要标签<br/>才可以 Eclipse 复制整行代码移动:Ctrl+Alt+↑/↓.但是跟系统屏幕上下切换冲突,可以选择,在电脑 ...

  3. IntelliJ IDEA SVN

    第一步:下载svn的客户端,通俗一点来说就是小乌龟啦!去电脑管理的软件管理里面可以直接下载,方便迅速 下载之后直接安装就好了,但是要注意这里的这个文件也要安装上,默认是不安装的,如果不安装,svn中的 ...

  4. DES_3DES_AES_IDES_RSA密码算法比较

    对称加密算法(也叫共享密钥) 类型 定义:发送接收使用相同的对称密钥 密钥 长度 分组长度 循环次数 安全性 DES 数据加密标准,速度较快,适用于加密大量数据的场合: 56 64 16 依赖密钥受穷 ...

  5. ORACLE 对一个表进行循环查数,再根据MO供给数量写入另一个新表

    一. 加工处理后要变成如下效果 create table test1 (sonum varchar2(10),lineid varchar2(10),qty int ,qty2 int ,remark ...

  6. Python repr() 函数

    Python repr() 函数  Python 内置函数 描述 repr() 函数将对象转化为供解释器读取的形式. 语法 以下是 repr() 方法的语法: repr(object) 参数 obje ...

  7. phpStudy1——PHP文件获取html提交的参数

    示例代码: submit.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...

  8. [leetcode]29. Divide Two Integers 两整数相除

    Given two integers dividend and divisor, divide two integers without using multiplication, division ...

  9. [leetcode]112. Path Sum路径和(是否有路径)

    Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all ...

  10. 在iframe框架中全屏不好使的原因

    遇到的问题:我是在iframe框架中添加了一个插件在360和火狐中不好使,将allowfullscreen="true" 属性配置好就没问题了: 可能出现的原因:将allowful ...