Java商務邏輯結合MySQL實現登入註冊(XMPP協議的運用)

來源:互聯網
上載者:User

標籤:


XMPP協議:


通訊協定是一種約定的規則,XMPP也無外乎是一種介面規則。簡單的說XMPP協議是一種標記格式的文本串。


舉例:

<msg><send>hxjava</send><content>helloworld</content></msg>


學習了XMPP協議之後,就實現C/S的登入註冊操作,這一次的登入操作就不像以前那樣用一些Map容器儲存資料了。


儲存資料要用資料庫,這樣不僅便於資料管理維護,而且資料不容易丟失,建立Map容器儲存的話,程式關閉資料就消失了。


我自己編寫C/S登入程式應用的到XMPP協議是:

<msg>
<name></name>
<psw></psw>
<tel></tel>
<email></email>
</msg>


因為僅僅是做練習,所以編寫的代碼就比較的簡陋,資料庫儲存的資訊只有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("<"+type+">");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


Java商務邏輯結合MySQL實現登入註冊(XMPP協議的運用)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.