为Web应用输入和输出数据的方法和系统 【技术领域】
本发明涉及向计算机系统输入和输出数据,更具体地说涉及使用非标准I/O设备为万维网应用和页面输入和输出数据。
背景技术
万维网应用程序经常用于涉及在网络例如因特网上进行数据通信的各种任务中。在很多应用中,运行在服务器或其他计算机上的Web应用程序通过呈现表单或其他类型的网页而从客户端设备获取数据。这种数据包括可输入到表单中的信息,这种表单是使用标准的Web浏览器程序例如微软公司提供的Internet Explorer或网景通信公司提供的Netscape而显示在客户端计算机的显示器上。这种Web表单常常包括要求用户输入特定信息的若干字段或空白处。用户很容易确定每个字段所要求的信息,并使用输入设备输入该信息。
传统上,用户可使用诸如键盘、鼠标、跟踪球等标准的输入设备将数据输入到这些Web表单。例如,用户可移动鼠标或跟踪球以将光标置于该表单中的一空字段上,并使用键盘输入设备在该字段中键入信息。类似地,可使用一键盘键,例如TAB键,来将光标从表单中的一字段移到另一字段。
一些用户可使用“非标准的”输入设备将数据输入计算机系统。例如,可在销售或跟踪物品存货的企业或其他实体中使用计算机。可向该计算机输入有关已售商品或储存货物的信息以维持一数据库。在这些类型的应用中,可使用销售点(POS)I/O附加设备来容易地输入有关商品或存货的数据。例如,在零售商店,售货员可使用光扫描器来扫描产品上的条码或其他编码标记,该扫描器读取编码信息,并将所述信息发送给计算机以便存储和操纵。在其他环境中,可使用磁条阅读器(MSR)而从在卡(例如信用卡)或其他物品上提供的磁条中以磁的方式读取数据。
这些类型的非标准输入设备允许将数据迅速和容易地输入到计算机系统中,并允许货物的快速盘存和销售。然而,并没有简单和容易的方法,可使用户将从扫描器或MSR输入设备中读取的数据输入到在计算机上运行的浏览器中提供的Web表单中。用户必须手动地将信息输入Web表单的各字段中,从而对于简单的输入任务造成很大的延迟和花费。然而,Web服务器和表单普遍用于很多企业中,例如在局域网或因特网上。
在一种尝试解决方案中,Symbol Technologies公司创造了一种定制的Web浏览器,它支持在本来标准的HTML标记之上的附加属性,例如定制的输入标记。这可允许在网页中有这样的属性,这些属性允许例如扫描器向该定制的浏览器输入数据。然而,由于为了这种应用必须修改浏览器本身,只有有限数量的平台能够运行该浏览器并获得这种功能,并且它可能不支持所有现存的标准。所需要的是一种更健壮、灵活和与平台无关的方式,来从非标准的输入和输出设备向和自计算机输入和输出数据。
【发明内容】
本申请的发明提供了一种用于使用非标准I/O设备为Web和类似的应用输入和输出数据的装置和方法。在本发明的一个方面中,一种用于从一非标准输入设备向标准浏览器提供输入数据的方法包括从在一客户机处的非标准输入设备接收非标准输入数据,并将所述非标准输入数据作为等效的标准输入数据提供给在客户机上运行的标准浏览器,以便标准浏览器可以将输入数据提交给在通过网络与客户机通信的一服务器上运行的一应用。在第二个方面中,一种用于从非标准输入设备向标准浏览器提供输入数据的系统包括一客户机,该客户机用于从非标准输入设备接收非标准输入数据并将非标准输入数据作为等效的标准输入数据提供给在客户机上运行的标准浏览器,以及一服务器,该服务器运行一应用并通过网络与该客户机通信,该应用用于接收从运行在客户机上的该标准浏览器提交的输入数据。在第三个方面中,一种计算机可读的介质包括将由计算机执行以将来自非标准输入设备的输入数据提供给标准浏览器的程序指令,该程序指令执行以下步骤:从在一客户机处的非标准输入设备接收非标准输入数据,并将该非标准输入数据作为等效的标准输入数据提供给运行在该客户机上的标准浏览器,以便标准浏览器可将输入数据提交给在通过网络与该客户机通信的一服务器上运行的一应用。在第四个方面,一种用于将输出数据提供给非标准输出设备的方法包括在服务器上接收来自用户的请求,该请求用来请求将数据从服务器发送到与该服务器通信的一客户机,以及将数据和指令发送给客户机,这些指令控制数据将如何被输出到非标准输出设备上。运行在客户机上的标准浏览器接收数据和指令,并且该数据可根据这些指令被发送以便由与客户机通信的非标准输出设备输出。
本发明提供了用于使用非标准I/O设备为Web和其他应用输入和输出数据的方法和装置。不需要以任何方式改变客户机的浏览器,从而使得能够容易和灵活地获得自和至非标准设备的输入和输出。此外,本发明允许在客户机和服务器之间的灵活通信,以允许服务器接收非标准的输入和命令非标准的输出,而很少或没有性能降低。
【附图说明】
图1是本发明的用于从非标准输入设备向标准浏览器提供数据的一种系统的框图;
图2是描绘了本发明的用于将数据从非标准输入设备输入到由标准浏览器显示的表单或其他网页中的一种方法的流程图;
图3是本发明的用于从标准浏览器向非标准输出设备提供数据一种系统的框图;以及
图4是描绘了本发明的用于使用非标准输出设备输出数据的一种方法的流程图。
【具体实施方式】
本发明涉及向计算机系统输入和输出数据,更具体地涉及使用非标准I/O设备为万维网应用和网页输入和输出数据。提出了以下描述以使得本领域的普通技术人员能够制造和使用本发明,并且是在专利申请及其要求的情境下提供以下描述的。对本领域的技术人员显而易见的是,可以对本发明的优选实施例及其一般原则和特征进行各种修改。因此,本发明并非意在局限于所显示的实施例,而是将被赋予与这里描述的原则和特征一致的最大范围。
图1是适合于与本发明一起使用的一系统10的框图。系统1 0包括一服务器12、一客户机14和一非标准输入设备16。服务器10可以是运行一Web应用的Web服务器,该Web应用可通过网络例如万维网/因特网或局域网(LAN)向其他计算机提供数据,并可执行其他功能。服务器12运行服务器程序以便按照标准网络协议并以标准格式发送和接收数据。例如,一个优选的实施方式是服务器12包括一Java Server Pages
TM引擎和实现。如本领域的技术人员所知的,Java Server Pages(JSP)技术是SunMicrosystem公司提供的Java
TM小服务程序(servlet)技术的扩展。Java小服务程序是独立于平台的、服务器端的程序和模块,其运行在Web服务器上并动态地建构网页。Java Server Pages(JSP)功能允许Web程序员将常规的、静态的HTML代码与动态生成的HTML代码混合起来,并且是创建网页的一种简化方法,而不是仅使用小服务程序来创建页。JSP页使用XML标记和以Java编程语言编写的小脚本。JSP页不局限于任何特定的平台或Web服务器。
JSP标记是类似XML的标记,其封装了可生成用于网页的内容或以其他方式修改包含该标记的网页的外观或行为的逻辑。此外,应用逻辑可驻留在页可使用JSP标记访问的、基于服务器的资源中。JSP规范包括用于很多不同功能和应用的很多标准库标记。本发明中使用的定制的标记被用作对JSP语言的扩展,以提供定制的动态功能。
在所描述的图1的实施例中,服务器12优选地运行若干定制的JSP标记以部分地提供本发明的功能(如下所述,小应用程序(applet)和独立的应用程序提供其他功能)。具体而言,可在服务器12上提供JSP定制标记,以生成下载到客户机的指令。下面将更详细地描述这一点。
在本发明的其他实施例中,不需要使用JSP标记。例如,可直接使用JavaScript
TM语句或不同语言的语句来实现与所述实施例中的JSP标记所实现的同样的功能(实际上,JSP标记生成JavaScript语句)。
客户机14是可通过网络例如万维网与服务器12通信的计算机或电子设备。客户机14可通过标准网络电缆或电线、或者通过无线技术与服务器12通信。客户机14可以是主要用于下载和显示网页的Web客户机,或是可执行多种其他任务的更通用的计算机。例如,客户机14可用于仓库或库房环境,在此它仅用于输入被发送和保存在服务器12中的存货和分类信息。下面更详细描述了在客户机14上运行的程序和过程。客户机14的一些常见实现包括便携式计算机,例如掌上计算机(palm-pilot)、个人数字助理(PDA)和膝上型计算机,或者桌面计算机、终端或工作站。客户机14包括向用户显示网页和其他信息的显示设备(监视器、LCD平板显示器等)。
非标准输入设备16与客户机14进行通信,其中可通过包括连接线或无线方式(光、无线电通信等)的连接将数据从设备16传送给客户机14。在某些实施例中,也可以将数据从客户机14传输到设备16以便对设备进行配置等。输入设备16是“非标准的”,因为它不是常用来向客户机14上的Web浏览器或类似程序输入数据的键盘、鼠标、跟踪球、触模屏或其他输入设备(尽管在本发明中,这种标准输入设备也可与客户机14进行通信,这一点未在图1中示出)。与本发明的该实施例特别相关的两种非标准输入设备16是扫描器和磁条阅读器(MSR)。扫描器,例如条码扫描器,可读取标记在诸如条码、图案等物理对象上的编码的或其他形式的信息。通常,扫描器通过将该扫描器的阅读部分在物品上标记的信息之上移动来使用光学机构来读取该信息。很多扫描器是手持设备,允许容易地从物品输入信息。也可使用很多其他类型的扫描器。MSR设备用于从在卡或其他物品例如信用卡、ATM卡等上提供的磁条中读取信息。用户只需将具有磁条的卡边缘滑过阅读器设备来读取信息。很多MSR设备可从在磁条上提供的多个和独立的数据道中读取。在其他实施例中可使用其他类型的非标准输入设备16,例如“密码键盘(pin-pad)”(小键盘)、智能卡阅读器等。
非标准输入设备16将已由该设备16读取的数据提供给客户机14。在所描述的实施例中,客户机14(例如独立的应用20)运行使得能够与非标准输入设备16通信的设备驱动程序软件。例如,该设备驱动程序可在JavaPOS
TM中实现,JavaPOS
TM是为例如销售点(POS)环境和应用开发的广泛使用的、与平台无关的标准,用于在零售商店和其他企业处通常提供的设备,例如扫描器、POS终端、MSR设备等,以允许这些设备以标准方式与其他计算机应用通信。在其他实施例中可使用其他类型的适当设备驱动程序。
优选地,一应用程序20运行在客户机14上,该应用程序接收由设备驱动程序18读取的数据。该应用程序20可以是一独立的应用程序,其将来自非标准输入设备的数据通过一套接字(socket)提供给运行在客户机14上的浏览器22。在所描述的实施例中,应用程序是与平台无关的Java应用程序,因为这允许它使用JavaPOS读取来自非标准输入设备16的数据;然而,在其他实施例中,该应用程序可在具有适当设备驱动程序并可打开到浏览器中的小应用程序的套接字的任何所希望的编程语言来提供(如下所述)。
Web浏览器22可运行在客户机14上,并为客户机14的用户提供一接口,该接口用于显示信息和/或与客户机14、服务器12和任何其他所连接的计算机交互。浏览器22可通过网络接收信息,并以根据一标准语言或协议--例如用于显示在万维网上传输的网页中的信息的HTML和/或XML--的预定的格式呈现和显示信息,并可通过网络向其他计算机发送数据和网页。浏览器22是“标准的”浏览器,即可容易获得的、当前用于Web浏览的、并通过http连接进行通信的、但通常不包括用于接收来自非标准输入设备16的数据的任何接口的浏览器。典型的标准浏览器包括网景通信公司提供的Netscape、和微软公司提供的Internet Explorer。
在一优选实施例中,浏览器22显示一网页,该网页是从下载自服务器12的“页数据”中得出的Web表单24。表单24可采取多种格式和外观之一。例如,一种格式在表单24中提供若干可在其中输入数据的字段24。对于典型的表单,用户必须使用诸如键盘或鼠标等标准输入设备在每个字段中输入数据。本发明允许用户从非标准输入设备16将信息输入到表单24的适当字段。
在所述的实施例中,浏览器22正在运行一或多个小应用程序28。与小服务程序相似,Java小应用程序是可由客户机下载的、运行在客户机(而不是服务器)上的与平台无关的程序。小应用程序28被配置为通过套接字从独立的应用程序20接收数据,并将该数据放置在由浏览器显示的表单24的适当字段26中。小应用程序可使用标准的接口或协议来填充表单的字段。例如,在一所描述的实施方式中,可使用LiveConnect
TM,它是由网景通信公司定义的用于Netscape浏览器的JavaScript-小应用程序接口。或者也可使用其他标准接口。在所描述的实施例中,小应用程序可通过指令使用一组公共的设置方法来配置,这些设置方法允许JavaScript函数指定哪个表单和字段应为特定数据的目的地。小应用程序28也可任选地“提交”(以邮寄方法提交)已完成的表单24,即将表单数据发送给运行在服务器12上的Web程序。在一种实施方式中,为输入数据给客户机14的每一种类型的非标准输入设备16运行一不同的小应用程序。在其他实施方式中,单个小应用程序28可处理来自多种类型的非标准输入设备16的数据。
优选地,运行在服务器12上的Web程序可提供配置信息,即指令,例如脚本,以配置运行在浏览器上的小应用程序28。例如,JSP引擎可处理在服务器上的一或多个定制的JSP标记和/或公共的JSP方法,以生成指令,这些指令由服务器12向下发送给浏览器22。这些指令,当被执行时,确定诸表单中应从特定非标准输入设备接收数据的特定表单和字段,并且该配置信息可在浏览器22已根据由服务器12发送的数据呈现网页之后由小应用程序28使用。该配置信息是对下载到浏览器以使得呈现和显示Web表单的HTML和其他标准网页数据的附加。例如,这些配置指令可使用JavaScript函数,来使小应用程序执行以上描述的功能。或者也可使用其他语言和格式的指令。
本发明允许用户使用与平台无关的接口和标准的Web技术(例如HTML、Java插件、JavaPOS、JavaServerPages或等效的技术)来从非标准输入设备向标准浏览器和从浏览器向服务器上的Web应用输入数据。浏览器不需要执行任何特殊的功能,并且甚至不需要知道它所接收到的数据是从非标准输入设备接收的;小应用程序和独立的应用(在所描述的实施例中)获取非标准输入数据并将其作为标准数据提供给浏览器。这为使用现有技术的用户提供了最大的灵活性。此外,服务器上的Web应用的任何程序员可容易地将本发明的定制的JSP标记(在下面描述的)放入Web应用中,该标记将使得生成表单,并且来自非标准输入设备的输入数据填充到该表单中。
与将来自非标准输入设备16的输入数据直接通过套接字提供给服务器12的实施方式相比,本发明的该实施例也具有显著的优势。在所述的实施例中,对于运行在服务器12上的Web应用来说,它正接收的数据的来源是非标准输入设备16这一点是透明的,因为该数据是通过浏览器/小应用程序与表单之间的标准“http”连接而来的。如果输入数据是从输入设备通过不同的、非标准的套接字直接提供给服务器14的,则Web程序将不得不协调非标准输入数据套接字与浏览器的标准http套接字(表单是通过该http套接字而接收的),从而使得Web程序不得不高速缓存数据,并使得效率更低。而且,网络中的很多防火墙将不允许网络信息流通过非标准端口。
定制JSP标记示例
以下列出了适用于本发明的定制JSP标记和其他资源的示例。使用其他标准和计算机语言可获得与这些标记和资源类似的功能。下述定制JSP标记取代在JSP中使用的标准“form”标记。该定制标记是<form>标记的包裹,因此除了定制属性外,它还可具有典型的表单属性,例如“action”和“method”。而且,这意味着可在该定制标记的开始标记和结束标记之间放置任何可在标准表单标记的开始标记和结束标记之间放置的语句。
下面以JSP标记格式示出了可在本发明中用于将来自扫描器的数据输入到浏览器22的<scanner>标记的语法的示例。
<customTagName:scanner
form=“formName”
frame=“frameID”
field=“fieldID”
autoPost=“true|false”
action=“action”
method=“method”>
.(表单的正文)
</customTagName:scanner>
其中
“form”标识所生成的表单,即该值用作表单的“name”和“ID”属性;
“frame”是包含该Web表单的帧的标识。
“field”是将接收该数据的输入字段的ID。注意该字段是在此引用的,但不是生成的,并需要在<scanner>标记的正文中对其进行定义和描述其特性。
“autoPost”(可选的,默认值=“true”)表明是否应当数据一被接收和放入在“field”属性中指定的字段,就邮寄表单(即提交给服务器12);
“action”成为所生成的表单的“action”属性的值。“action”属性可指定例如处理对该字段的数据输入的、在服务器12上的小服务程序的名称;以及
“method”成为所生成的表单的“method”属性的值。“method”属性可指定例如是“邮寄”还是“获得”表单或字段。
表单的正文指定表单中的输入字段的特性,以及页面中的任何其他特征,例如按钮、图形、或其他接口特征。这些是标准的表单属性。
除了如上所述使用<scanner>标记以外,可调用小应用程序的若干公共方法,以获得增加的功能。这些方法增加了极大的灵活性,并可用于每个表单有多个可接收扫描器数据的字段的场合。以下示出了这些方法的例子。这些公共方法允许本发明的JSP标记配置小应用程序28,以将来自扫描器的输入数据应用到已由浏览器22呈现的适当的表单和表单中的字段。这些公共方法也可用于不使用定制JSP标记的实施例中。
SetFrame(String)标识包含将接收扫描器数据的表单和输入字段的帧。
SetForm(String)标识包含将接收扫描器数据的输入字段的表单。
SetField(String)标识将接收扫描器数据的输入字段。一表单的多个字段中的每个字段可具有它自己的不同标识符。
SetAutoPost(boolean)指定是否应当一接收到扫描器数据就提交表单。
SetEnabled(boolean)指定是否应启用或禁用扫描器。
定制JSP标记<msr>可用于标识不同的字段,例如其中将成为MSR数据的接收者的表单中每个字段对应于不同MSR数据道中的一个。该定制标记是<form>标记的包裹,因而除了定制的属性外,它还可具有典型的表单属性,例如“action”和“method”。而且,这意味着可在<msr>的开始标记和结束标记之间放置可在对等的表单标记之间放置的任何语句。
下面以JSP标记格式示出了用于将来自磁条阅读器的数据输入到浏览器22中的<msr>标记的语法的示例。
<customTagName:msr
form=“formName”
frame=“frameID”
track1Field=“fieldID1”
track2Field=“fieldID2”
track3Field=“fieldID3”
autoPost=“true|false”
action=“action”
method=“method”>
.(表单正文)
</customTagName:msr>
其中“form”、“frame”、“autoPost”、“action”和“method”属性可类似于以上就<scanner>标记描述的等价的属性。
track1Field、track2Field、和track3Field属性是将分别接收来自MSR的道1、2和3的数据的输入字段的ID。注意,这些字段是在此指定的,而不是生成的,因而可在<msr>标记的正文中对其进行定义和描述其特性。
表单的正文指定在该表单中的输入字段的特性,以及页中的任何其他特征,例如按钮、图形或其他接口特征。这些是标准的表单属性。
除了使用上述<msr>标记,类似于对于上述<scanner>标记,可调用小应用程序的若干公共方法。这些方法增加了极大的灵活性,并可用于每个表单有多个可接收MSR数据的字段的场合。以下描述这些方法的示例。
SetMSRFrame、SetMSRForm、SetMSRAutoPost、SetMSREnabled可以与上述用于扫描器的其对等物类似的方式被使用。
SetTrack1Field(String)、SetTrack2Field(String)和SetTrack3Field(String)可被用于标识将从道1、道2等接收MSR数据的输入字段(可将这些设置为空字符串,如果不需要来自该道的道数据的话)。
此外,在一个示例性实施例中,可向小应用程序28添加一额外的属性(对象)。该额外的对象可用于代表MSR的哪些道将与包含该MSR标记的JSP页相关。当装载了该标记,并为MSR道调用了小应用程序的设置方法时,可更新该对象以反映该网页是否包含特定道。例如,如果指定了“track1Field”和“track3Field”,则小应用程序中的该对象将表示这样的事实,即只有这些道才与该表单或该Web应用相关。该对象的价值在于,在随后的时间里,小应用程序28可知道使用哪些道来填充表单并发送给服务器12上的接收小服务程序,或者小应用程序可通过JPOS驱动程序配置MSR设备16,以只读取相关的道。例如,在一个实施例中,该对象可称为“trackstoRead”,并可实现为java.util.BitSet对象,这是可通过一获取方法访问的布尔值向量。在不同的实施例中,可提供使用不同语言、结构或方法的其他实现。
图2的流程图描述了本发明的用于将来自非标准输入设备的数据输入到例如在标准浏览器中由客户机显示的表单或其他网页或文档中的一种方法100。实现该方法的步骤(以及这里描述的其他方法和功能)的编程指令、数据或代码可存储在一或多个诸如存储器、硬盘、磁带、CD-ROM、DVD-ROM、存储设备或其他介质等计算机可读介质中,该计算机可读介质可由这里描述的适当的计算机或电子设备访问。
该过程开始于步骤102,并在步骤104,服务器12上的Web应用生成“页数据”,该数据包括使得Web表单由适当的输入数据填充所需的脚本或指令,以及用于表单本身的数据。例如,在所描述的、图1的实施例中,JSP标记生成配置小应用程序28以填充表单的字段所需的JavaScript指令,以及生成HTML和/或XML格式的表单及其特征。
在步骤106,在客户机14上通过通信链路例如网络连接来接收来自Web应用的页面数据。浏览器接收该页面数据,并且最好使小应用程序28在页面数据被接收到时已经在浏览器上驻留并可用。例如,可将页面数据下载到浏览器的与包含小应用程序的帧不同的一帧中。在步骤108,浏览器22从接收自Web应用的页面数据呈现和显示Web表单24。浏览器解释页面数据中的标准HTML和其他标准的指令。在步骤110,由在页面数据中提供的指令(起初由JSP标记生成,并使用上述的公共函数)配置运行在浏览器22中的小应用程序28,以便小应用程序将知道在表单24的哪些字段中放置由非标准输入设备16输入的任何数据。
在步骤112,该过程检查是否客户机14正在接收来自非标准输入设备16的任何非标准输入数据,这里其被称为输入数据。如果否,则该过程在步骤114等待非标准输入数据(并且客户机执行任何其他标准功能)。一旦向客户机输入非标准输入数据,则在步骤116该输入数据由独立的应用20例如使用JavaPOS的Java应用接收。在步骤118,应用20将该输入数据通过套接字(优选地套接字已在小应用程序初始化阶段被建立)发送给小应用程序。在步骤120,小应用程序使用由Web应用提供的指令(规则和函数)将输入数据插入表单24的适当字段。浏览器22可以可选地在表单24的显示画面中的适当字段中显示输入数据,或者这些字段可被定义为“不可见的”,以便不显示输入数据。例如,一个实施例可使用以下JavaScript代码(或等效的代码)来使得小应用程序28将扫描器数据放入表单,并邮寄该表单:
JSObject win=JSObject.getWindow(this);
win.eval(″var form=opener″+frame+
″.document.getElementById(\″″+form+″\″);″);
win.eval(″form.″+field+″.value=″+dataString+″;″);
If(autoPost){
win.eval(″form.submit();″);
}
该代码实质上使得称为“win”的对象被用于引用浏览器的特定表单和帧中的特定字段,该特定字段是在由小应用程序所接收到的JSP标记指令中所指定的,并将被由“dataString”所引用的、并被赋值给“value”的进入的扫描器数据所填充。如果如由JSP标记所标明的,表单将被自动地发送到服务器,则随后提交表单(包括扫描器数据)。如果输入MSR数据,则可在进入的数据中引用特定的数据道,并且用于小应用程序的指令可将特定的数据道与表单的特定字段联系起来。在其他实施例中,可使用其他实施方式。例如,小应用程序28可调用JavaScript指令,并将进入的数据传递给一JavaScript函数,该JavaScript函数可将数据放入一或多个表单的适当字段。
当小应用程序28和浏览器22已接收到用以完成表单24的所有输入数据(例如,已填充了所有字段),或当已满足了其他标准或用户决定将提交表单,则用户可选择一命令(例如,通过显示在页上的一按钮,或通过某其他命令)来将表单中的输入数据提交给服务器12和Web应用。在步骤122该数据被发送给服务器12。或者,一旦表单已完全填充(或已满足一或多个其他预定标准),小应用程序28可自动地将表单数据发送给服务器,而用户不需要发出任何手动命令。该过程然后在步骤124结束。适用时,可随后从服务器向客户机发送另一个表单以进行填充。
图3的框图示出了本发明的用于非标准输出设备的另一个实施例150。该实施例在很多方面与图1的实施例相似。系统150包括服务器152、客户机154和非标准输出设备156。服务器152可以是运行一Web应用的Web服务器,该Web应用可通过网络向其他计算机提供数据。与图1中的系统10类似,可使用Java Server Pages和定制的JSP标记的实现;或者,可使用一JavaScript函数库来配置小应用程序和与之通信;或者,可使用其他语言的函数和指令。客户机154是优选地包括一显示设备的、可与服务器152通信的计算机或电子设备,并且可以是专用Web客户机或更通用的计算机。
非标准输出设备156与客户机154进行通信,其中可通过有线连接或以无线的方式将数据从客户机14传输给输出设备156。在某些实施例中,可从输出设备156向客户机154传输数据(状态信息等)。输出设备156在它不是诸如显示设备或标准打印机(例如常见与计算机相连接的激光打印机、喷墨打印机等)等标准输出设备的意义上是非标准的,尽管在本发明中这些标准输出设备也可额外地与客户机154进行通信(在图3中未示出)。例如,在POS应用中使用的一种非标准输出设备是收据带打印机(receipt tape printer),其中由收据带打印机在专门的纸或带上进行专门的打印。在POS环境或其他环境中,其他非标准输出设备可用于本发明。非标准输出设备156接收已由客户机154发送的将被输出的数据。
在所描述的实施例中,在客户机154上的独立应用160可运行使得能够与非标准输出设备156通信的设备驱动程序软件。例如,如果应用160是一Java程序,则可如上所述在JavaPOS中实现该设备驱动程序。在其他实施例中,可使用其他类型的适当的设备驱动程序。应用程序160可通过套接字从小应用程序168接收将发送给设备156的输出数据。
Web浏览器162可运行在客户机154上,并为客户机154的用户提供用于与客户机154、服务器152和任何其他所连接的计算机进行交互的接口。浏览器162可以按根据一标准语言或协议例如HTML的预定格式接收、呈现和显示信息。浏览器162可以是如参照图1所描述的“标准的”浏览器。浏览器162从下载自服务器152的数据接收和显示网页164。网页164可包括多种数据。
在所描述的实施例中,浏览器162正在运行一或多个小应用程序168。浏览器接收来自服务器152的数据,并且该数据被提供给小应用程序168(例如,通过使用JavaScript函数,其可能包裹也可能不包裹在定制的JSP标记中)。小应用程序将数据通过套接字提供给独立的应用160。在一种实施方式中,对于每种类型的从客户机154输出数据的非标准输出设备156,可运行一不同的小应用程序;如果使用多个设备156,则可运行多个小应用程序。在其他实施方式中,单个小应用程序168可处理输出到多种类型非标准输出设备156的数据,并可配置为向这些设备之一发送数据。
优选地,运行在服务器152上的Web程序可配置运行在浏览器上的小应用程序168。例如,在服务器上运行的使用JSP ServerPages语言的JSP标记可生成由服务器152发送给浏览器162的数据,并指令小应用程序向输出设备156发送部分或全部数据。
本发明允许用户使用与平台无关的接口和标准Web技术(例如,HTML、Java插件、JavaPOS、JavaServerPages或等效的技术)从标准浏览器或类似的应用向非标准的输出设备156输出数据。浏览器不需要执行任何特殊的功能,并且甚至不需要知道它正在显示的数据将由非标准输出设备输出。这为使用现有的产品和技术的用户提供了最大的灵活性。
图4的流程图描述了本发明的、用于使用如图3所述的系统将数据从由标准浏览器或类似的应用显示的文档输出给非标准输出设备的一种方法200。该过程开始于步骤202,并在步骤204,用户从客户机154向服务器152上的Web应用发送一请求,以指明用户正在请求数据。例如,用户可能希望查看和输出在服务器上存储或由其生成的物品和价格的列表或表格,或任何其他信息。该请求可以是来自用户的手动请求,或基于一或多个条件的自动请求。
在步骤206,在服务器上的Web应用生成包括该用户所请求数据的一“文档”,并且也生成使得该文档被输出到非标准输出设备的指令(例如,JavaScript指令或脚本)(在这里,文档和指令被共同地称为“页面数据”)。该Web应用可生成文档和指令(例如,通过使用JSP标记),或者可从服务器可访问的存储器或存储设备中获取文档。在所描述的实施例中,Web应用也可提供用于使浏览器显示一输出控件例如按钮的指令,用户可选择该控件以从非标准输出设备输出文档。该输出控件,当被用户选择时,可调用一JavaScript(或类似的)函数以使得文档(输出)数据被提供给小应用程序168,在此小应用程序168将该文档发送给非标准输出设备。在一个实施例中,可使用与上述为图1和2的实施例描述的定制JSP标记类似的定制JSP标记生成文档和指令。例如,一“receipt tape”(收据带)标记可向小应用程序168提供指令,使其向收据带打印机156提供适当的文档数据,以便可将其打印出来。
在步骤208,客户机154接收到服务器的页面数据(例如通过网络连接或其他通信链路),并且浏览器162从该页面数据呈现和显示一文档。这样,由Web应用在步骤206生成的格式化的文档被显示在浏览器上供用户查看。在某些实施例中,来自服务器的文档可在非标准输出设备156上输出,而不由浏览器显示。在所描述的实施例中,浏览器还使用页面数据中的指令来在客户机上显示一控件,例如一图形按钮,以使得当该控件由用户选择时,文档由非标准输出设备输出。在其他实施例中,可自动地发送文档以由非标准输出设备输出,或者基于其他条件而无需用户发出这样做的命令,这样就不需要浏览器显示一图形控件了。
在步骤210,该过程检查是否要输出文档数据。这在不同的实施例或方式中可以不同方式确定。例如,在所描述的实施方式中,可首先显示文档,并请求用户确认将该页面输出给设备156(例如,可在JavaScript中进行对确认的请求)。用户确认可以是选择由浏览器显示的一图形按钮或其他控件。在一不同的实施方式中,在该步骤不需要用户确认,而直接输出文档。
应注意如上所述由用户选择图形按钮不同于选择在浏览器本身中提供“打印”或其他输出命令或功能。本发明的输出功能存在于浏览器的功能之外。本发明的某些优点在于由本发明输出的数据可以是当前由浏览器显示的数据的子集或超集(或者输出数据根本不需要显示,因为本发明的输出是独立于浏览器的显示的),并可以不同于浏览器显示的格式被格式化,如由服务器发出的指令所指示的(和/或由用户所指示的,例如,在某些实施例中,当用户选择了在浏览器中显示的一输出控件之后,JavaScript指令可按用户的喜好而行动,或者可向小应用程序168发送用户的喜好)。此外,服务器上的Web应用可以是可移植的,并且不管所使用的客户机的特定平台和特定浏览器是什么,都可以在非标准输出设备上提供输出。
如果将不输出文档数据,则在步骤212该过程等待来自用户的命令以输出数据(在客户机14执行其可能有的常规操作的同时)。当要输出文档时,该过程继续进行到步骤214,在此获取文档中的输出数据,并将其发送给小应用程序168。例如,可调用JavaScript函数来获取文档中的适当数据,并将其发送给小应用程序(例如,当用户选择所显示的控件时)。
在步骤216,从小应用程序168向独立的应用160发送输出数据。可选地,小应用程序可将进入的输出数据重新格式化为所希望的格式,例如作为一子集、进行排序等;例如,如基于服务器指令和/或用户喜好所进行的,可打印浏览器所显示的3列数据中的2列,或者可以不同方式将数据排序或排列。如果需要,可以是已经使用来自服务器的页面数据中的适当指令将小应用程序168配置为具有所希望的功能,例如,自动地将数据清空到非标准输出设备,缓存数据以便最终输出,选择多个输出设备中的一个等等。
在步骤218,所述独立的应用将输出数据转变为非标准输出数据,并将该输出数据发送到非标准输出设备进行输出,例如打印。在所描述的实施例中,该独立的应用是使用JavaPOS与输出设备156通信的Java应用,但在其他实施例中可使用其他语言和标准。然后,该过程在步骤220结束。
在图4的过程的一不同实施例中,用户可在客户机154处输入数据,随后用户希望使用非标准输出设备输出该数据。例如,用户可如上所述向服务器152上的Web应用发送请求以接收数据,并且在接收到该数据之后,用户注释该数据并希望以注释后的形式输出它。数据和注释可由小应用程序根据用户的指示和/或来自服务器的指令进行格式化,并由非标准输出设备输出。
虽然已根据所示出的实施例描述了本发明,本领域的技术人员将容易地认识到这些实施例可以有变体,并且这些变体将处于本发明的精神和范围之内。因此,本领域的普通技术人员可进行很多修改,而不脱离所附权利要求的精神和范围。