专利名称:Java网页事件处理系统及其方法
技术领域:
本发明是关于一种网页事件处理系统、方法,特别关于一种将事件传递模块嵌入在欲传送给客户端的网页资料中的Java网页事件处理系统、方法。
背景技术:
时至今日,网络的发展一日千里,各种信息交流、学习、娱乐、电子商务等应用相继出现,展现了网络功能广泛多元且又贴近人们日常生活的特性,其重要性可谓不言而喻。
而欲将网络的功能发挥到极致,除了网络的基础建设、计算机软硬件设备外,实际建立信息提供者与使用者之间互动关系的各种网络应用同属其中不可或缺的一环。现今最被广泛利用且最重要的网络应用当属网页资料的提供,其具有能够以多媒体的方式呈现资料、互动性高等特性,使得各种类型的资料可以在资料提供者与使用者之间作快速且大量的流通,资料提供者与使用者之间的沟通更有效率,因而在商业或非商业用途上均被大量运用。
为实际与使用者进行互动,一般网页通常设计有互动的机制,最常见的便是使用者在数据输入完成后,按下提交(Submit)按钮,将事件回传给服务器端作处理。此种作法的缺点在于由使用者所触发的网页事件无法立即反应,且提交事件以外的网页事件均需在客户端处理。
因此,综上所述,如何提供一种能够及时反应客户端所触发的网页事件,且能够处理每一个网页事件的系统与方法,以改善网页事件的处理,实乃亟需解决的问题。
发明内容
针对上述问题,本发明的目的为提供一种Java网页事件处理系统与方法,其能够将一事件传递模块嵌入在网页资料中,借以及时反应客户端所触发的网页事件。
为达到上述目的,本发明提供一Java网页事件处理系统,其应用于由一服务器端提供给一客户端的网页服务中,包含一定义标记(Tag)处理方式的标记库(Tag Library),一参照标记库,将一事件传递模块嵌入在欲传送给客户端的网页资料中的网页产生模块,其中事件传递模块将网页资料中的对象所产生的触发事件回传给服务器端,以及一监听由客户端所回传的触发事件的事件监听模块。
此外,本发明亦提供一种Java网页事件处理方法,其是应用在由一服务器端提供给一客户端的网页服务中,其步骤首先为参照一标记库(Tag Library)将一事件传递模块嵌入在欲传送给客户端的一网页资料中,其中标记库是定义标记(Tag)的处理方式,该事件传递模块则是将网页资料中的对象所产生之一触发事件回传给服务器端;其次为监听由客户端所回传的触发事件。
除此之外,本发明还提供一种计算机可读取的记录介质,其记录一Java网页事件处理系统,而上述Java网页事件处理系统是应用于由一服务器端提供给一客户端的网页服务中,且依据上述步骤处理Java网页事件。
由于依本发明的Java网页事件处理系统与方法是通过网页产生模块在产生网页资料时,判定网页资料所包含的网页事件是否需回传至服务器端处理,若需要,则将事件传递模块嵌入在欲传送给客户端的网页数据中;而事件传递模块可在客户端的使用者触发网页事件时,将所触发的事件回传给服务器端,以供后续处理,因此本发明的Java网页事件处理系统与方法能够及时反应客户端所触发的网页事件,并处理每一个网页事件,进而改善Java网页事件的处理。
图1为一结构图,显示依本发明优选实施例的Java网页事件处理系统的结构。
图2为一流程图,显示依本发明优选实施例的Java网页事件处理方法的流程。
具体实施例方式
以下将参照相关附图,说明根据本发明优选实施例的Java网页事件处理系统,其中相同的组件将以相同的参考符号加以说明。
请参照图1所示,本发明的Java网页事件处理系统110是应用在由一服务器端100提供给一客户端200的网页服务中,包含一标记库(Tag Library)111,其是定义HTML标记(Tag)的处理方式;一网页产生模块112,其参照标记库111将一事件传递模块211嵌入在欲传送给客户端200的一网页资料210中,其中事件传递模块211将网页资料210中的对象所产生的触发事件回传给服务器端100;以及一事件监听模块113,其监听由客户端200所回传的触发事件。此外,服务器端100尚包含一相对应的程序120及一储存对象130。
请参照程序列表1,表1为一标记库部分内容示意图(编译button对象),此部分内容的作用在于编译原始网页资料中成对标记<aspform>与</aspform>所包夹的内容中的特定对象,例如一按钮(button)对象。请同时参照表3与表4所示,表3为一原始网页资料内容示意图,此原始网页资料中包含一按钮(button)对象及一文字方块(textbox)对象。网页产生模块112参照标记库111编译原始网页资料中成对标记<aspform>与</aspform>所包含的内容后,产生如表4所示的网页资料210中由成对标记<form>与</form>所包含的内容。
请参照表2所示,表2为另一标记库部分内容(检查onclick事件),其作用在于供网页产生模块112判断原始网页资料所包含的对象的任一事件是否需要回传至服务器端处理(在此仅例示onclick事件的判断式)。若网页产生模块112在上述编译过程中,发现原始网页资料所包含的对象的任一事件需回传至服务器端处理时,则嵌入事件传递模块211在原始网页资料中,并将上述事件被触发时的动作替换为事件传递模块211,以利用事件传递模块211将所触发的事件回传给服务器端100。请再同时参照表3与表4所示,网页产生模块112在编译原始网页资料的过程中,识别出原始网页资料所包含的对象具有需回传至服务器端处理的事件,因此网页产生模块112便在编译过程中,将事件传递模块211嵌入在所产生的网页数据210中(如表4所示的网页资料210中由成对标记<script>与</script>所包含的内容)。
表1<pre listing-type="program-listing"> StringBuffer results=new StringBuffer(); results.append(″<input type=\″submit\″″); if(property!=null){ results.append(″name=\″″); results.append(property); results.append(″\″″); results.append(″id=\″″+property+″\″″); } results.append(prepareCommon(tagbean)); if(tagbean.getText()!=null) results.append(″value=\″″+tagbean.getText()+″\″″); //******************* results.append(prepareEventHandlers()); results.append(prepareStyles(tagbean)); results.append(″>″); //******************** if(tagbean.getVisible()){ ResponseUtils.write(pageContext,results.toString()); taabean.setRendered(results.toString()); } else results.delete(0,results.length()); tagbean.firstTime=false; tagbean.setFlag(true); //Evaluate the remainder of this page return(EVAL_PAGE); }</pre>
表2<pre listing-type="program-listing"> private void prepareMouseEvents(StringBuffer handlers,String property){ if(onclick !=null){ handlers.append(″onclick=\″″); if(onclick.equalsIgnoreCase(″Server″)){ FormTag parent=(Form Tag)findAncestorWithClass(this,Form Tag.class); parent.setAutoPostBack(true); handlers.append(″__doPostBack(+property+,′_Click′)″); } else{ handlers.append(onclick); } handlers.append(″\″″); } if(ondblclick!=null){</pre>相对于表3所示的原始网页数据,经网页产生模块112参照标记库111编译后而嵌入有一事件传递模块211的网页资料210,请参照表4所示。
请参照表5所示,表5为事件监听模块113的示意图,事件传递模块211将网页资料210中的对象所产生的触发事件回传给服务器端100时,所回传的触发事件参数包含对象名称(eventTarget)与事件名称(eventArgument),事件监听模块113接收由客户端200所回传的触发事件后,结合其中的参数以识别触发事件,并呼叫相对应的程序处理它。相对应的程序处理上述触发事件的处理结果可储存在一相对应的储存对象130中,进一步供网页产生模块112读取它以产生后续的网页数据。
应注意,本发明的系统与功能模块不限于示例的程序代码内容,任何系统与功能模块具有本发明所公开的功能者,均可应用于本发明中。
表3<pre listing-type="program-listing"> <%@ page language=″java″contentType=″text/html;charset=UTF-8″%> <%@ taglib uri=″/web-inf/struts-html.tld″ prefix=″asp″%> <!DOCTYPE HTML PUBLIC″-//W3C//DTD HTML 4.0Transitional//EN″> <HTML> <HEAD> <meta content=″Microsoft Visual Studio 7.0″name=″GENERATOR″> <meta content=″C#″name=″CODE LANGUAGE″> <meta content=″JavaScript(ECMAScript)″ name=″vs defaultClientScript″> <meta content=″http//schemas.microsoft.com/intellisense/ie5″ name=″vs_targetSchema″> </HEAD> <body> <aspform method=″post″action=″WebForml.action″> <aspbutton property=″btn01″style=″z-index103;left203px; positionabsolute;top216px″text=″确定 ″></aspbutton> <asptextbox property=″txt01″style=″z-index101;left162px; positionabsolute;top103px″tabindex=″13″onchange=″server″ width=″343px″height=″32px″maxlength=″11″readonly=″true″ autopostback=″true″enabled=″false″rows=″12″wrap=″true″> </asptextbox> </aspform> </body></pre>
表4<pre listing-type="program-listing"><HTML> <HEAD> <meta content=″Microsoft Visual Studio 7.0″name=″GENERATOR″> <meta content=″C#″name=″CODE_LANGUAGE″> <meta content=″JavaScript(ECMAScript)″ name=″vs defaultClientScript″> <meta content=″http//schemas.microsoft.com/intellisense/ie5″ name=″vs targetSchema″> </HEAD> </body> <form name=″WebForm1 Form″method=″post″ action=″/struts-new/WebForm1.action;jsessionid=aNU_GVh-dJab″> <input type=″submit″name=″btn01″id=″btn01″value=″确定″ style=″z-index103;left203px;positionabsolute;top216px″> <span name=″1b101″id=″1b101″oncLIck=″__doPostBack(′1b101′, ′_Click′)″style=″color#ff0000;font-family新细明 体;font-size12px;height20px;width200px;Z-INDEX912; LEFT203px;POSITIONabsolute;TOP186px″></span> <input type=″text″name=″txt01″id=″txt01″tabindex=″13″ disabled=″disabled″onchange=″__doPostBack(′txt01′, ′_Change′)″readonly=″readonly″ style=″height32px;width343px;z-index101;left162px; positionabsolute;top103px″/> <input type=″hidden″name=″eventTarget″/> <input type=″hidden″name=″eventArgument″/> </form> <script language=″JavaScript″type=″text/javascript″> <!-- function__doPostBack(eventTarget,eventArgument){ var theform=document.WebForm1 Form; theform.eventTarget.value=eventTarget; theform.eventArgument.value=eventArgument; theform.submit(); }</pre>
表5<pre listing-type="program-listing"> public ActionForward defaultPerform(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ApplicationException{ String eventTarget=(String)getProperty(form,″eventTarget″); String eventArgument=(String)getProperty(form,″eventArgument″); Class[]parameters=new Class[1]; parameters
=ActionForm.class; setForward(mapping.findForward(″next″)); try{ Method method=(Method)methodPool.get(eventTarget+eventArgument); if((method==null)&amp;&amp;(eventTarget!=null)&amp;&amp;(eventArgument!=null)) method=getClass().getMethod(eventTarget+eventArgument,parameters); if(method!=null){ methodPool.put(eventTarget+eventArgument,method); Object values[]=new Object[1]; values
=form; method.invoke(this,values); } } catch(Throwable t){ log.fatal(t); t.printStackTrace(); setForward(mapping.findForward(″error″)); } ApplicationException e=getException(); if(e!=null){ setException(null); throw e; } return(getForward()); }</pre>
为使本发明的内容更容易理解,以下将举一实例,说明依本发明较佳实施例的Java网页事件处理方法的流程。
请同时参照图2与图1所示,依本发明较佳实施例的Java网页事件处理方法首先为由服务器端100接受客户端200的网页请求(S101),接着网页产生模块112参照标记库111编译原始网页资料以产生HTML格式的网页资料,并将事件传递模块211嵌入在网页资料210中(S102),接着服务器端便将编译完成的网页资料210传送给客户端(S103),当客户端的使用者触发网页事件时(例如输入文字在textbox或按下button),事件传递模块211便将所触发的事件回传给服务器户端(S104),接着位于服务器端100的事件监听模块113接收事件传递模块211所回传的触发事件(S105),并呼叫相对应的程序120处理上述的触发事件(S106),最后由相对应的程序120处理触发事件并将处理结果储存在相对应于网页资料210的储存对象130(S107)。此外,如有需要,网页产生模块112可进一步读取储存在储存对象130的资料以产生后续的网页资料。
除此之外,依本发明较佳实施例的计算机可读取的记录介质是记录一Java网页事件处理系统,此Java网页事件处理系统应用于由一服务器端提供予一客户端的网页服务中,且依据上述步骤(请参照图2所示)处理Java网页事件。
由于依本发明的Java网页事件处理系统与方法是通过网页产生模块在产生网页资料时,判定网页资料所包含的网页事件是否需回传至服务器端处理,若需要,则将事件传递模块嵌入在欲传送给客户端的网页数据中;而事件传递模块可在客户端的使用者触发网页事件时,将所触发的事件回传给服务器端,以供后续处理,因此本发明的Java网页事件处理系统与方法能够及时反应客户端所触发的网页事件,并处理每一个网页事件,进而改善Java网页事件的处理。
以上所述仅为举例性,而非为限制性者。任何熟悉该项技术的人均可依据上述本发明的实施例进行等效的修改,而不脱离其精神与范畴。任何未脱离本发明的精神与范畴,而对其进行的等效修改或变更,均应包含于后附的权利要求中。
权利要求
1一种Java网页事件处理系统,其应用于由一服务器端提供给一客户端的网页服务中,包含一标记库,其用于定义标记的处理方式;一网页产生模块,其用于参照该标记库,并将一事件传递模块嵌入在欲传送给该客户端的一网页资料中,其中该事件传递模块用于将该网页资料中的对象所产生的一触发事件回传给该服务器端;以及一事件监听模块,其用于监听由该客户端所回传的触发事件。
2.如权利要求1所述的Java网页事件处理系统,其中该网页资料是由该网页产生模块所产生。
3.如权利要求2所述的Java网页事件处理系统,其中该事件监听模块进一步呼叫相对应的程序以处理该触发事件。
4.如权利要求3所述的Java网页事件处理系统,其中该触发事件的处理结果储存在一相对应的储存对象中。
5.如权利要求4所述的Java网页事件处理系统,其中该网页产生模块进一步读取该储存对象的内容以产生该网页资料。
6.一种Java网页事件处理方法,其应用于由一服务器端提供给一客户端的网页服务中,包含参照一标记库并将一事件传递模块嵌入在欲传送给该客户端的一网页资料中,其中该标记库是用于定义标记的处理方式,该事件传递模块则用于将该网页资料中的对象所产生的一触发事件回传给该服务器端;以及监听由该客户端所回传的该触发事件。
7.如权利要求6所述的Java网页事件处理方法,进一步包含产生该网页资料。
8.如权利要求6所述的Java网页事件处理方法,进一步包含呼叫相对应的程序以处理该触发事件。
9.一种Java网页事件处理方法,其是应用于由一服务器端提供给一客户端的网页服务中,包含参照一标记库并将一事件传递模块嵌入在欲传送给该客户端的一网页资料中,其中该标记库用于定义标记的处理方式,该事件传递模块则用于将该网页资料中的对象所产生的一触发事件回传给该服务器端;将该网页资料中的对象所产生的该触发事件回传给该服务器端;以及监听由该客户端所回传的该触发事件。
10.如权利要求9所述的Java网页事件处理方法,进一步包含接受该客户端的网页请求。
11.如权利要求9所述的Java网页事件处理方法,进一步包含产生该网页资料。
12.如权利要求9所述的Java网页事件处理方法,进一步包含传送该网页资料给该客户端。
13.如权利要求11所述的Java网页事件处理方法,进一步包含呼叫相对应的程序以处理该触发事件。
14.如权利要求13所述的Java网页事件处理方法,进一步包含处理该触发事件,并将处理结果储存在一相对应的储存对象中。
15.如权利要求14所述的Java网页事件处理方法,进一步包含读取该储存对象的内容以产生该网页资料。
全文摘要
本发明提供一种Java网页事件处理系统,其应用于由一服务器端提供给一客户端的网页服务中,包含定义标记(Tag)处理方式之一标记库(TagLibrary),一参照上述标记库,将一事件传递模块嵌入于欲传送予客户端的网页资料中的网页产生模块,其中上述事件传递模块是将网页资料中的对象所产生的触发事件回传给服务器端,以及一监听由客户端所回传的触发事件的事件监听模块。本发明亦揭露一种以上述系统实施的Java网页事件处理方法与计算机可读取的记录介质。
文档编号G06F9/445GK1519722SQ0310174
公开日2004年8月11日 申请日期2003年1月20日 优先权日2003年1月20日
发明者蔡吟定 申请人:鼎新电脑股份有限公司