[Android開發]- MVC的架構實現登錄模塊-2

本系列博客主要展示一下,在C-S(Client - Server)系統開發當中,如何使用MVC的架構來實現安卓端的一個登錄驗證的模塊,包括支撐客戶端驗證的服務器和數據庫的開發。如果你能有基本的數據庫開發,WEB開發,和安卓開發的知識,那么理解起來會更加容易一些。

本文主要從下面幾點展開:

  1. 服務器端的架構
  2. 服務器端的開發
  3. 總結

下文當中使用到的資源連接:
鏈接: https://pan.baidu.com/s/1hrS1i76 密碼: 6gyj


一、 服務器端的架構



前面說到,服務器主要充當控制器(Controller),但是并不完全是,它還有一些其它的作用!看下圖2-1,服務器端的架構:

圖 2-1 服務器端的架構

服務器各個層的作用:

  • Java 類:就是對應數據庫當中的所有表的Java 類,比如我們數據庫當中的user表將會被映射成為Java當中的一個類User,其中有屬性id,name,password三個屬性;
  • DAO 層(Database Access Object):數據庫訪問層,每個Dao類對應數據庫中的某個表的增刪查改操作;這里的增刪查改也就相當于對上面的Java類的對象進行增刪查改了,稍后會講到為什么;
  • Service層:服務層,在服務器的業務邏輯當中,比如登錄驗證的這個功能 validateUserAccount() 就是由服務層提供的,在實現這個功能時,我們就必須使用到UserDao數據庫訪問類對User表中的數據進行查詢以便驗證賬戶的合法性;
  • Servlet 層:servlet層,和客戶端(Client)進行數據交互的一層,例如:客戶端發送了賬號密碼給服務器的servlet,servlet調用的Service層中提供的validUserAccount()方法對賬戶進行了驗證,驗證的結果也就是由servlet返回給客戶端。

在服務器當中,我們用到了兩個開源框架Hibernate 和 Spring;

Hibernate是用來數據庫關系和Java類映射的一個框架,也就是將數據庫的表映射到Java當中的類,數據庫表當中每一條記錄都被映射成了Java當中類的對象,使得我們可以操作Java對象來操作數據庫表當中的一條記錄,增加了代碼的可讀性和軟件的可擴展性。

Spring主要是對javaBean的生命周期進行管理,比如剛剛在上面舉到的例子,Service層實現validateUserAccount()的方法中要使用到UserDao類,傳統的方法就是在Service類中new 一個UserDao對象,然后在調用其中的方法;但是如果使用了Spring框架,就不需要new UserDao對象,可以采用Ioc注入的方式,配置xml文件來使用UserDao類的對象。這個時候UserDao的對象的創建和銷毀這些都交給Spring去幫我們做了。(如果你現在對Spring 和 Hibernate還不是太了解,沒有關系,按照下面的步驟一步一步往下做,整個過程結束之后,相信你對它們肯定會有一個初步的了解)



二、 服務器端的開發



說明:此步驟是在你已經安裝好了Eclipse,配置好了Tomcat 和數據庫Mysql的基礎之上的。
step 1: 在Eclipse中創建一個 Dynamic Web Project 如下圖 2-2:
new--> project 選擇 Web-->Dynamic Web Project,輸入項目名稱

圖 2-2 創建動態web 工程

web工程的結構圖 2-3:


圖 2-3 web工程結構



step 2: 把工程的包結構給創建出來,創建后的結果如下圖2-4:
創建了 javabean,dao,service,servlet四個包,分別代替我們上面提到的服務器的四層,然后把Spring和Hibernate還有 連接MySql數據的第三方jar包(在資源的 jar包文件夾中)拷貝到 WebContent ---> WEB-INF ---> lib文件夾中,這一步就完成了。

圖 2-4 安卓包結構的創建

step 3: 在**org.demo.login.javabean **包中實現User類 以及完成User類和數據庫中user表的映射 hbm.xml 文件。User類代碼如圖 2-5所示,User.hbm.xml文件內容如圖 2-6所示;

圖 2-5 User類代碼


圖 2-6 User.hbm.xml 文件內容及其含義

step 3: 映射類和映射文件已經創建好了,接下來就需要配置好連接數據庫的文件了 applicationContext.xml :
這里面連接數據庫的對象就已經使用到了Spring Ioc容器對該連接對象進行管理了,后面的對象管理的代碼也都將寫入到這個 applicationContext.xml文件當中了。
直接在 src 文件目錄下創建applicationContext.xml文件:右鍵 src ---> new ---> other 然后選擇 xml file ,輸入文件名字 applicationContext,其內容如 圖 2-7 所示:

圖 2-7 applicationContext.xml文件內容

至此,數據庫的連接和數據庫表的映射就已經做完了!

step 4: 在**org.demo.login.dao **包中完成 User對應的Dao(數據庫訪問)類 UserDao,其代碼如圖 2-8所示:

圖 2-8 UserDao類的實現

還沒有完,這個UserDao還得被Spring管理起來,所以要在Spring中添加下圖 2-9 中的代碼;

圖 2-9 Spring中添加的代碼及其含義

至此,數據庫UserDao類就完成了!

step 5: 在**org.demo.login.service **包中實現Service類,為Servlet提供相應的服務,其中Service類代碼如 圖 2-10所示:

圖 2-10 Service 代碼內容

同樣的,這個Service對象還得被Spring管理起來,所以要在Spring中添加下圖2-11 中的代碼:

圖 2-11 Service在Spring配置中的代碼

至此,Service層已經完成了!

step 6: 在**org.demo.login.servlet **包中實現LoginServlet類,和客戶端進行交互,其代碼如圖 2-12所示:
這個就不是新建類了:右鍵 **org.demo.login.servlet ** ---> new ---> Servlet ---> 輸入servlet名字 LoginServlet

圖 2-12 LoginServlet代碼內容

當然,還沒有結束,這是一個可以隨時被客戶端訪問的頁面,客戶端訪問如何找到服務器的這個servlet呢,那就是通過 URL(統一資源定位符),所以在這里,我們還得為這個LoginServlet確定一個在我這個服務器上的定位符,步驟如下:
6.1 在 WebContent ---> WEB-INF 下面創建一個 web.xml,其內容如 圖 2-13:

圖 2-13 確定LoginServlet中的服務器的資源定位符

6.2 applicationContext.xml添加事務管理的代碼,如下圖 2-14:


圖 2-14 applicationContext中添加最后代碼

6.3 由于在web.xml中也要對spring進行配置,所以這里要把 src中的 applicationContext.xml 文件拷貝一份到 WebContent ---> WEB-INF 中;

step 7: 將服務器程序run在Tomcat 服務器上:
右鍵 工程** Demo_Login ---> Run as ---> Run On Server 點擊finish**
結果如圖 2-15,這是因為我們沒有設置默認的首頁的jsp。

圖 2-15 run的結果

訪問LoginServlet.jsp,傳入一個不存在的帳戶信息,得到如下圖2-16 的結果:

圖2-16 驗證失敗的demo

訪問LoginServlet.jsp,傳入一個存在的帳戶信息,得到如下圖2-17 的結果:

圖 2-17 驗證成功的demo

三、 總結



上面的7步做完,整個只有登錄驗證服務的服務器已經搭建完了,雖然實現了功能,但是還有很多需要完善的地方,比如說

  • 密碼不能用明文傳輸,需要加密;
  • Dao層應當按照面向接口編程的設計模式去進行實現;
  • 沒有任何的異常處理;
    這些在實際的開發中都應當要非常注意的一些東西。

這個實例只是到大家走這樣一個過程,但是希望大家在之后的開發當中應當注意一下上面的一些問題!下一篇博客將進入安卓客戶端的開發,等你!

聲明:
  1. 聯系作者,新浪微博私信 @谷谷_z
  2. 如果在文章當中發現有描述錯誤的地方,還請您不吝指出,萬分感謝!
  3. 此文章系本人原創作品,轉發請注明出處!
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,868評論 18 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,941評論 6 342
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,754評論 18 399
  • 從三月份找實習到現在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發崗...
    時芥藍閱讀 42,356評論 11 349
  • 在不起眼的角落,不起眼的枯木上依舊有生物在努力生長著。
    爾古閱讀 285評論 0 0