Heim >Datenbank >MySQL-Tutorial >Java业务逻辑结合MySQL实现登录注册(XMPP协议的运用)

Java业务逻辑结合MySQL实现登录注册(XMPP协议的运用)

WBOY
WBOYOriginal
2016-06-07 14:50:391523Durchsuche

XMPP协议: 通信协议是一种约定的规则,XMPP也无外乎是一种接口规则。简单的说XMPP协议是一种标记式的文本串。 举例: msgsendhxjava/sendcontenthelloworld/content/msg 学习了XMPP协议之后,就实现C/S的登录注册操作,这一次的登录操作就不像以前那样用一


XMPP协议:


通信协议是一种约定的规则,XMPP也无外乎是一种接口规则。简单的说XMPP协议是一种标记格式的文本串。


举例:

hxjavahelloworld


学习了XMPP协议之后,就实现C/S的登录注册操作,这一次的登录操作就不像以前那样用一些Map容器存储数据了。


存储数据要用数据库,这样不仅便于数据管理维护,而且数据不容易丢失,建立Map容器存储的话,程序关闭数据就消失了。


我自己编写C/S登录程序应用的到XMPP协议是:








因为仅仅是做练习,所以编写的代码就比较的简陋,数据库存储的信息只有5个,用户信息:

id,name,password,tellphone,email


建立表格:


我用的是16.5版本的powerDesigner



建立表格之后,以sql的语言格式导出,然后再用Navicat for MySQL软件运行SQL语言,然后就得到了一个空表。




写java的程序过程不多说,等下直接把代码发出来再做解释。

先看过程


界面与代码测试:


注册界面,当我填完注册信息按下注册按钮的时候,连接上服务器,然后发送一个XMPP协议的字符串给服务器,服务器解析,然后添加到数据库,EOF异常是关闭了连接的原因。




注册了之后表里有两个账号了,测试登录系统:

输入一个正确的账号密码:



输入第二个正确的账号密码:



第三次输入一个错误的用户名和密码:



登录注册系统的总结:


这个项目的测试完成了,基本功能已经全部实现了,体现了XMPP协议的约定与解析,实现了dao层与Java业务逻辑的结合,用数据库里面的数据来验证用户,使程序更可靠,维护性更强。



代码:

服务器核心的代码是socket的连接与服务,之间有XMPP协议要解析,因为只是要测试注册于登录功能,所以我就不创建太多的类去封装了,验证登录和注册添加的代码只是封装在方法中去,自定义一个客户端线程类SocketThread,其中的run方法用死循环来执行登录或者注册方法:


run方法


public void run() {
		try{
			String Msg = null;
			while(true){
				Msg = ois.readUTF();
				String type = this.getType(Msg, "type");
				if("createUser".equals(type)){
					this.CreatUser(Msg);
				}else if("loginUser".equals(type)){
					this.LoginUser(Msg);
				}
				Msg = null;
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}


解析XMPP的方法:

public String getType(String str,String type){//处理字符串
		System.out.println("已经进入了getType方法,获取的Msg为:   "+str);
		int beginIndex = str.indexOf("");
		int endIndex = str.indexOf(""+type+">");
		String value = str.substring(beginIndex+2+type.length(), endIndex);
		System.out.println("获取的value是:   "+value);
		return value;
	}

注册新用户的方法:

public void CreatUser(String Msg){
		System.out.println("服务器已经进入了CreatUser方法...");
		String name = this.getType(Msg, "name");
		String password = this.getType(Msg, "psw");
		String tellphone = this.getType(Msg, "tel");
		String email = this.getType(Msg, "email");
		System.out.println(name+"  "+password+"  "+tellphone+"  "+email);
		UserDatapojo udp = new UserDatapojo(2,name,password,tellphone,email);
		try {
			new UserDatadaoimpl().insert(udp);
			System.out.println("数据已经存进数据库...");
			oos.writeUTF("用户注册成功...");
			oos.flush();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

登录的方法:

public void LoginUser(String Msg)throws Exception{
		String name = this.getType(Msg, "name");
		String password = this.getType(Msg, "psw");
		boolean s = new UserDatadaoimpl().query(name,password);
		if(s){
			System.out.println("登录成功...");
			oos.writeUTF("登录成功...");
			oos.flush();
			return ;
		}
		System.out.println("登录失败...");
		oos.writeUTF("登录失败...");
		oos.flush();
	}

客户端的注册方法:

public void actionPerformed(ActionEvent e) {
		if("注册".equals(e.getActionCommand())){
			String type = "<type>createUser</type>";
			String name = "<name>"+nameField.getText()+"</name>";
			String psw = "<psw>"+pswField.getText()+"</psw>";
			String tel = "<tel>"+telField.getText()+"</tel>";
			String email = "<email>"+mailField.getText()+"</email>";
			String CreatUserMsg = "<msg>"+type+name+psw+tel+email+"</msg>";
			System.out.println(CreatUserMsg);
			Client socket = Client.getInstance();
			socket.getConnection();
			System.out.println("客户端已连接上服务器...");
			try {
				socket.getOos().writeUTF(CreatUserMsg);
				socket.getOos().flush();
				System.out.println("已发送XMPP协议给服务器...");
				System.out.println(socket.getOis().readUTF());;
				socket.closeConnection();
			} catch (Exception e1) {
				e1.printStackTrace();
			}
			System.out.println("执行了注册功能..");
		}
	}

客户端的登录方法:

if("登录".equals(e.getActionCommand())){
			String type = "<type>loginUser</type>";
			String name = "<name>"+userField.getText()+"</name>";
			String psw = "<psw>"+pswField.getText()+"</psw>";
			String CreatUserMsg = "<msg>"+type+name+psw+"</msg>";
			System.out.println(CreatUserMsg);
			Client socket = Client.getInstance();
			socket.getConnection();
			System.out.println("客户端已连接上服务器...");
			try {
				socket.getOos().writeUTF(CreatUserMsg);
				socket.getOos().flush();
				System.out.println("已发送XMPP协议给服务器...");
				System.out.println(socket.getOis().readUTF());;
				socket.closeConnection();
			} catch (Exception e1) {
				e1.printStackTrace();
			}
			System.out.println("执行了登录功能..");
		}

想更多了解XMPP协议请看:

XMPP的ppt


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn