html5网页显示数据库内容

html5网页显示数据库内容,第1张

首先,你提到的Java Servlet是用来提供数据的,ajax是用来获取数据的。

1、后端用servlet、struts、springmvc等从数据库取数据并转换成json格式返回,前端用ajax获取这些json数据。

2、后端用servlet、struts、springmvc等从数据库取数据并将数据嵌到模板页面里,前端用jsp、freemarker之类的模板语言直接写for循环。

依据Gartner的研究,Android是全球最受欢迎的移动 *** 作系统,是它支持着大多数智能手机;而依据Canalys的调研,现在在平板电脑领域享有多数市场份额(53%)。让Android有如此热度的一部分因素是其多样性。几乎每个用户都有一个的Android设备的尺寸和形状,想要一个13英寸带可拆卸键盘的平板电脑?Android同样满足你。

当如此多样的设备让用户欢喜时,它也为开发人员带来了不少头疼的麻烦。屏幕尺寸、分辨率、CPU架构和 *** 作系统版本等,都会为开发人员创建原生Android app带来挑战。幸运的是,HTML5使得处理这庞大而多样的Android设备队伍变得快速而简单。

“服务员,我的冻酸奶里面有果冻豆”

Android初次广泛登台是在2009年。制造商发布设备,一般只对 *** 作系统更新一两次,就放弃它开始关注新硬件了。因此,根据OpenSignal对超过五十万台Android设备中,名为Gingerbread(姜饼2.3 x)的版本依然占据着最大市场份额(34.1%)。

Android SDK是 *** 作系统特定的,这为Android开发人员营造了挑战。也就是说,如果你用4.0 SDK(冰淇淋三明治)开发app,你的app将不能在2.3(姜饼)上运行。这无疑让开发人员置身于一个尴尬境地。一方面,你要用最新最好的SDK,另一方面,你要app得到尽可能多的下载。

有了HTML5,你不用再纠结于选择。你可以用强大的它来构建你的app,无视Android *** 作系统版本。

庞大的Android设备队伍

在Android设备运行的不同不仅仅是表面上的,任何Android设备的心脏部分都是CPU由Qualcomm、PowerVR、NVidia、MediaTek、Intel等制造。取决于你的app需要用到哪个 *** 作系统的特性,原生Android SDK可能不会兼容什么特别设备。

HTML5提供APIs来做很多通常被认为是原生 *** 作系统功能的事情。HTML5包含对于键/值存储、文件系统IO甚至通过地理定位访问GPS的强大APIs。

要访问原生 *** 作系统功能,没有标准的HTL5界面。 Apache Cordova framework提供一个界面让你的app在任何设备上访问原生 *** 作系统资源,诸如摄像机和加速计。

各种形状和大小

Android设备有着各种尺寸,小至三星的新齿轮智能手表,大至13英寸或更大的平板电脑。更添其复杂性的是分辨率范围从240×320跨到2560×1600。

要解决这个问题,你可能得用线形布局或网格视图。这类布局能良好运行,如果你想要依据用户需求滚动到视图中查看app。

好在HTML5提供一个更好的途径来处理尺寸大小的问题——用响应设计。响应设计是由CSS Media Queries所增强的简单结构的HTML在更大的屏幕利用更多的空间,在更小的屏幕上缩小或消除那些并不重要的元素。

当响应设计正确完成时,用户就对跨平台的app有了流畅的体验,即便是重新调整屏幕,这是在任何 *** 作系统上解决屏幕尺寸/分辨率问题的最好办法。

移植到其它平台

Java的愿景是“write once, run any where(只写一次,哪儿都能跑)”。不幸,出于种种原因,不能实现这个梦。一些交互编译器可以允许创建针对Android和iOS的app,但只有HTML5能在移动 *** 作系统和互联网浏览器上运行。

在诸如Android、iOS、Windows Phone等移动 *** 作系统上,HTML5应用通常托管于Apache Cordova (aka PhoneGap)内,Apache Cordova充当将你的HTML5联系到原生 *** 作系统的角色,这包括定义你的app图标、加载屏幕和提供JavaScript来访问原生 *** 作系统硬件。

HTML5支持跨平台,当然,还支持网页。你第一次用HTML5取代.ASPX或PHP来开启一个新项目将需要十足的信仰之外,还要你的app在没有服务器端生成HTML的情况下工作。

开启你的浏览器

HTML5应用的性能可以无限接近于原生性能,如果它们是被精心无误地制作处理的。

HTML5应用绝对需要被安装到设备上。通过将Apache Cordova或嵌入的WebView指向一个托管于互联网的网页来构建的app只能提供可怜的用户体验。如果你的app每次都需要用户通过点击一些东西来下载用户界面,这是不可能满足他们“即时响应”的期望的。为获得接近于原生的速度,你所有的HTML5、JavaScript和CSS都必须安装在本地设备上,从而使它能够在用户点击后就运行。

大多数移动app从互联网服务器上加载和保存数据。为了保持你的app以最快的速度响应,你将要在本地存储一个缓存数据并异步刷新你的数据。这将允许你的app在异步更新时,立即渲染其UI。

HTML的复杂性使得关于渲染你的用户界面需要多少CPU cycles有了很大不同,最好是保持你的HTML尽可能地结构简单化,带有尽可能少的嵌套级别标签。举个例子说,深度嵌套的HTML表格,是出了名地衰!

结论

HTML5允许你写一次应用程序并快速部署它到几乎现有的每个 *** 作系统。它即时响应的能力很适合现在数不胜数的安卓设备屏幕尺寸。凭借大量可用的工具,诸如 Intel XDK new IDE,你可以在Android使用HTML开放式架构、CSS和JavaScript上提供一种美妙的体验。

通过openDatabase方法创建一个访问数据库的对象

var db = openDatabase(databasename,version,description,size)

该方法有四个参数,作用分别为:

databasename:数据库名;

version:数据库版本号,可不填;

description:数据库描述;

size:给数据库分配的空间大小;

使用第一步创建的数据库访问对象(如db)执行transaction方法,用来执行事务处理,关于数据库的所有 *** 作都需要在这里面进行,如执行查询

db.transaction(function(tx)){

//执行访问数据库的语句

tx.executeSql(sqlQuery,[value1,value2..],dataHandler,errorHandler)

})

通过executeSql方法执行查询,就是上面transaction中执行查询用到的方法。通过上面我们可以看出executeSql要在transaction中执行。下面详细介绍一下executeSql的参数和使用。

tx.executeSql(sqlQuery,[value1,value2..],dataHandler,errorHandler)

tx是transaction中传递过来的事务处理对象。

executeSql方法有四个参数,作用分别如下:

sqlQuery:需要具体执行的sql语句,可以是create、select、update、delete;

[value1,value2..]:sql语句中所有使用到的参数的数组,在executeSql方法中,将sql语句中所要使用的参数先用“?”代替,然后依次将这些参数组成数组放在第二个参数中;

dataHandler:执行成功是调用的回调函数,通过该函数可以获得查询结果集;

errorHandler:执行失败时调用的回调函数;

下面就做一个完整的实例,大家可以把代码复制下来存到一个html页面中,用chorme或火狐等支持html5的浏览器查看效果

<!DOCTYPE HTML>

<html>

<head>

<meta charset="utf-8"/>

<title>HTML5本地存储之本地数据库篇</title>

<script type="text/javascript">

//打开数据库

var db = openDatabase('contactdb','','local database demo',204800)

//保存数据

function save(){

var user_name = document.getElementById("user_name").value

var mobilephone = document.getElementById("mobilephone").value

var company = document.getElementById("company").value

//创建时间

var time = new Date().getTime()

db.transaction(function(tx){

tx.executeSql('insert into contact values(?,?,?,?)',[user_name,mobilephone,company,time],onSuccess,onError)

})

}

//sql语句执行成功后执行的回调函数

function onSuccess(tx,rs){

alert(" *** 作成功")

loadAll()

}

//sql语句执行失败后执行的回调函数

function onError(tx,error){

alert(" *** 作失败,失败信息:"+ error.message)

}

//将所有存储在sqlLite数据库中的联系人全部取出来

function loadAll(){

var list = document.getElementById("list")

db.transaction(function(tx){

//如果数据表不存在,则创建数据表

tx.executeSql('create table if not exists contact(name text,phone text,company text,createtime INTEGER)',[])

//查询所有联系人记录

tx.executeSql('select * from contact',[],function(tx,rs){

if(rs.rows.length>0){

var result = "<table>"

result += "<tr><th>序号</th><th>姓名</th><th>手机</th><th>公司</th><th>添加时间</th><th> *** 作</th></tr>"

for(var i=0i<rs.rows.lengthi++){

var row = rs.rows.item(i)

//转换时间,并格式化输出

var time = new Date()

time.setTime(row.createtime)

var timeStr = time.format("yyyy-MM-dd hh:mm:ss")

//拼装一个表格的行节点

result += "<tr><td>"+(i+1)+"</td><td>"+row.name+"</td><td>"+row.phone+"</td><td>"+row.company+"</td><td>"+timeStr+"</td><td><input type='button' value='删除' onclick='del("+row.phone+")'/></td></tr>"

}

list.innerHTML = result

}else{

list.innerHTML = "目前数据为空,赶紧开始加入联系人吧"

}

})

})

}

//删除联系人信息

function del(phone){

db.transaction(function(tx){

//注意这里需要显示的将传入的参数phone转变为字符串类型

tx.executeSql('delete from contact where phone=?',[String(phone)],onSuccess,onError)

})

}

//格式化时间的format函数

Date.prototype.format = function(format)

{

var o = {

"M+" : this.getMonth()+1, //month

"d+" : this.getDate(),//day

"h+" : this.getHours(), //hour

"m+" : this.getMinutes(), //minute

"s+" : this.getSeconds(), //second

"q+" : Math.floor((this.getMonth()+3)/3), //quarter

"S" : this.getMilliseconds() //millisecond

}

if(/(y+)/.test(format)) format=format.replace(RegExp.$1,

(this.getFullYear()+"").substr(4 - RegExp.$1.length))

for(var k in o)if(new RegExp("("+ k +")").test(format))

format = format.replace(RegExp.$1,

RegExp.$1.length==1 ? o[k] :

("00"+ o[k]).substr((""+ o[k]).length))

return format

}

</script>

<style>

.addDiv{

border: 2px dashed #ccc

width:400px

text-align:center

}

th {

font: bold 11px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif

color: #4f6b72

border-right: 1px solid #C1DAD7

border-bottom: 1px solid #C1DAD7

border-top: 1px solid #C1DAD7

letter-spacing: 2px

text-transform: uppercase

text-align: left

padding: 6px 6px 6px 12px

}

td {

border-right: 1px solid #C9DAD7

border-bottom: 1px solid #C9DAD7

background: #fff

padding: 6px 6px 6px 12px

color: #4f6b72

}

</style>

</head>

<body onload="loadAll()">

<div class="addDiv">

<label for="user_name">姓名:</label>

<input type="text" id="user_name" name="user_name" class="text"/>

<br/>

<label for="mobilephone">手机:</label>

<input type="text" id="mobilephone" name="mobilephone"/>

<br/>

<label for="mobilephone">公司:</label>

<input type="text" id="company" name="company"/>

<br/>

<input type="button" onclick="save()" value="新增记录"/>

</div>

<br/>

<div id="list">

</div>

</body>

</html>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10064224.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存