基于Android的嵌入式Web服務(wù)器設(shè)計(jì)
2.2 Servlet和SQLite的設(shè)計(jì)與使用
Servlet是位于服務(wù)器端的Java應(yīng)用程序,它由Web服務(wù)器進(jìn)行加載。Servlet的主要功能在于交互式地瀏覽和修改數(shù)據(jù),生成動(dòng)態(tài)Web內(nèi)容。Servlet可以用來(lái)擴(kuò)充Java—enabled Server的基本功能,目前最常使用的是增加Web服務(wù)器的互動(dòng)性。但它可以被用來(lái)擴(kuò)充任何種類(lèi)的服務(wù)器,如FTP服務(wù)器。
最早用來(lái)產(chǎn)生動(dòng)態(tài)網(wǎng)頁(yè)服務(wù)的方法是CGI(Common Gateway Interface)。它的做法是透過(guò)Web服務(wù)器將客戶端的請(qǐng)求送給一個(gè)進(jìn)程,這個(gè)進(jìn)程再將請(qǐng)求的執(zhí)行結(jié)果傳回客戶端,只要是一個(gè)新的請(qǐng)求,不管它是否和先前的請(qǐng)求相同,CGI都產(chǎn)生一個(gè)新的進(jìn)程來(lái)處理,這樣非常耗費(fèi)系統(tǒng)資源。在Servlet中每一個(gè)請(qǐng)求都是由同一個(gè)進(jìn)程下的線程所服務(wù),而且相同的請(qǐng)求會(huì)由同一個(gè)線程所執(zhí)行。同時(shí)Servlet使用Java語(yǔ)言來(lái)開(kāi)發(fā)的,具有跨平臺(tái)特性,而這個(gè)優(yōu)點(diǎn)更是CGI所沒(méi)有的。因此,Servlet提供了強(qiáng)有力且具有效率的技術(shù)來(lái)取代CGI。
要在一個(gè)i—jetty的web工程中支持servlet,大致的步驟如下:
1)在ecplise中新建Android項(xiàng)目,并添加servlet的支持文件;
2)在項(xiàng)目中新建servlet并配置web.xml,編寫(xiě)servlet;
3)編譯完成后會(huì)自動(dòng)生成.class文件,需要將.class文件轉(zhuǎn)換成Android能執(zhí)行的.dex文件;
4)將.dex文件和web.xml等文件按一定順序保存在一個(gè)web工程目錄下,然后打包成一個(gè)war包。
SQLite是一款輕型的數(shù)據(jù)庫(kù),能夠跟很多程序語(yǔ)言相結(jié)合,比如Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開(kāi)源世界著名的數(shù)據(jù)庫(kù)管理系統(tǒng)來(lái)講,它的處理速度比它們都快。不像常見(jiàn)的客戶端/服務(wù)器結(jié)構(gòu)范例,SQLite引擎不是個(gè)程序與之通信的獨(dú)立進(jìn)程,而是連接到程序中成為它的一個(gè)主要部分。所以主要的通信協(xié)議是在編程語(yǔ)言內(nèi)的直接API調(diào)用。這在消耗總量、延遲時(shí)間和整體簡(jiǎn)單性上有積極的作用。整個(gè)數(shù)據(jù)庫(kù)(定義、表、索引和數(shù)據(jù)本身)都在宿主主機(jī)上存儲(chǔ)在一個(gè)單一的文件中。Android操作系統(tǒng)采用標(biāo)準(zhǔn)SQLite數(shù)據(jù)庫(kù),提供管理數(shù)據(jù)庫(kù)相關(guān)的API。所以,只要在Servlet中引入開(kāi)發(fā)Android程序提供的API,就能實(shí)現(xiàn)用Servlet操作SQLite。Setv let調(diào)用SQLite數(shù)據(jù)庫(kù)的方法如下:
首先是數(shù)據(jù)庫(kù)的建立,在Android中使用SQLiteDatabase的靜態(tài)方法openOrCreateDatabase(String path,SQLiteDatabae.Cursor Fact ory factory)打開(kāi)或者創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)。然后創(chuàng)建表,為數(shù)據(jù)庫(kù)添加插入數(shù)據(jù),刪除數(shù)據(jù),修改數(shù)據(jù),查詢數(shù)據(jù)等功能。最后是Servlet的設(shè)計(jì),在eclipse中建立Androidproiect,在Web工程中導(dǎo)入android.jar,再引入需要的操作數(shù)據(jù)庫(kù)的類(lèi):

評(píng)論