JavaLogin小框架制作【精品博客】
做一个小登录接口方法,让用户传入用户名,密码,就可以知道登录的结果信息,并以接口监听的方式控制。
先看客户端执行效果:
输入正确:
输入错误:
模拟客户端使用登录小框架:
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小框架制作【精品博客】的更多相关文章
- 《全栈营销之如何制作个人博客》之一:用什么开发语言和CMS系统
现在的互联网,已经不再是初级互联时代,是需要全方位营销,自建粉丝池的时代,云码素材从提出全栈营销,到实践分析,总结出全栈营销第一步,先制作一个个人博客是最好的开始.今天开始就跟我一起学习如何制作一个精 ...
- python random模块 - 小驹的专栏 - 博客频道 - CSDN.NET
python random模块 - 小驹的专栏 - 博客频道 - CSDN.NET python random模块 分类: python 2011-11-15 15:31 6037人阅读 评论(2) ...
- webapi框架搭建系列博客
webapi框架搭建系列博客 webapi框架搭建-创建项目(一) webapi框架搭建-创建项目(二)-以iis为部署环境的配置 webapi框架搭建-创建项目(三)-webapi owin web ...
- 微信小程序--简约风博客小程序(基于云开发 - 全开源)
微信小程序--简约风博客小程序(基于云开发 - 全开源) 项目启动纯属突发奇想,想看看博客小程序,例如wehalo博客小程序,但是感觉自建平台还要浪费自己的服务器算力,还没有访问量,省省吧. 本着白嫖 ...
- JavaOperator小框架制作【精品博客】
以下是运算小框架的制作过程,以及核心代码,完成(计算,监听,回馈等): package com.demo2.operator; /** * 运算标准接口 * @author Liudeli */ pu ...
- 《全栈营销之如何制作个人博客》之二:php环境安装及个人博客后台搭建 让你的博客跑起来
上一节我们讲了个人博客用什么开发语言,用什么CMS系统,从这一节我们就开始真正的干货,这一节我们讨论一下PHP环境的安装,及个人博客后台的搭建,让你的博客在正常的PHP环境中运行起来,你就可以进行后台 ...
- ASP.NET Core微服务+Tabler前端框架搭建个人博客1--开始前想说的话
写在前面 本人为在读研究生,特别喜欢.NET,觉得.NET的编程方式.语法都特别友好,学习.NET Core已经差不多有一年半了,从一开始不知道如何入门到现在终于可以编写一些小的应用程序,想一想还是非 ...
- 【实战】如何通过html+css+mysql+php来快速的制作动态网页(以制作一个博客网站为列)
一.开发环境的搭建 (1)apache+php+mysql环境搭建 因为要用apache来做服务器,mysql作为数据库来存储数据,php来写代码以此实现网页与数据库的交互数据,所以需要下载上述软件, ...
- 《PHP制作个人博客》之四:分类添加及前端导航数据用php动态调取
大家好,今天我们接着上一节的全栈营销个人博客制作,上一节我们把博客的模板给加载运行起来.今天我们主要讲解后台模板分类的添加,后台导航的添加,及前台导航的动态调用.一个好的博客,导航很重要,导航就像你网 ...
随机推荐
- Linux就业技术指导(五):Linux运维核心管理命令详解
一,Linux核心进程管理命令 1.1 ps:查看进程 1.1.1 命令解释 功能说明 ps命令用于列出执行ps命令的那个时刻的进程快照,就像用手机给进程照了一张照片.如果想要动态地显示进程,就需要使 ...
- 序列下载及处理之seqinr包
缺点:需要联网,经常出错,不是操作问题而是因为网络问题 安装 if("seqinr" %in% rownames(installed.packages()) == FALSE) { ...
- hdoj1176 免费馅饼(dp 数塔)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1176 思路: 这道题不复杂,很明显是个dp题,数据比较大,搜索应该会超时,想到如何初始化,注意细节就差 ...
- poj1088-滑雪 【dfs 记忆化搜索】
http://poj.org/problem?id=1088 滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 79806 ...
- oracle在centos6.5安装
说明 很多操作是默认,具体定制另说. 安装 参考http://www.linuxidc.com/Linux/2014-02/97374p4.htm 这篇是上面那篇的整合版:http://www.cnb ...
- 1-QT-文件操作
Qt文本文件的读写操作 Qt文件操作详解(创建.写入.删除.INI.XML文件等 二进制文件的读写文件可以使用QFile类.QStream文本文件的读写建议使用QTextStream类,它操作文件更加 ...
- Java中的NIO及IO
1.概述 Java NIO(New IO) 是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API.NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同, ...
- mysql5.5以上开启慢查询
在my.ini配置文件中添加: [mysqld] #开启慢查询 slow_query_log = on #慢查询时间 long_query_time = 0.5 #记录没有使用索引的查询 log_qu ...
- BZOJ 1211[HNOI2004]树的计数 - prufer数列
描述 一个有n个结点的树,设它的结点分别为v1, v2, …, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵.给定n,d1, d2, …, dn,编程需要输出满足d(vi) ...
- Spring.NET学习笔记6——依赖注入(应用篇)
1. 谈到高级语言编程,我们就会联想到设计模式:谈到设计模式,我们就会说道怎么样解耦合.而Spring.NET的IoC容器其中的一种用途就是解耦合,其最经典的应用就是:依赖注入(Dependeny I ...