freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于java語言的網(wǎng)絡(luò)聊天系統(tǒng)開發(fā)與實現(xiàn)畢業(yè)論文(編輯修改稿)

2024-12-18 15:30 本頁面
 

【文章內(nèi)容簡介】 對來獲取指定的虛擬服務(wù)器,然后再進行后續(xù)的操作。 該類實現(xiàn)了 Runnable 接口,該接口是將線程所運行的程序代碼提取出來 封裝 成為 一個對象 。Runnable 對象可以用來創(chuàng)建線程。 private User user = null。//虛擬服務(wù)器所服務(wù)的用戶 @Override public void run() { Boolean b = true。//線程結(jié)束控制符 //接收 來自客戶端封裝的消息對象 Message msg = null。 while(b) { try { msg = (Message)()。//客戶端 Client發(fā)送過來的消息對象 //根據(jù)消息的類型進行不同的處理 if(() == 10) {//登錄驗證操作 Message returnMsg = new Login().validate(())。//登錄驗證 if(() == 13) { 商丘師范學(xué) 院 2020 屆 本科畢業(yè)論文(設(shè)計) 7 //驗證成功,則將該虛擬服務(wù)器添加到 主 服務(wù)器管理 的 虛擬服務(wù)器 列表 ().put(().getAccount(), this)。 } send(returnMsg)。 }else if(() == 20) {//轉(zhuǎn)發(fā)聊天消息 ().get(().getAccount()).send(msg)。 send(msg)。 }else if(() == 30) {//退出操作 ().remove(())。 ().interrupt()。//結(jié)束當(dāng)前線程 }else if(() == 40) {//邀請好友進行游戲 ().get(().getAccount()).send(msg)。 }else if(() == 41) {//好友同意游戲邀請,雙方開始游戲 Message m = new Message()。 (42)。 (())。 ().get(().getAccount()).send(m)。 (())。 send(m)。 }else if(() == 43) {//拒絕好友的游戲邀請 ().get(().getAccount()).send(msg)。 }else if(() == 44) {//由 獲勝方通知失敗方,勝負情況 ().get(().getAccount()).send(msg)。 } } catch (Exception e){ //異常處理 b = false。 //如果出現(xiàn)異常則修改線程終止符,使線程結(jié)束。 } } } 從源碼中可以看出,虛擬服務(wù)器主要的工作,就是解析消息的類型,并根據(jù)消息的類型進行相應(yīng)的處理。例如在消息的類型為 10時,虛擬服務(wù)器就調(diào)用登錄驗證 Logon來對用戶的信息進行驗證,根據(jù)登錄驗證的驗證結(jié)果,再返回相應(yīng)的消息 給客戶端的 Client。 登錄驗證 Logon private static UserDao userDao = new UserDao()。//調(diào)用底層的 用戶數(shù)據(jù) 訪問功能 public Message validate(User user) { Message msg = new Message()。//返回驗證的結(jié)果信息 User u = (())。//賬戶存在 if(u == null) {//賬戶不存在 (11)。 (賬戶不存在! )。 }else{//該賬戶存在 u = ((), ())。 if(u == null){ //密碼不對 (12)。 (密碼不對! )。 }else{//賬戶、密碼正確 if(().get(()) == null) {//可以登陸 商丘師范學(xué) 院 2020 屆 本科畢業(yè)論文(設(shè)計) 8 (13)。(u)。 }else{//已登錄 (14)。 (不能重復(fù)登錄! )。 } } } return msg。 }} 登錄驗證,主要分為三步 : ,即該賬號是否存在。只有賬號存在才會進行后續(xù)的驗證。 ,再驗證密碼是否與賬號匹配,如果匹配成功,則返回該用戶的信息。 ,對于已登錄的用戶則不再給予登錄操作 。 Hibernate 配置文件 訪問數(shù)據(jù)的操作 要借助 Hibernate 框架來完成。 使用 了 Hibernate,我們就可以不用再寫很復(fù)雜繁瑣的 JDBC 語句去 建立與 數(shù)據(jù)庫的連接,而將這些操作全都交給 Hibernate 來完成。 Hibernate 的配置文件如下 : sessionfactory !—在控制臺打印出 執(zhí)行 數(shù)據(jù)訪問 的 SQL語句 property name=show_sqltrue/property !—連接 數(shù)據(jù)庫所使用的驅(qū)動程序 property name=/property ! 連接數(shù)據(jù)庫的地址 property name=jdbc: property name=root/property property name=846255/property ! 數(shù)據(jù)庫的方言,該方言用于對數(shù)據(jù)庫 的 操作進行解釋 property name=/property !—開啟數(shù)據(jù)庫定義語言,用于自動創(chuàng)建表結(jié)構(gòu) property name=create/property ! 映射的實體類 mapping class = / mapping class = / /sessionfactory/hibernateconfiguration Hibernate 會話工廠 在完成了配置之后,為了可以使用它來進行數(shù)據(jù)的操作 ,我們 需要先創(chuàng)建會話工廠 , 因為數(shù)據(jù)的操作是基于會話的。會話工廠的代碼如下: public class Hibernate { private static SessionFactory sf = null。//會話工廠 private static Session session = null。 static { Configuration cf = new Configuration()。 ()。//在 默認路徑下 , 讀取配置文件 。 ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(()).build()。 商丘師范學(xué) 院 2020 屆 本科畢業(yè)論文(設(shè)計) 9 sf = (sr)。 session = ()。 } private Hibernate() {} public static SessionFactory getSessionFactory() {return sf。} public static Session getSession() {return session。} } 這里的會話工廠 SessionFactory 使用的是 Java 設(shè)計模式中 的單例模式,唯一的 SessionFactory 對象能夠保證數(shù)據(jù)操作的可控性,讓我們能夠 利用 事務(wù)有效的 保證 被操作數(shù)據(jù)的一致性。 在配置文件中羅列出了所使用的實體類, 通過 在實體類中 使用 相應(yīng)的注解標明, Hibernate 就可以將一個實體類映射為一張表,而實體類的屬性則將映射為表 中 的字段。實體類就相當(dāng)于一張表,為了操縱 它 ,我為實體類 分別 寫了一個操作 類 。利用會話 Session 來實現(xiàn)數(shù)據(jù)的增刪改查。 數(shù)據(jù)操作類 UserDao public class UserDao { private Session session = null。 public UserDao() {session = ()。}//獲取會話 public User findByAccount(Integer account) {//根據(jù)賬號來查詢用戶 Criteria c = ()。 ((account, account))。 User user = (User)()。 return user。 } //根據(jù)賬號和密碼來查詢用戶 public User findByAccountAndPassword(Integer account, String password) { Criteria c = ()。 ((account, account))。 ((password, password))。 User user = (User)()。 return user。 } //查詢?nèi)坑脩? public ListUser queryAll() { Criteria c = ()。 @SuppressWarnings(unchecked) ListUser users = ()。 return users。 } } 商丘師范學(xué) 院 2020 屆 本科畢業(yè)論文(設(shè)計) 10 數(shù)據(jù)操作類 CrowdDao public class CrowdDao {//群組數(shù)據(jù)訪問層 private Session session = null。 public CrowdDao() {session = ()。} public void save(Crowd crowd) {//保存群組 Transaction transaction = ()。 (crowd)。 ()。 } public void update(Crowd crowd) {//更新群組 Transaction transaction = ()。 (crowd)。 ()。 } public void delete(Crowd crowd) {//刪除群組 Transaction transaction = ()。 (crowd)。 ()。 } } 以上兩個數(shù)據(jù)訪問類都使用了基于 Criteria 的查詢 方式
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1