A. Web应用的测试内容都包括哪些方面
1、通用指标
指Web应用服务器、数据库服务器必需测试项,包括:处理器时间:指服务器CPU占用率,一般平均达到70%时,服务就接近饱和。可用内存数:如果测试时发现内存有变化情况也要注意,如果是内存泄露则比较严重。物理磁盘读写时间。
2、Web服务器指标
平均每秒响应次数为总请求时间与秒数之比。平均每秒业务脚本的迭代次数。成功的请求和失败的请求。成功的点击次数和失败的点击次数。每秒点击次数、每秒成功的点击次数和每秒失败的点击次数。尝试连接数。
3、数据库服务器指标
用户连接数,也就是数据库的连接数量。数据库死锁量。数据库缓存的命中情况。
(1)构建实时web应用扩展阅读
对被测的Web应用程序进行需求分析,即对所做的测试作一个简要的介绍,包括描述测试的目标和范围,所测试的目标要实现一个什么样的功能,总结基本文档、主要活动。
写出测试策略和方法,这里包括测试开始的条件、测试的类型、测试开始的标准以及所测试的功能、测试通过或失败的标准、结束测试的条件、测试过程中遇到什么样的情况终止和怎么处理后恢复等。
一个Web应用程序由完成特定任务的各种Web组件(web components)构成的并通过Web将服务展示给外界。在实际应用中,Web应用程序由多个Servlet、JSP页面、HTML文件以及图像文件等组成。所有这些组件相互协调为用户提供一组完整的服务。
B. 做Web应用需要了解哪些事情
今天小编要跟大家分享的文章是关于做Web应用需要了解哪些事情?如果你是Web前端工程师,如果你正在做Web应用程序,就来看一看这篇文章吧,文章中会告诉你做Web应用需要了解哪些事情,下面让我们一起来学习一下吧~
一、安全性
§确认邮件:
当用户注册时,应向他们发送带有点击确认邮箱的链接的邮件。如果用户更新他们的邮箱地址,则要再次重复这个工作流程。
§身份管理:
当存储密码时,首先对它们进行加盐和散列操作,然后再用现在广泛使用的crypto库。如果你不这样做的话,把身份管理转由给Facebook/
GitHub/Twitter/等,用OAuth就能做到。
§加密:
所有证书问题,还有什么比SSL更好。使用它吧。还可以使用HSTS。
§凭证:
不要把服务器身份信息(API密钥、数据库密码等)放到版本控制里,否则就泄密了。
二、工程:动画
所有的爱,都是神圣的。但别为应用里的所有元素添加动画。因为大多数CSS动画都会触发布局重绘;最好尽可能地限制自己使用transform和
opacity。
避免进行缓慢的过渡运算,如果非要使用,那么确保它是针对某个属性的(如,”transition:opacity250msease-in”,而不是
”transition:all250msease-in”)。
三、用户体验(UX)
§表单:
当提交一个表单后,用户应收到提交后的反馈。如果提交后不向用户发送一个不同的页面,那么就应该有弹框或alert
一些信息,以便让用户知道这次提交是否成功。
§登录重定向:
如果用户打算在你的网站打开一个页面,但并没有登录,那么他们应该首先接收到一个能登录的页面,并在登录后重定向到一个他们原本想打开的一个页面(当然,前提是已得到授权)。
如果他们尝试登录,但提供了一个错误的密码,这时,用户有可能是忘记了密码,那我们就应该提供一个视觉线索来提醒他们,要有一个重置密码的选项。
四、电子邮件
订阅设置:
任何发送到用户的email
,都应该至少包含一个链接,能链接到修改他们的邮箱设置的应用程序页面,并且最好每个邮件都有一个单独的链接,能取消订阅。
千万别让用户为了取消订阅而向你发送邮件。
五、移动端
虽然你不必开发移动端但不管你是否做,你都应该确保这是一个积极的决定,因为这会对你的应用程序设计和工程有实质性影响。
下面的注意事项是假设你已选择移动端作为你的平台之一。我碰巧选用Grunt作为我的构建工具,所以我得使用一些Grunt-specific
插件,但你可能使用类似的JavaScript构建工具。
六、工程
单页面应用:
现今单页面(SPA)是王道。它的主要优势是很少加载整个页面_只需加载所需资源,并且无须反复重载相同的资源。如果你才刚刚开始开发一个新的web
应用,那它很可能是SPA。
七、用户界面(UI)
分辨率:
当你开发MVP(MinimumViableProct_最简化可实行产品)时,不用先急着兼容各种尺寸的UI
,那是等你的产品一下子火了之后才需要去做的事情,但要确保支持主流设备(尺寸)。
八、UX:宽带
相对于桌面端,移动端的一个大主题是带宽,它是非常珍贵的资源。因此,不应该放过任何能减少请求的机会,让它们尽可能地采用异步请求,并减少请求资源的大小。
JS&CSS_合并与压缩:把面向具体应用的JavaScript和CSS合并到单独文件里(一个JS,一个
CSS),并进行压缩。Grunt-contrib-concat、Grunt-contrib-cssmin和Grunt-contrib-uglify
都是你的好朋友。
所有资源-使用CDN:它有两个主要的优势。第一个是适用托管所有资源,并本地化。CDN
确保资源服务都位于一个区域,而该区域在地理位置上是靠近用户请求资源的位置,从而减少加载时间。
第二个优势是更适用于你的依赖文件(比如,非面向特定应用的样式和JS代码)。为你所依赖的文件使用CDN能极大地减少加载时间。比如,很多网站依赖
Angular.js,使用CDN链接Angular代码会触发缓存命中,那么移动设备会从设备缓存里检索,而不是额外新建一个HTTP请求。
CSS_减少占用空间:大多数开发者在初始时阶段,很可能使用某些UI框架(如Bootstrap、Foundation
等)。这些框架可以很大,其压缩版通常可以常用的CDN上获得,但你不太可能使用它包含的所有样式。因此,类似uncss工具(一般配对的有
processhtml)能令你难以置信地移除最终未被使用的样式。
注意这点很重要:uncss解析器不能提取动态样式(即通过JavaScript
事件添加的样式),所以你必须在浏览器进行严格的测试,以确保不会去除应用程序实际用到的样式。
CSS_将关键的文件放在头部:因为样式需要在应用完成加载前看到;次要的样式能在加载完后提供。
JS_减少占用空间:因为应用一旦上线,程序员就不需要考虑JavaScript代码里内部变量的可读性,因此可以将所有如user.name
变量重命名为u.e,从而减少文件大小。因此,有一个工具为此而生_上面提及到的uglify,虽然它会使JS
代码完全看不懂,但极大地减小文件大小。
九、用户体验:表单
这是一个很好的建议:保持表单和工作流程的简易性,当你针对移动设备作为部署平台时,这点尤其重要。因为没有人愿意在手机上填满5页的表单。
我希望这列表对于刚开始开发第一款Web
应用的你有所帮助,甚至对那些之前不熟悉前端的一些优化技巧的后端或设计师。如果你有其它建议或记起某些东西,那么请让我知道,我会考虑将它添加到该列表。
以上就是小编今天为大家分享的关于做web应用需要了解哪些事情?的文章,希望本篇文章能够对正在从事web前端开发工作的小伙伴们有所帮助。想要了解更多web前端方面的知识记得关注北大青鸟web前端培训官网哦~
本文来源:伯乐在线@刘健超-J.c
*声明:内容与图片均来源于网络(部分内容有修改),版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。
C. java消息推送,一个实时数据的web显示该怎么做
javaweb消息实时推送可以使用GoEasy平台。1、操作如下:到goeasy官网上注册一个账号,并创建一个应用,应用创建好后系统会默认为它生成两个key: publish key和subscribe key。
2、前台实时订阅及接收:需要引入goeasy.js,然后调用goeasy的subscribe方法订阅一个channel即可,订阅时无论是用publish key还是subscribe key都可以。
3、通过subscribe的参数 onMessage的回调函数可以实时接收到消息。
4、前台实时推送:需要引入goeasy.js(如果该页面已经引入了可不在引入),然后调用goeasy的publish方法向已订阅的channel上推送消息即可,推送时只能用publish key。
5、后台实时推送:调用GoEasy Restful API, 用post方式访问。
6、 同时还需要带上三个必要参数:appkey: publish key。channel: 订阅了的channel。content: 推送内容GoEasy的实现原理很简单,就是推送消息的一端只负责推送,而需要接收的页面需要预先订阅。
7、往 某个channel上推送消息,客户端就订阅相同的channel,这样就可以确保准确接收。
8、通过channel可以自己指定哪些页面或哪些用户可以 接收到从这个channel上推送出来的消息。
消息推送推荐极光。极光iAudience依托自身海量移动终端数据,对用户线上和线下行为进行分析,构建多维、准确、及时的全息画像体系,并以开放接口的形式为全行业提供服务。
D. 简述动态web应用系统的实现原理和工作流程
webwork工作流程与原理
关键字: webwork
首先浏览器按照web.xml中指定的格式(比如:以.do结尾的请求)发起请求,servlet接收请求后从url中解析出action名称,同时遍历HttpServletRequest、HttpSession、ServletContext 中的数据,并将其复制到
Webwork的Map实现中,至此之后,所有数据操作均在此Map结构中进行,从而将内部结构与Servlet API相分离。
接着ActionProxyFactory创建对应的ActionProxy实例。ActionProxyFactory 将根据Xwork 配置文件(xwork.xml)中的设定,创建ActionProxy实例,ActionProxy中包含了Action的配置信息(包括Action名称,
对应实现类等等)。ActionProxy创建对应的Action实例,并根据配置进行一系列的处理程序。包括执行相应的预处理程序(如通过Interceptor 将Map 中的请求数据转换为Action所需要的Java 输入数据对象等),以及对Action 运行结果进行后处理
是不是这个?
E. java消息推送,一个实时数据的web显示该怎么做
javaweb消息实时推送可以使用极光平台进行实现。具体操作如下:1、首先先到到极光官网上注册一个账号,并创建一个应用;
2、前台进行实时订阅及接收;
3、前台进行实时推送;
4、后台也进行实时推送;
5、极光的实现原理很简单,就是推送消息的一端只负责推送,而需要接收的页面需要预先订阅。
消息推送软件,选择极光是个不错的选择,而且安全性和稳定性都不错。极光作为合作伙伴,体现了以映客为代表的头部互动娱乐及社交平台对极光服务能力的认可及技术实力的信赖。
极光将始终坚持“助力开发者运营、增长和变现,迈向成功”的使命,还用更专业、高效、安全、稳定、智能的开发者服务及出色的机器学习数据分析能力,为更多合作伙伴的智能化用户运营“锦上添花”。
F. 如何构建一个每天数十亿次请求级别的web应用
1、程序和数据库部署在同一台服务器上
2.多学习一些相关的书籍比如:构建高性能Web站点,大规模Web服务开发技术 构建可扩展的Web站点 , Web容量规划的技术,分布式数据库系统及其应用。 掌握其原理和结构 。
G. Web工程师你知道如何构建单页Web应用吗
今天小编要跟大家分享的文章是关于Web工程师你知道如何构建单页Web应用吗?正在从事web相关工作的小伙伴们你们是否知道什么是单页面应用,是否知道该如何构建单页面web应用?下面
就来和小编一起来看一看吧!
首先我们来看一看单页应用是什么?
所谓单页应用,指的是在一个页面上集成多种功能,甚至整个系统就只有一个页面,所有的业务功能都是它的子模块,通过特定的方式挂接到主界面上。它是AJAX技术的进一步升华,把AJAX的无刷新机制发挥到极致,因此能造就与桌面程序媲美的流畅用户体验。
其实单页应用我们并不陌生,很多人写过ExtJS的项目,用它实现的系统,很天然的就已经是单页的了,也有人用jQuery或者其他框架实现过类似的东西。用各种JS框架,甚至不用框架,都是可以实现单页应用的,它只是一种理念。有些框架适用于开发这种系统,如果使用它们,可以得到很多便利。
一、开发框架
ExtJS可以称为第一代单页应用框架的典型,它封装了各种UI组件,用户主要使用JavaScript来完成整个前端部分,甚至包括布局。随着功能逐渐增加,ExtJS的体积也逐渐增大,即使用于内部系统的开发,有时候也显得笨重了,更不用说开发以上这类运行在互联网上的系统。
jQuery由于偏重DOM操作,它的插件体系又比较松散,所以比ExtJS这个体系更适合开发在公网运行的单页系统,整个解决方案会相对比较轻量、灵活。
但由于jQuery主要面向上层操作,它对代码的组织是缺乏约束的。如何在代码急剧膨胀的情况下控制每个模块的内聚性,并且适当在模块之间产生数据传递与共享,就成为了一种有挑战的事情。
为了解决单页应用规模增大时候的代码逻辑问题,出现了不少MV*框架,他们的基本思路都是在JS层创建模块分层和通信机制。有的是MVC,有的是MVP,有的是MVVM,而且,它们几乎都在这些模式上产生了变异,以适应前端开发的特点。
这类框架包括Backbone,Knockout,AngularJS,Avalon等。
二、组件化
这些在前端做分层的框架推动了代码的组件化,所谓组件化,在传统的Web产品中,更多的指UI组件,但其实组件是一个广泛概念,传统Web产品中UI组件占比高的原因是它的厚度不足,随着客户端代码比例的增加,相当一部分的业务逻辑也前端化,由此催生了很多非界面型组件的出现。
分层带来的一个优势是,每层的职责更专一了,由此,可以对其作单元测试的覆盖,以保证其质量。传统UI层测试最头疼的问题是UI层和逻辑混杂在一起,比如往往会在远程请求的回调中更改DOM,当引入分层之后,这些东西都可以分别被测试,然后再通过场景测试来保证整体流程。
三、代码隔离
与开发传统页面型网站相比,实现单页应用的过程中,有一些比较值得特别关注的点。
从单页应用的特点来看,它比页面型网站更加依赖于JavaScript,而由于页面的单页化,各种子功能的JavaScript代码聚集到了同一个作用域,所以代码的隔离、模块化变得很重要。
在单页应用中,页面模板的使用是很普遍的。很多框架内置了特定的模板,也有的框架需要引入第三方的模板。这种模板是界面片段,我们可以把它们类比成JavaScript模块,它们是另一种类型的组件。
模板也一样有隔离的需要。不隔离模板,会造成什么问题呢?模板间的冲突主要存在于id属性上,如果一个模板中包含固定的id,当它被批量渲染的时候,会造成同一个页面的作用域中出现多个相同id的元素,产生不可预测的后果。因此,我们需要在模板中避免使用id,如果有对DOM的访问需求,应当通过其他选择器来完成。如果一个单页应用的组件化程度非常高,很可能整个应用中都没有元素id的使用。
四、代码合并与加载策略
人们对于单页系统的加载时间容忍度与Web页面不同,如果说他们愿意为购物页面的加载等待3秒,有可能会愿意为单页应用的首次加载等待5-10秒,但在此之后,各种功能的使用应当都比较流畅,所有子功能页面尽量要在1-2秒时间内切换成功,否则他们就会感觉这个系统很慢。
从这些特点来看,我们可以把更多的公共功能放到首次加载,以减小每次加载的载入量,有一些站点甚至把所有的界面和逻辑全部放到首页加载,每次业务界面切换的时候,只产生数据请求,因此它的响应是非常迅速的,比如青云的控制台就是这么做的。
通常在单页应用中,无需像网站型产品一样,为了防止文件加载阻塞渲染,把js放到html后面加载,因为它的界面基本都是动态生成的。
当切换功能的时候,除了产生数据请求,还需要渲染界面,这个新渲染的界面部件一般是界面模板,它从哪里来呢?来源无非是两种,一种是即时请求,像请求数据那样通过AJAX获取过来,另一种是内置于主界面的某些位置,比如script标签或者不可见的textarea中,后者在切换功能的时候速度有优势,但是加重了主页面的负担。
在传统的页面型网站中,页面之间是互相隔离的,因此,如果在页面间存在可复用的代码,一般是提取成单独的文件,并且可能会需要按照每个页面的需求去进行合并。
单页应用中,如果总的代码量不大,可以整体打包一次在首页载入,如果大到一定规模,再作运行时加载,加载的粒度可以搞得比较大,不同的块之间没有重复部分。
五、路由与状态的管理
我们最开始看到的几个在线应用,有的是对路由作了管理的,有的没有。
管理路由的目的是什么呢?是为了能减少用户的导航成本。比如说我们有一个功能,经历过多次导航菜单的点击,才呈现出来。
如果用户想要把这个功能地址分享给别人,他怎么才能做到呢?
传统的页面型产品是不存在这个问题的,因为它就是以页面为单位的,也有的时候,服务端路由处理了这一切。
但是在单页应用中,这成为了问题,因为我们只有一个页面,界面上的各种功能区块是动态生成的。所以我们要通过对路由的管理,来实现这样的功能。
具体的做法就是把产品功能划分为若干状态,每个状态映射到相应的路由,然后通过pushState这样的机制,动态解析路由,使之与功能界面匹配。
有了路由之后,我们的单页面产品就可以前进后退,就像是在不同页面之间一样。
其实在Web产品之外,早就有了管理路由的技术方案,Adobe
Flex中,就会把比如TabNavigator,甚至下拉框的选中状态对应到url上,因为它也是单“页面”的产品模式,需要面对同样的问题。
当产品状态复杂到一定程度的时候,路由又变得很难应用了,因为状态的管理极其麻烦,比如开始的时候我们演示的c9.io在线IDE,它就没法把状态对应到url上。
六、缓存与本地存储
在单页应用的运作机制中,缓存是一个很重要的环节。
由于这类系统的前端部分几乎全是静态文件,所以它能够有机会利用浏览器的缓存机制,而比如动态加载的界面模板,也完全可以做一些自定义的缓存机制,在非首次的请求中直接取缓存的版本,以加快加载速度。
甚至,也出现了一些方案,在动态加载JavaScript代码的同时,把它们也缓存起来。比如Addy
Osmani的这个basket.js,就利用了HTML5localStorage作了js和css文件的缓存。
在单页产品中,业务代码也常常会需要跟本地存储打交道,存储一些临时数据,可以使用localStorage或者localStorageDB来简化自己的业务代码。
七、服务端通信
传统的Web产品通常使用JSONP或者AJAX这样的方式与服务端通信,但在单页Web应用中,有很大一部分采用WebSocket这样的实时通讯方式。
WebSocket与传统基于HTTP的通信机制相比,有很大的优势。它可以让服务端很便利地使用反向推送,前端只响应确实产生业务数据的事件,减少一遍又一遍无意义的AJAX轮询。
由于WebSocket只在比较先进的浏览器上被支持,有一些库提供了在不同浏览器中的兼容方案,比如socket.io,它在不支持WebSocket的浏览器上会降级成使用AJAX或JSONP等方式,对业务代码完全透明、兼容。
八、内存管理
传统的Web页面一般是不需要考虑内存的管理的,因为用户的停留时间相对少,即使出现内存泄漏,可能很快就被刷新页面之类的操作冲掉了,但单页应用是不同的,它的用户很可能会把它开一整天,因此,我们需要对其中的DOM操作、网络连接等部分格外小心。
九、样式的规划
在单页应用中,因为页面的集成度高,所有页面聚集到同一作用域,样式的规划也变得重要了。
样式规划主要是几个方面:
1、基准样式的分离
这里面主要包括浏览器样式的重设、全局字体的设置、布局的基本约定和响应式支持。
2、组件样式的划分
这里面是两个层面的规划,首先是各种界面组件及其子元素的样式,其次是一些修饰样式。组件样式应当尽量减少互相依赖,各组件的样式允许冗余。
3、堆叠次序的管理
传统Web页面的特点是元素多,但是层次少,单页应用会有些不同。
在单页应用中,需要提前为各种UI组件规划堆叠次序,也就是z-index,比如说,我们可能会有各种弹出对话框,浮动层,它们可能组合成各种堆叠状态。新的对话框的z-index需要比旧的高,才能确保盖在它上面。诸如此类,都需要我们对这些可能的遮盖作规划,那么,怎样去规划呢?
了解通信知识的人,应当会知道,不同的频率段被划分给不同的通信方式使用,在一些国家,领空的使用也是有划分的,我们也可以用同样的方式来预先分段,不同类型的组件的z-index落到各自的区间,以避免它们的冲突。
十、单页应用的产品形态
我们在开始的时候提到,存在着很多新型Web产品,使用单页应用的方式构建,但实际上,这类产品不仅仅存在于Web上。点开Chrome商店,我们会发现很多离线应用,这些产品都可以算是单页应用的体现。
除了各种浏览器插件,借助node-webkit这样的外壳平台,我们可以使用Web技术来构建本地应用,产品的主要部分仍然是我们熟悉的单页应用。
单页应用的流行程度正在逐渐增加,大家如果关注了一些初创型互联网企业,会发现其中很大一部分的产品模式是单页化的。这种模式能带给用户流畅的体验,在开发阶段,对JavaScript技能水平要求较高。
单页应用开发过程中,前后端是天然分离的,双方以API为分界。前端作为服务的消费者,后端作为服务的提供者。
在此模式下,前端将会推动后端的服务化。当后端不再承担模板渲染、输出页面这样工作的情况下,它可以更专注于所提供的API的实现,而在这样的情况下,Web前端与各种移动终端的地位对等,也逐渐使得后端API不必再为每个端作差异化设计了。
十一、部署模式的改变
在现在这个时代,我们已经可以看到一种产品的出现了,那就是“无后端”的Web应用。这是一种什么东西呢?基于这种理念,你的产品很可能只需要自己编写静态Web页面,在某种BaaS(Backend
asa
Service)云平台上定制服务端API和云存储,集成这个平台提供的SDK,通过AJAX等方式与之打交道,实现注册认证、社交、消息推送、实时通信、云存储等功能。
我们观察一下这种模式,会发现前后端的部署已经完全分离了,前端代码完全静态化,这意味着可以把它们放置到CDN上,访问将大大地加速,而服务端托管在BaaS云上,开发者也不必去关注一些部署方面的繁琐细节。
假设你是一名创业者,正在做的是一种实时协同的单页产品,可以在云平台上,快速定制后端服务,把绝大部分宝贵的时间花在开发产品本身上。
十二、单页应用的缺陷
单页应用最根本的缺陷就是不利于SEO,因为界面的绝大部分都是动态生成的,所以搜索引擎很不容易索引它。
十三、产品单页化带来的挑战
一个产品想要单页化,首先是它必须适合单页的形态。其次,在这个过程中,对开发模式会产生一些变更,对开发技能也会有一些要求。
开发者的JavaScript技能必须过关,同时需要对组件化、设计模式有所认识,他所面对的不再是一个简单的页面,而是一个运行在浏览器环境中的桌面软件。
以上就是小编今天为大家分享的关于Web工程师你知道如何构建单页Web应用吗?的文章,希望本篇文章能够对正从事web前端工作的小伙伴们有所帮助。相信通过本篇文章的介绍大家已经对如何构建单页面web应用有所了解了,想要了解更多web相关知识记得关注北大青鸟web培训官网哦!
来源:https://github.com/xufei/blog/issues/5
*声明:内容与图片均来源于网络(部分内容有修改),版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。
H. 怎样用PowerBuilder开发WEB应用
1powerbuilder中的web应用模块
powerbuilder中含有开发web应用的模块,通过这些模块可以连接web服务器与powerbuilder应用.该模块包括以下及部分,web.pb:是几个可以在web服务器上执行的程序,被服务器激活后,调用powerbuilder应用,完成客户端任务和对数据库的事务操作.plug_ins(插入件):包括window plug_in和datawindow plug_in,此方式可将powerbuilder对象嵌入到页面中,在浏览器端执行powerbuilder应用.window activex:此方式与window plug_in类似, 所不同在于该方式可以和html中的javascripts,vbscripts交互.本文主要讨论利用web.pb开发web应用.
2用web.pb开发web应用
web.pb本身就是个cgi程序,它提供了从服务器到powerbuilder应用的访问.所以在web.pb之上,可以利用powerbuilder的强大功能开发复杂的web应用,如采用powerbuilder的powerscripts语言环境,数据窗口技
术等.powerbuilder的web应用构建前提是分布式应用体系.powerbuilder的客户端应用分布到web服务器上,可将web.pb看
作为客户端应用.当客户端应用web.pb被web服务器激活后,调用powerbuilder的服务器应用,执行在服务器应用中定义的方法,实现业务逻
辑.
这种模式是真正的“廋”客户机模式,客户端不需要安装其它软件,只安装浏览器软件.所有的事务操作都在服务器端完成,下面将结合实例详细说明:
利
用powerbuilder开发一个网上购书应用.对于分布式powerbuilder应用,首先应向客户web.pb指明powerbuilder服务
器应用在网络上的位置(location),其应用名,使用文件pbweb.ini来记录服务器应用信息.在此例中,取服务器应用名为tutorial,
driver=winsock, application=10099/tcp, location=localhost.
建一个数据库(book_dealing)其中有三个表,分别为:
“ book”: b_name, b_no, b_publisher, b_price,b_num
“customer”: c_name, c_tel,c_addr
“dealing”: b_name, c_name, d_num, d_time
建一个数据窗口dw_book,其sql语法为:
select “book”.”b_name”,
“book”.”b_no”,
“book”.”b_publisher”,
“book”.”b_price”,
“book”.”b_num”
from “book”
创建pb服务器应用的用户界面。在窗口w_server上有两个按钮cb_1,cb_2,再定义一个transport类型的实例变量mytransport,cb_1的clicked事件有关程序如下:
..........
mytransport = create transport
mytransport .driver = “winsock”
mytransport.location = “localhost”
mytransport.application = “10099”
.........
创建一个不可视的用户对象u_internet,定义一个transaction类型的全局变量mytransaction,在该用户对象的constructor事件中定义连接到数据库(book_dealing)的事务对象mytransaction和连接到数据库(webpb)的事务对象sqlca,在该对象的destructor事件中分别取消这两个事务对象。
在u_internet上定义两个函数分别为f_book, f_book_dealing,这两个函数的返回值都为字符类型。在f_book中,利用数据窗口dw_book作数据库查询,再利用数据窗口的属性将查询结果以html形式返回给web.pb,有关程序如下:
string return_html
datastore dd
dd = create datastore
dd.dataobject = ”dw_book”
dd.settransobject(mytransaction)
dd.retrieve()
.... .
return_html=return_html+dd.object.datawindow.data.htmltable
......
return return_html
在
函数f_dealing中,定义参数分别为:book_name, deal_num, custom_name, deal_time,
custom_tel,
custom_addr,用来接受form元素传来的信息。再利用powerscripts语言对数据库(book_dealing)进行修改。有关程序
如下:
string return_html
…………
connection using mytransaction;
insert into “customer”
(“c_name”,
“c_tel”,
“c_addr”)
values( :custom_name, :custom_tel, :custom_addr);
insert into “dealing”
(“b_name”,
”d_num”,
”d_time”,
”c_name”)
value(:book_name, :deal_num, :deal_time, :custom_name);
if mytransaction.sqlcacode>0 then
return_html=”定货成功!”
else
return_html=”定货失败!”
endif
………..
return return_html
主页上的“浏览书库”的超连接为:
〈a herf=”/scripts/pbcgi60.exe/tutorial/u_internet/f_book”〉 浏览书库</a>
定书信息页上应有几个单行编辑器,用来录入用户购书信息(例如:书名,用户名,购书数量.,等等)其form元素的action为:
<form action= “/scripts/pbcgi60.exe/tutorial/u_internet/f_book_dealing”method= “get”>
以上程序可实现简单的网上购书的功能,既用户可浏览书库,也可订购所需的图书。
I. java消息推送,一个实时数据的web显示该怎么做
javaweb消息实时推送可以使用GoEasy平台。
操作如下:
到goeasy官网上注册一个账号,并创建一个应用,应用创建好后系统会默认为它生成两个key: publish key和subscribe key。
前台实时订阅及接收:需要引入goeasy.js,然后调用goeasy的subscribe方法订阅一个channel即可,订阅时无论是用publish key还是subscribe key都可以。通过subscribe的参数 onMessage的回调函数可以实时接收到消息。
前台实时推送:需要引入goeasy.js(如果该页面已经引入了可不在引入),然后调用goeasy的publish方法向已订阅的channel上推送消息即可,推送时只能用publish key。
后台实时推送:调用GoEasy Restful API, 用post方式访问http://goeasy.io/goeasy/publish, 同时还需要带上三个必要参数:
appkey: publish key
channel: 你订阅了的channel
content: 推送内容
GoEasy的实现原理很简单,就是推送消息的一端只负责推送,而需要接收的页面需要预先订阅。订阅什么呢?订阅channel。往 某个channel上推送消息,客户端就订阅相同的channel,这样就可以确保准确接收。通过channel我们可以自己指定哪些页面或哪些用户可以 接收到从这个channel上推送出来的消息。
J. 什么是实时web应用
Meteor、Derby号称新一代Web应用框架,可用来构建实时Web应用。这些框架由JavaScript编写而成,开发者不必在客户端和服务器端分别编写相同的逻辑程序。将JavaScript作为服务器端编程语言,其好处在于可使数据架构和逻辑程序在前后端共享,而不必用两种不同的语言再分别写一遍。
这两种新的框架也可实现数据库的自动同步。换言之,服务器和所有相连的客户端可同时自动复制服务器上的部分和全部信息。自动同步数据库信息,可帮助你快速实现实时Web应用。