只需在嵌入式设备中集成了Web服务器,就能完结用户与嵌入式设备低成本、高通用性的信息沟通,即客户端运用HTTP阅读器,在任何时刻、任何地址都能完结与嵌入式设备的信息交互。能够说,嵌入式Web的运用极大地促进嵌入式设备,特别是家电设备、通讯终端、仪器仪表的信息交互和长途操控功用。
在三网交融的大布景下,经过家庭网关完结外部网络即电视网、电信网、因特网与家庭内部电话、电视、电脑以及家庭电器设备的通讯,是当时家居智能化、现代化的重要发展趋势。本文的首要内容是研讨依据家庭网关的嵌入式体系,完结简略有用的Web服务器功用,为外部网络供给一个便利快捷地拜访和操控家庭内部资源的渠道。由于Android操作体系能便利地将各种运用程序嵌入网络,以及敞开性好、支撑硬件丰厚的特色,本文挑选Android操作体系作为家庭网关规划的软件渠道来树立Web服务器。
1 Android体系介绍
Android移动设备渠道是依据Linux内核再度开发的一个开源的操作体系和软件渠道,最前期由Google公司进行研讨和开发的。后来Goog le为了推行此技能,它和中国移动、HTC、三星、摩托罗拉等几十家手机通讯运营商和制作商,树立了敞开手机联盟,共同开发Android移动设备渠道。
Android选用了软件堆层的架构,首要分为三部分:其最底层是依据Linux内核进行再度开发的,Linux内核只供给最为根底的功用;中间层包含由C++开发的虚拟机Virtual Machine(VM)和函数库Library;最上层是各种运用软件,包含通话程序、短信程序等。运用软件则由各公司自行开发,以Java编写。每个Android运用程序都在VM的一个实例中运转,这个实例驻留在一个由Linux内核办理的进程中。
本文完结的Web运用尽管依据Android操作体系,但并不像一般的Android APP那样,需求一个AndroidManifest.xml文件包含必要的装备信息,且需求一个Activity类来供给UI。由于是Web服务不需求用户图形界面,只需用到Android供给的接口罢了,即android.jar,这是一个Java归档文件,其间包含构建运用程序所需的一切的Android SDK类。而且,由于Android VM的原因,不能直接运用.class文件,需求转换为.dex文件,这些内容将在下文具体介绍。
2 体系规划
在嵌入式体系中,主操控芯片的挑选关于整个体系功用和杰出运转有着至关重要的影响,在挑选主控芯片的过程中,需归纳考虑芯片自身的功用、兼容性、价格以及后续的晋级等要素。归纳考虑以上要素,本文规划的家庭网关选用了Cortex—A8处理器作为硬件渠道。由于Cor tex—A8支撑大型的操作体系,高频率、高档存储办理及丰厚的外设接口,为Android体系的运转供给了杰出的硬件根底。
一个Web服务器也被称为HTTP服务器,它经过HTTP协议与客户端通讯。这个客户端一般指的是Web阅读器。Web服务器监听阅读器的服务恳求,依据用户恳求的类型供给相应的服务;Web服务器在接收到用户端的恳求后,处理用户恳求并回来需求的数据。这些数据一般以格局固定、含有文本和图片的页面出现在用户端阅读器。本文Web服务器体系的规划架构如图1所示。
现在常用的嵌入式Web服务器首要有boa、thttpd、mini_httpd、shttpd和lighttpd等,但它们都不能直接运用于Android体系上。本文选用代码精粹、扩展性强的开源i-jettyWeb服务器,它可直接运转在Android体系上,为Servlet供给运转环境钝能。
Servlet是一种独立于渠道和协议的Web服务器端的Java运用程序,能够生成动态的Web页面。与传统的从命令行发动的Java运用程序不同,Servlet由Web服务器进行加载。
一个Web服务器体系是离不开数据库的支撑。SQLite是一款轻型的数据库,是恪守ACID的相关式数据库办理体系,它是针对嵌入式产品而规划的,它占用资源十分的低,在嵌入式设备中,或许只需求几百K的内存就够了。Android渠道集成了SQLite数据库,并供给了操作的API。所以,只需在Servlet中引进开发Android程序供给的API,就能完结用Servlet操作SQLite。
本文下面首要介绍i—ierry web嵌入式服务器的树立,以及怎么完结Servlet对SQIrite数据库的操作。
2.1 i-jetty Web服务器及其装置
i—jetty是一个将开源Web容器Jetty移植到GoogleAndroid手机渠道的开源项目,能够使嵌入式设备上运转Web运用。Jetty是一个100%由Java完结的、开源的HTYP服务器和javax.servlet容器,它不只是作为一个独立服务软件(如Tomcat)被运用,而且其优秀的组件(Compone t)规划、高内聚低耦合、高扩展性等特性使得Jetty十分易于作为嵌入式东西运用。总归,Jetty具有的长处包含:
1)装备运用简略;
2)规划模块化,代码简练易懂;
3)Tomcat的运用移植到Jetty根本不必修正;
4)十分合适嵌入式产品,可扩展性好;
i—jetty是运用Java言语编写的,它的API以一组JAR包的方式发布。开发人员能够j将Jetty容器实例化成一个目标,能够敏捷为一些独立运转(stand—alone)的Java运用供给网络和web衔接。运用简略、装备简略,体积很小,但它的功用完全,而且仍是一个Servlet容器,这就让动态网页完结和后台操作(例如数据库操作)成为或许。一起,i—jetty能够运用Android的接口,这就降低了开发的难度和复杂度。i—jetty与其他干流的服务器相同,只需将现已做好的Web项目发布到服务器的Webapps目录下,就能完结网站的正常运转,十分的便利。
下面介绍i—jetty服务器的装置:
首要,在eclipse里创立i—jetty的android项目,将下载的i—jetty源码掩盖进去。然后,将下面目录下的jar引进到i—jetty项目中:C:\Documents and SetTIngs\org\eclipse\jetty,还需求servlet-api-2.5.jar。最终,编译i-jetty,并将其装置到设备中。尔后,即可对服务器进行各种装备。若想要运用自己的Web运用,则能够将自己的Web工程打包成war包,并将war包直接放到/sdeard/jetty /webapps/目录下。
2.2 Servlet和SQLite的规划与运用
Servlet是坐落服务器端的Java运用程序,它由Web服务器进行加载。Servlet的首要功用在于交互式地阅读和修正数据,生成动态Web内容。Servlet能够用来扩大Java—enabled Server的根本功用,现在最常运用的是增加Web服务器的互动性。但它能够被用来扩大任何品种的服务器,如FTP服务器。
最早用来发生动态网页服务的办法是CGI(Common Gateway Interface)。它的做法是透过Web服务器将客户端的恳求送给一个进程,这个进程再将恳求的履行成果传回客户端,只需是一个新的恳求,不管它是否和从前的恳求相同,CGI都发生一个新的进程来处理,这样十分耗费体系资源。在Servlet中每一个恳求都是由同一个进程下的线程所服务,而且相同的恳求会由同一个线程所履行。一起Servlet运用Java言语来开发的,具有跨渠道特性,而这个长处更是CGI所没有的。因而,Servlet供给了强有力且具有功率的技能来替代CGI。
要在一个i—jetty的web工程中支撑servlet,大致的过程如下:
1)在ecplise中新建Android项目,并增加servlet的支撑文件;
2)在项目中新建servlet并装备web.xml,编写servlet;
3)编译完结后会主动生成.class文件,需求将.class文件转换成Android能履行的.dex文件;
4)将.dex文件和web.xml等文件按必定次序保存在一个web工程目录下,然后打包成一个war包。
SQLite是一款轻型的数据库,能够跟许多程序言语相结合,比方Tcl、C#、PHP、Java等,还有ODBC接口,相同比起Mysql、PostgreSQL这两款开源国际闻名的数据库办理体系来讲,它的处理速度比它们都快。不像常见的客户端/服务器结构典范,SQLite引擎不是个程序与之通讯的独立进程,而是衔接到程序中成为它的一个首要部分。所以首要的通讯协议是在编程言语内的直接API调用。这在耗费总量、延迟时刻和全体简略性上有活跃的效果。整个数据库(界说、表、索引和数据自身)都在宿主主机上存储在一个单一的文件中。Android操作体系选用规范SQLite数据库,供给办理数据库相关的API。所以,只需在Servlet中引进开发Android程序供给的API,就能完结用Servlet操作SQLite。Setv let调用SQLite数据库的办法如下:
首要是数据库的树立,在Android中运用SQLiteDatabase的静态办法openOrCreateDatabase(String path,SQLiteDatabae.Cursor Fact ory factory)翻开或许创立一个数据库。然后创立表,为数据库增加刺进数据,删去数据,修正数据,查询数据等功用。最终是Servlet的规划,在eclipse中树立Androidproiect,在Web工程中导入android.jar,再引进需求的操作数据库的类:
3 体系计划的测验
将装载了Android体系的嵌入式设备衔接网络,查到其网络衔接的IP地址为192.168.137.96,将嵌入式web服务器i—jetty装置到该设备,而且将规划好的web工程放在SD卡中的/jetty/webapps/目录下。翻开服务器,设置好HTTP的通讯端口,敞开服务。
可知,家庭网关服务器端的地址为192.168.137.96。发动i—jetty后,在阅读器地址栏输入192.168.137.96:8080/temp,能够看到体系登陆页面,如图2所示。
这是一个用户登陆界面,输入用户名和暗码后,主页会将输入信息提交到Login.java的Servlet里,由此Servlet来查询数据库,判别该用户是否合法。当用户合法后,能够进入主页界面,如图3所示。
4 结束语
本文首要扼要介绍了Android体系,然后论说了完结嵌入式Web服务器和相关Internet技能,指出了在Android体系下完结Web服务器应要注意的事项。接着介绍了i—jetty的长处以及编译装置办法,了解了i—jetty是为数不多的能够在Android下运转的Web服务器,而且仍是一个Servlet容器。将传统的CGI与Servlet做了比较,说明晰Servlet在Android体系下的优势:Setvlet在动态网页的完结方面更有功率。在后台操作方面,Android并不支撑相似PHP的网页脚本言语,所以,Servlet是一个很好的挑选。在嵌入式体系里存储信息,SQLite以其便利的操作,无需额定装备,体积小等长处,得到了广泛的运用。