本系列博客主要展示一下,在C-S(Client - Server)系統開發當中,如何使用MVC的架構來實現安卓端的一個登錄驗證的模塊,包括支撐客戶端驗證的服務器和數據庫的開發。如果你能有基本的數據庫開發,WEB開發,和安卓開發的知識,那么理解起來會更加容易一些。
本文主要從下面幾點展開:
- 服務器端的架構
- 服務器端的開發
- 總結
下文當中使用到的資源連接:
鏈接: https://pan.baidu.com/s/1hrS1i76 密碼: 6gyj
一、 服務器端的架構
前面說到,服務器主要充當控制器(Controller),但是并不完全是,它還有一些其它的作用!看下圖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,輸入項目名稱
web工程的結構圖 2-3:
step 2: 把工程的包結構給創建出來,創建后的結果如下圖2-4:
創建了 javabean,dao,service,servlet四個包,分別代替我們上面提到的服務器的四層,然后把Spring和Hibernate還有 連接MySql數據的第三方jar包(在資源的 jar包文件夾中)拷貝到 WebContent ---> WEB-INF ---> lib文件夾中,這一步就完成了。
step 3: 在**org.demo.login.javabean **包中實現User類 以及完成User類和數據庫中user表的映射 hbm.xml 文件。User類代碼如圖 2-5所示,User.hbm.xml文件內容如圖 2-6所示;
step 3: 映射類和映射文件已經創建好了,接下來就需要配置好連接數據庫的文件了 applicationContext.xml :
這里面連接數據庫的對象就已經使用到了Spring Ioc容器對該連接對象進行管理了,后面的對象管理的代碼也都將寫入到這個 applicationContext.xml文件當中了。
直接在 src 文件目錄下創建applicationContext.xml文件:右鍵 src ---> new ---> other 然后選擇 xml file ,輸入文件名字 applicationContext,其內容如 圖 2-7 所示:
至此,數據庫的連接和數據庫表的映射就已經做完了!
step 4: 在**org.demo.login.dao **包中完成 User對應的Dao(數據庫訪問)類 UserDao,其代碼如圖 2-8所示:
還沒有完,這個UserDao還得被Spring管理起來,所以要在Spring中添加下圖 2-9 中的代碼;
至此,數據庫UserDao類就完成了!
step 5: 在**org.demo.login.service **包中實現Service類,為Servlet提供相應的服務,其中Service類代碼如 圖 2-10所示:
同樣的,這個Service對象還得被Spring管理起來,所以要在Spring中添加下圖2-11 中的代碼:
至此,Service層已經完成了!
step 6: 在**org.demo.login.servlet **包中實現LoginServlet類,和客戶端進行交互,其代碼如圖 2-12所示:
這個就不是新建類了:右鍵 **org.demo.login.servlet ** ---> new ---> Servlet ---> 輸入servlet名字 LoginServlet
當然,還沒有結束,這是一個可以隨時被客戶端訪問的頁面,客戶端訪問如何找到服務器的這個servlet呢,那就是通過 URL(統一資源定位符),所以在這里,我們還得為這個LoginServlet確定一個在我這個服務器上的定位符,步驟如下:
6.1 在 WebContent ---> WEB-INF 下面創建一個 web.xml,其內容如 圖 2-13:
6.2 applicationContext.xml添加事務管理的代碼,如下圖 2-14:
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。
訪問LoginServlet.jsp,傳入一個不存在的帳戶信息,得到如下圖2-16 的結果:
訪問LoginServlet.jsp,傳入一個存在的帳戶信息,得到如下圖2-17 的結果:
三、 總結
上面的7步做完,整個只有登錄驗證服務的服務器已經搭建完了,雖然實現了功能,但是還有很多需要完善的地方,比如說
- 密碼不能用明文傳輸,需要加密;
- Dao層應當按照面向接口編程的設計模式去進行實現;
- 沒有任何的異常處理;
這些在實際的開發中都應當要非常注意的一些東西。
這個實例只是到大家走這樣一個過程,但是希望大家在之后的開發當中應當注意一下上面的一些問題!下一篇博客將進入安卓客戶端的開發,等你!
聲明:
- 聯系作者,新浪微博私信 @谷谷_z
- 如果在文章當中發現有描述錯誤的地方,還請您不吝指出,萬分感謝!
- 此文章系本人原創作品,轉發請注明出處!