一种实现Web访问的方法和Web服务器的制作方法

文档序号:6340924阅读:255来源:国知局
专利名称:一种实现Web访问的方法和Web服务器的制作方法
技术领域
本申请涉及网络技术处理领域,特别涉及一种实现Web访问的方法和Web服务器。
背景技术
在Web应用开发中,客户端向Web服务器发送请求,Web服务器接收该请求并由相应的Web组件进行处理,生成响应信息,Web服务器再将响应信息发送给客户端,从而实现 Web访问。其中,Web组件是Web服务器中完成特定功能的程序単元。目前,越来越多的Web 开发环境支持MVC^Model-View-Controller,模型-视图-控制器)的设计模式,用于描述应用程序结构以及程序结构中的各部分的职责和交互方式,模型用于封装数据,视图用于展示页面,通常实现数据的输入和输出功能,控制器主要用于完成业务逻辑。以MVC设计模式为例,现有的实现Web访问的方法中,首先,Web服务器接收客户端提交的用户请求后根据该请求的业务功能查找对应的Web组件(例如用户为登录请求时则查找处理登录请求的Web组件),然后创建Web组件实例及对应该实例的实例变量(该实例变量用于在实现Web访问过程中缓存与用户请求对应的请求数据及需要返回的响应数据);Web服务器将请求数据设置到实例变量中,再调用Web组件实例的方法以响应所述请求数据,并将该Web组件实例的方法的返回值(即是针对所述用户请求的响应数据)同样置于实例变量中,最后将存储有响应数据的实例变量再设置到Web上下文中,以便从Web上下文中获取到该响应数据渲染为Web页面输出给客户端。其中,客户端提交的请求数据以及Web服务器的响应数据会先置于Web上下文中,Web上下文是Web服务器中的存储区域, 负责不同Web组件之间的数据交換。从上述过程中可以看出,Web服务器在接收到用户请求进行处理时,是通过实例变量来获取请求数据及响应数据,但是Web组件通常对应多个方法,现有技术中每个方法的请求数据和响应数据都需要放在实例变量中,并且Web组件的方法中也没有对实例变量中的各种数据进行说明和解释,因此Web服务器就比较不容易区別实例变量中的请求数据和响应数据,也无法从ー个Web组件方法的參数中直观的获取请求数据和响应数据的属性, 例如,哪些请求数据或响应数据才对应客户端提交的用户请求。上述过程会进ー步増加了服务器在响应用户请求时的处理步骤,从而影响服务器的处理效率及处理性能。从程序设计者的角度,上述设计在语义上无法将功能设计直接表达在组件设计上,在语义上难以理解,导致程序可读性差。总之,目前需要本领域技术人员迫切解决的ー个技术问题就是如何能够创新的提出一种实现Web访问的方法,以解决现有技术中因为无法很好的区別实例变量中的请求数据和响应数据以及Web组件的方法中没有对应的參数说明,导致组件行为语义不明确的设计问题,以及基于实例变量绑定技术中,Web组件每次创建的处理效率和处理性能下降的问题
发明内容
本申请所要解决的技术问题是提供一种实现Web访问的方法,用以解决现有技术中因为无法很好的区別实例变量中的请求数据和响应数据以及Web组件的方法中没有对应的參数说明,导致Web组件行为语义不明确,以及Web服务器处理效率和处理性能下降的问题。本申请还提供了一种实现Web访问的系统,用以保证上述方法在实际中的实现及应用。为了解决上述问题,本申请公开了一种实现Web访问的方法,包括根据客户端请求查找相应的Web组件及Web组件的方法;按照所述Web组件方法中的形式參数声明从Web上下文中获取与所述客户端请求对应的请求数据;以所述请求数据,作为Web组件方法的输入參数,调用所述Web组件方法;依据所述Web组件方法中的返回參数声明,将所述Web组件方法调用完毕后的返回值存储至所述Web上下文中;将所述Web上下文中的返回值渲染为Web页面并在所述客户端上进行显示。本申请还公开了ー种Web服务器,包括查找单元,用于根据客户端请求查找相应的Web组件及Web组件的方法;获取单元,用于按照所述Web组件方法中的形式參数声明从Web上下文中获取与所述客户端请求对应的请求数据;调用方法単元,用于以所述请求数据作为Web组件方法的输入參数,调用所述Web 组件方法;存储单元,用于依据所述Web组件方法中的返回參数声明,将所述Web组件方法调用完毕后的返回值存储至所述Web上下文中;显示单元,用于将所述Web上下文中的返回值渲染为Web页面并在所述客户端上进行显示。与现有技术相比,本申请包括以下优点在本申请中,通过对Web组件的方法按语义进行设计,更准确的在程序级别表达功能设计的语义。预先设置形式參数声明和返回參数声明,形式參数声明可以表示从Web 上下文中获取与客户端请求对应的请求数据的来源,而返回參数声明可以表示当调用Web 组件的方法完毕之后生成的返回值,应该存储于所述Web上下文中的哪个范围,Web服务器就能够很容易区分出请求数据的属性以及处理当前客户端提交请求需要获取哪些请求数据。同吋,在调用组件的方法之后也很容易找到存储位置,这样就减少了服务器在响应用户请求时的处理步骤,从而提升服务器的处理效率及处理性能。进ー步的,在调用Web组件的方法之前还可以判断是否存在实例,如果有,则直接调用已经存在的实例对应的Web组件的方法,进ー步可以节省创建Web组件的方法的实例的步骤,优化Web服务器的性能。当然, 实施本申请的任ー产品并不一定需要同时达到以上所述的所有优点。


为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的ー些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本申请的ー种实现Web访问的方法实施例1的流程图;图2是本申请的ー种实现Web访问的方法实施例2的流程图;图3是本申请的ー种实现Web访问的方法实施例3的流程图;图4是本申请的ー种实现Web访问的装置实施例1的结构框图;图5是本申请的ー种实现Web访问的装置实施例2的结构框图;图6是本申请的ー种实现Web访问的装置实施例3的结构框图;。
具体实施例方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本申请可用于众多通用或专用的计算装置环境或配置中。例如个人计算机、Web 服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。本申请的主要思想之一可以包括,在Web组件的方法中预先设置形式參数声明和返回參数声明,形式參数声明可以表示从Web上下文中获取与客户端请求对应的请求数据的来源,而返回參数声明可以表示当调用Web组件的方法完毕之后生成的返回值,应该存储于所述Web上下文中的哪个范围,因此Web服务器就很容易区分出请求数据的属性以及处理当前客户端提交请求需要从Web上下文中获取哪些请求数据,同吋,在调用Web组件的方法之后也很容易找到返回值在Web上下文的存储位置,这样就减少了 Web服务器在响应用户请求时的处理步骤,从而提升Web服务器的处理效率及处理性能。參考图1,示出了本申请ー种实现Web访问的方法实施例1的流程图,可以包括以下步骤步骤101 =Web服务器根据客户端请求查找相应的Web组件及Web组件的方法。在进行Web访问吋,Web服务器接收客户端提交的用户请求,可以根据该请求的 URL (Uniform Resource Locator,统ー资源定位符)查找到处理所述客户端请求的Web组件,Web组件中包括有相应的业务方法,即Web组件的方法。例如,如果Web服务器检测到客户端请求为提交订单请求,则Web服务器会相应的查找到处理订单的Web组件。这里查找的Web组件随着客户端请求的业务功能不同而表示不同的Web组件。本申请实施例中提到的方法是相对于Web组件来说的,用来表示某个Web组件的行为。步骤102 按照所述Web组件的方法中的形式參数声明从Web上下文中获取与所述客户端请求对应的请求数据。在本申请实施例中,Web组件的方法需要包括形式參数声明,根据该形式參数声明可以从Web上下文中获取与所述客户端请求对应的请求数据。需要说明的是,Web组件的方法需要预先设置形式參数声明,在实际应用中形式參数声明可以体现出请求数据的来源及名称等信息,以便于Web服务器按照该形式參数声明可以从Web上下文中获取请求数据。但是形式參数声明只要在内容上可以示意出请求数据即可,关于形式參数声明的具体内容在下一个实施例将进行详细解释。在设置好形式參数声明之后,Web服务器中的Web组件按照形式參数声明中的内容就能够获取到请求数据。所述Web上下文是Web服务器中的存储区域,它分为不同作用的几个范围,用于存储不同类型的数据,不同范围存储的数据对于不同的Web组件来讲具有不同的可见性。例如Parameter范围只能存储客户端本次请求提交的数据;Request范围能存储本次请求到响应结束前不同Web组件之间共享的数据;Cookie范围可以从客户端Cookie中存储或获取当前用户多次请求间共享的数据;Session范围可以存储或获取当前用户多次请求间共享的数据;Application范围可以存储或获取ffeb krver运行时所有在线的用户间共享的数据。步骤103 以所述请求数据作为Web组件方法的输入參数,调用所述Web组件方法。将步骤102中获取到的请求数据作为Web组件方法的输入參数,调用步骤101查找到的Web组件方法,以执行该Web组件方法并在该方法调用完毕之后获得该方法的返回值。该返回值即是Web服务器对客户端提交的请求进行响应之后的响应数据。步骤104 依据所述Web组件方法中的返回參数声明,将所述Web组件方法调用完毕后的返回值存储至所述Web上下文中。需要说明的是,所述Web组件方法中除了所述形式參数声明,还包括返回參数声明。形式參数声明可以表示出从Web上下文中获取哪些请求数据,而返回參数声明则可以表示出将Web组件方法的返回值存储于所述Web上下文中的哪些区域。因此本步骤Web服务器在Web组件的方法执行完毕之后,会按照返回參数声明表示出的存储区域将返回值存于所述Web上下文中。步骤105 将所述Web上下文中的返回值渲染为Web页面并在所述客户端上进行
显示 O在本步骤中则由Web服务器中负责渲染页面的其他组件从所述Web上下文中获得返回值,并将该返回值渲染为Web页面并将该页面在客户端上进行显示,以完成Web访问的过程。需要说明的是,本申请实施例中提到的Web组件,在MVC的设计模式中,因为能够处理业务请求的Web组件称为控制器,而相应的Web组件的方法为控制器函数,以用户的登录行为为例,根据用户的登录页面对应的URL查找到相应的控制器,控制器中对应有响应登录行为的函数。因此,当本申请实施例应用于MVC的设计模式中吋,所述的Web组件即是控制器,而Web组件的方法则为控制器函数,而控制器及控制器函数的处理流程则与本申请实施例中介绍的一致。在本申请实施例中,通过预先设置的形式參数声明表示请求数据在Web上下文中存储位置,并通过预先设置的返回參数声明表示执行Web组件的方法之后得到的返回值需要存储于Web上下文中的存储区域,这样就能使得Web组件可以直接依据方法中的形式參数声明及返回參数声明直接操作属于自己的相关数据,同吋,Web组件也不需要再依赖实例变量主动获取请求数据等,可以由Web服务器中的Web容器依据形式參数声明为其注入请求数据作为输入參数,这样也会减少Web服务器端的处理步骤,从而提升Web服务器处理客户端请求的处理效率和处理性能。參见图2,示出了本申请ー种实现Web访问的方法具体实施例2的流程图,可以包括以下步骤步骤201 =Web服务器根据客户端请求查找相应的Web组件及Web组件的方法。本步骤在实际应用中可与实施例1相同,在此不再赘述。步骤202 =Web服务器解析所述形式參数声明以获得其中的形式參数注解名和形式參数注解属性;所述形式參数注解名用于表示请求数据在Web上下文中的数据来源,所述形式參数注解属性用于表示请求数据在所述数据来源中的数据项。需要说明的是,在预先设置方法的形式參数声明以及返回參数声明吋,可以采用现有技术的注解技木。而Web服务器解析形式參数声明及后续的返回參数声明吋,则可以采用反射技术进行解析,以得到形式參数声明中的形式參数注解名和形式參数注解属性。 这里的形式參数注解名可以表示出请求数据的来源,即是请求数据在Web上下文中的存储位置;而形式參数注解属性则表示在数据来源中哪些数据项是请求数据。下面以面向对象编程语言的Java语言为例,预先设置的Web组件的方法可为如下格式Public[ReturnAnnotation]ReturnType MethodName([Annotationl(annotationProperty;Typel Argument1,Annotation2(annotationProperty; Type2 Argument2,...AnnotationN(annotationProperty)TypeN ArgumentN])其中,MethodName是该业务方法的方法名,Annotationl是形式參数注解名,表示请求数据的来源;armotatiorfroperty是形式參数注解属性,表示请求參数的数据项名称 Argumentl是形式參数名,一般可以不參与绑定解析逻辑,但也可在注解属性缺失吋,用来表示请求数据的数据项。需要说明的是,根据方法处理的业务不同,可以设计零个或多个形式參数来表示请求数据。例如,Argument2, ... , ArgumentN就表明方法有N个形式參数声明。所述的Typel是形式參数声明中还可以包括的形式參数类型,表示了请求数据需要满足的数据类型。另外,所述ReturnAnnotation是方法的返回參数声明中的返回參数注解,用来表示返回值在Web上下文存储时的存储位置;ReturnType是返回參数声明中还可以包括的返回參数类型,即是表示返回值的数据类型。需要说明的是,上述伪代码只是方法的形式參数声明及返回參数声明的ー个具体例子,在实际应用过程中,只要形式參数声明和返回參数声明能够示意出请求数据,输入绑定逻辑,及返回值,输出绑定逻辑即可,其实现形式不限。
8
另外,在形式參数声明或者返回參数声明中部分或全部属性可以缺省。例如可以没有形式參数注解名,或没有返回參数注解等。在上述情况下,Web服务器解析形式參数声明或者返回參数声明吋,则采用形式參数声明或者返回參数声明默认的属性。例如,如果没有形式參数注解名,则默认请求数据来源于客户端本次提交的数据。具体应用中可以使用方括号[...]表明形式參数声明和返回參数声明省略,即方法可以没有形式參数声明,也可以没有返回数据注解。步骤203 依据所述形式參数注解名查找到所述Web上下文中包括请求数据的数据范围。在实施例1中已经介绍了 Web上下文中的各个范围,那么本步骤即是根据形式參数注解名定位Web上下文中包括请求数据的ー个范围。例如,如果形式參数注解名为 parameter",则表示请求数据来源于客户端本次提交的数据,此时会定位Web上下文中的 parameter范围;而“Orequest”则表示请求数据来源于Web上下文中的request范围, session”则表示请求数据来源于Web上下文中的session范围。需要说明的是,如果形式參数声明中没有形式參数注解名,则采用该Web组件的方法预先定义的默认数据来源信息。例如,形式參数声明为“public boolean login (String username, String password) ”,其中没有形式參数注解名,就可以默认为 Web上下文的parameter范围中的数据,即用户本次请求提交的数据,数据项名称分別未
し username,‘,しpassword"。因为请求数据可以是Web上下文中不同范围中的数据,所以请求数据可以是本次请求提交的数据,也可以是存储在Web服务器中与本次请求相关的数据。步骤204 依据所述形式參数注解属性从所述数据范围中查找到与客户端请求对应的数据项。假设预先设置“imame”为形式參数注解属性,用来表示客户端提交的HTTP參数名;而Mring是形式參数类型,表示是请求数据的类型需要是字符串;而以username作为形式參数名,表示登录的用户名;boolean表示方法的返回值,代表本次登录是否成功。在形式參数注解属性(〃 uname")省略的情况下,则用上述形式參数名username替代。则满足上述条件的的形式參数声明则如下所示puolic boolean 丄ogin(String username, string password)0在实际应用中,假设形式參数注解名表示请求数据为客户端本次提交的数据,而 unname和passwd是存储请求数据对应的形式參数注解名,即表示客户端本次提交的数据所存储的数据项。因此用户在浏览器上的登陆页面中相应的输入框中输入用户名或密码之后,输入的用户名和密码就对应着urmame和passwd等这些数据项,即是用户本次输入的用户名和密码会存储于unname和passwd的数据项。下面再举ー个实际中的具体例子来说明。假设注册方法(register)中存在形式參数声明为“OParameterC' user") ”,则该形式參数声明表示要从HTTP參数获取名为 user的数据。这里的形式參数类型是her,其指示Web服务器中的Web框架从Web上下文中获取到的请求数据要符合her类的结构类型。根据her的属性构成,要获取到“ user” 的请求数据,客户端提交的HTTP參数名需包含注解的參数键值"user"及每个属性名。在上述情况下,HTML表单代码如下
<input name =” user, username “ ><input name =" user, password" ><input name =" user, email" >或等价的QueryString格式参数,例如user, username = Jacky&user. password = 123456&user. email = jacky@abc. com。依据上述客户端请求,本步骤从Web上下文中获取到的请求数据就是Jacky, 123456 禾ロ jackyfebc. com。步骤205 以所述请求数据作为Web组件方法的输入參数,调用所述Web组件方法。步骤206:解析所述返回參数声明获取其中的返回參数注解;所述返回參数注解用于表示所述Web上下文的范围。在调用Web组件方法之后获得返回值,在将返回值存储于Web上下文对应的存储区域之前,需要先获取到返回參数声明中的返回參数注解,该返回參数注解用于表示该返回值需要存储的Web上下文的范围。需要说明的是,所述返回參数声明还可以包括返回參数类型,该返回參数类型可以表示出请求数据的类型,但是该返回參数类型对于实现本申请实施例来讲并不是必须的。返回參数声明也是在预先设置好的,例如publiciSessionC click Times" ) int click()其中,click为方法名,表示点击操作;其中的@SeSSi0n(〃 click Times")是返回參数注解,表示将返回值存储于Web上下文中的session范围中的click Times变量名。 Int即是返回參数类型,即方法的返回值类型。需要说明的是,如果没有返回參数声明,如用“void”关键词声明,则表示该Web组件不用输出数据给客户端,则在直接执行该Web组件的方法后,直接返回到客户端。例如public void int click()步骤207 将所述Web组件方法调用完毕后的返回值存储于所述Web上下文的范围中。本步骤则在返回參数注解示意出的Web上下文的范围存储返回值。步骤208 将所述Web上下文中的返回值渲染为Web页面并在所述客户端上进行
MzjN O在本申请实施例中,Web服务器通过解析出Web组件的方法中包括的形式參数声明和返回參数声明,获得形式參数注解名和形式參数注解属性,以及返回參数注解和返回类型,就可以根据形式參数注解名和形式參数注解属性从Web上下文中获取请求数据,也可以根据返回參数注解将Web组件的方法执行后的返回值存储于Web上下文中。采用本实施例的方法可以精简Web服务器的处理流程,从而更好将功能设计或领域设计在代码级别实现,提高Web组件代码的可读性和维护性;并可以提高Web服务器的处理速度和处理性能。參见图3,示出了本申请ー种实现Web访问的方法具体实施例3的流程图,可以包括以下步骤步骤301 根据客户端请求查找相应的Web组件及Web组件的方法。步骤302 解析所述形式參数声明以获得其中的形式參数注解名、形式參数注解属性和形式參数类型;所述形式參数注解名用于表示请求数据在Web上下文中的数据来源,所述形式參数注解属性用于表示请求数据在所述数据来源中的数据项,所述形式參数类型表示请求数据需要满足的数据类型。在本步骤中Web服务器除了解析形式參数声明会得到形式參数注解名和形式參数注解属性之外,还会解析得到形式參数类型,所述形式參数类型表示请求数据需要满足的数据类型。例如,所述形式參数类型可以是int,表示整型数据,或者string可以表示请求数据需要为字符串。步骤303 依据所述形式參数注解名查找到所述Web上下文中包括请求数据的数据范围。步骤304 依据所述形式參数注解属性从所述数据范围中查找到与客户端请求对应的数据项。步骤305 判断所述形式參数类型与所述请求数据的实际类型是否一致,如果是, 则进入步骤307,如果否,则进入步骤306。本实施例在得到请求数据之后,先对请求数据的实际数据类型进行判断,即是判断请求数据的实际类型与形式參数类型是否一致。步骤306 将实际类型的请求数据转换为所述形式參数类型的请求数据,进入步骤 307。当请求数据的实际数据类型与形式參数类型不一致的时候,需要将实际类型的请求数据转换成形式參数类型的请求数据,并后续将转换后的形式參数类型的请求数据作为最终的请求数据。此步骤成为“參数绑定”。步骤307 判断与所述客户端请求对应的Web组件方法是否存在实例,如果是,则进入步骤309,如果否,则进入步骤308。其中,所述Web组件的方法每一次执行的时候,都会产生ー个实例,而这个产生的实例所需执行的步骤即是该方法所描述的步骤。因此如果查找到的Web组件方法已经存在实例,说明该Web组件方法已经被调用过,那么在本实施例中就无需再为该Web组件方法创建新的实例,直接调用已经存在的实例的Web组件方法即可。通过以上描述可以看出,本实施例中创建的实例可以共享,即是在调用Web组件的方法吋,已经创建过的Web组件的实例会由Web服务器进行缓存,具体可以暂存在Web服务器的内存单元中,下次有相同的功能请求吋,就无需再重新创建。其中,这里相同的功能请求指的是业务功能相同的客户端请求,例如,不同客户端发送的请求都表示“登录”业务, 那么虽然这些请求是不同客户端发送的,也称为相同的功能请求。而对于同一个客户端来讲,如果发送的两个用户请求分別表示的业务功能为“登录”和“提交订単”,则这两个请求是不同的功能请求。步骤308 创建与所述客户端请求对应的Web组件实例,进入步骤309。需要说明的是,如果没有实例存在,说明该Web组件的方法还未被调用过,那么本次在调用该方法之前,还需要先创建与所述客户端请求对应的Web组件实例,即是属于该Web组件的方法的实例。步骤309 以所述请求数据作为Web组件方法的输入參数,调用所述Web组件方法。最后再以请求数据作为Web组件方法的输入參数,调用所述Web组件方法,此处的请求数据可以是转换后的形式參数类型的请求数据,也可以是实际查找到的Web上下文中的数据项。步骤310 依据所述Web组件方法中的返回參数声明,将所述Web组件方法调用完毕后的返回值存储至所述Web上下文中。Web组件的方法调用完毕之后,就会自动生成该方法的返回值,而在本实施例中, 这个返回值即是对于请求数据的响应数据。那么再依据Web组件方法中预先设置好的返回參数声明,将所述Web组件方法调用完毕后的返回值存储至所述Web上下文中对应的范围。步骤311 将所述Web上下文中的返回值渲染为Web页面并在所述客户端上进行
iU>/J\ οWeb服务器再将Web上下文中的返回值渲染为Web页面,并在所述客户端上进行显
7J\ ο在本实施例中,可以通过查找Web服务器中是否已存储相应的Web组件的实例进一步提升在处理相同客户端请求时的Web服务器的处理效率。需要说明的是,本申请中介绍的实施例中所描述的Web组件在应用于MVC框架中时为控制器,而Web组件的方法则对应为控制器函数,在实际应用中互相參见即可。对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作順序的限制,因为依据本申请,某些步骤可以采用其他順序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。与上述本申请ー种实现Web访问的方法实施例1所提供的方法相对应,參见图4, 本申请还提供了 ー种实现Web访问的Web服务器实施例1,在本实施例中,该Web服务器具体可以包括查找单元401,用于根据客户端请求查找相应的Web组件及Web组件的方法。获取单元402,用于按照所述Web组件方法中的形式參数声明从Web上下文中获取与所述客户端请求对应的请求数据。调用方法単元403,用于以所述请求数据作为Web组件方法的输入參数,调用所述 Web组件方法,完成输入绑定。存储单元404,用于依据所述Web组件方法中的返回參数声明,将所述Web组件方法调用完毕后的返回值存储至所述Web上下文中,完成输出绑定。显示单元405,用于将所述Web上下文中的返回值渲染为Web页面并在所述客户端上进行显示。本实施例中,通过预先设置的形式參数声明表示请求数据在Web上下文中存储位置,并通过预先设置的返回參数声明表示执行Web组件的方法之后得到的返回值需要存储于Web上下文中的存储区域,这样就能使得Web组件可以直接依据方法中的形式參数声明及返回參数声明直接操作属于自己的相关数据,同吋,Web组件也不需要再依赖实例变量主动获取请求数据等,可以由Web服务器中的Web容器依据形式參数声明为其注入请求数据作为输入參数,这样也会减少Web服务器端的处理步骤和控制器实例的创建,从而提升Web 服务器处理客户端请求的处理效率和处理性能。与上述本申请ー种实现Web访问的方法实施例2所提供的方法相对应,參见图5, 本申请还提供了一种实现Web访问的Web服务器优选实施例2,在本实施例中,该Web服务器具体可以包括查找单元401,用于根据客户端请求查找相应的Web组件及Web组件的方法。在本实施例中,所述获取単元402具体可以包括第一解析模块501,用于解析所述形式參数声明以获得其中的形式參数注解名和形式參数注解属性;所述形式參数注解名用于表示请求数据在Web上下文中的数据来源, 所述形式參数注解属性用于表示请求数据在所述数据来源中的数据项。第一查找模块502,用于依据所述形式參数注解名查找到所述Web上下文中包括请求数据的数据范围。第二查找模块503,用于依据所述形式參数注解属性从所述数据范围中查找到与客户端请求对应的数据项。调用方法単元403,用于以所述请求数据作为Web组件方法的输入參数,调用所述 Web组件方法;在本实施例中,所述存储単元404具体可以包括第二解析模块504,用于解析所述返回參数声明获取其中的返回參数注解;所述返回參数注解用于表示所述Web上下文的范围;存储模块505,用于将所述Web组件方法调用完毕后的返回值存储于所述Web上下文的范围中。显示单元405,用于将所述Web上下文中的返回值渲染为Web页面并在所述客户端上进行显示。在本实施例中,Web服务器通过解析出Web组件的方法中包括的形式參数声明和返回參数声明,获得形式參数注解名和形式參数注解属性,以及返回參数注解,就可以根据形式參数注解名和形式參数注解属性从Web上下文中获取请求数据,也可以根据返回參数注解将Web组件的方法执行后的返回值存储于Web上下文中。采用本实施例的方法可以将功能设计直接体现在Web组件的程序设计上,提高代码的语义性和可读性;并可以精简Web 服务器的处理流程,从而可以提高Web服务器的处理速度和处理性能。与上述本申请ー种实现Web访问的方法实施例3相对应,本申请还提供了 ー种实现Web访问Web服务器的实施例3,在本实施例中,所述Web服务器具体可以包括查找单元401,用于根据客户端请求查找相应的Web组件及Web组件的方法。第一解析模块501,用于解析所述形式參数声明以获得其中的形式參数注解名和形式參数注解属性;所述形式參数注解名用于表示请求数据在Web上下文中的数据来源, 所述形式參数注解属性用于表示请求数据在所述数据来源中的数据项。第一查找模块502,用于依据所述形式參数注解名查找到所述Web上下文中包括请求数据的数据范围。第二查找模块503,用于依据所述形式參数注解属性从所述数据范围中查找到与客户端请求对应的数据项。判断模块601,用于判断所述形式參数类型与所述请求数据的实际类型是否一致; 如果是,则触发所述调用方法単元。转换模块602,用于当所述判断模块的结果为否时,将实际类型的请求数据转换为所述形式參数类型的请求数据。调用方法単元403,用于以所述请求数据作为Web组件方法的输入參数,调用所述 Web组件方法;存储单元404,用于依据所述Web组件方法中的返回參数声明,将所述Web组件方法调用完毕后的返回值存储至所述Web上下文中;判断単元603,用于判断与所述客户端请求对应的Web组件方法是否存在实例;如果是,则直接调用所述Web组件实例的方法;创建实例単元604,用于当所述判断単元的结果为否时,创建与所述客户端请求对应的Web组件实例。缓存单元605,用于将所述Web组件实例进行缓存,以便于下一次接收到相同的客户端请求吋,直接调用所述Web组件实例的Web组件方法。显示单元405,用于将所述Web上下文中的返回值渲染为Web页面并在所述客户端上进行显示。需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相參见即可。 对于Web服务器类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处參见方法实施例的部分说明即可。最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另ー个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者順序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或
者设备所固有的要素。在没有更多限制的情况下,由语句“包括ー个......”限定的要素,
并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。为了描述的方便,描述以上装置时以功能分为各种単元分別描述。当然,在实施本申请时可以把各単元的功能在同一个或多个软件和/或硬件中实现。通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备 (可以是个人计算机,Web服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。以上对本申请所提供的一种实现Web访问的方法及Web服务器进行了详细介绍, 本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
权利要求
1.一种实现Web访问的方法,其特征在干,包括根据客户端请求查找相应的Web组件及Web组件的方法;按照所述Web组件方法中的形式參数声明从Web上下文中获取与所述客户端请求对应的请求数据;以所述请求数据,作为Web组件方法的输入參数,调用所述Web组件方法; 依据所述Web组件方法中的返回參数声明,将所述Web组件方法调用完毕后的返回值存储至所述Web上下文中;将所述Web上下文中的返回值渲染为Web页面并在所述客户端上进行显示。
2.根据权利要求1所述的方法,其特征在干,所述按照所述Web组件方法中的形式參数声明从Web上下文中获取与所述客户端请求对应的请求数据,具体包括解析所述形式參数声明以获得其中的形式參数注解名和形式參数注解属性;所述形式參数注解名用于表示请求数据在Web上下文中的数据来源,所述形式參数注解属性用于表示请求数据在所述数据来源中的数据项;依据所述形式參数注解名查找到所述Web上下文中包括请求数据的数据范围; 依据所述形式參数注解属性从所述数据范围中查找到与客户端请求对应的数据项。
3.根据权利要求2所述的方法,其特征在干,所述形式參数声明还包括形式參数类型,则所述依据所述形式參数名从所述数据范围中查找到与客户端请求对应的请求数据之后,还包括判断所述形式參数类型与所述请求数据的实际类型是否一致;如果是,则执行所述调用所述Web组件方法的步骤,如果否,则将实际类型的请求数据按规则转换为所述形式參数类型要求的数据。
4.根据权利要求1所述的方法,其特征在干,所述依据所述Web组件方法中的返回參数声明,将所述Web组件方法调用完毕后的返回值存储至所述Web上下文中,具体包括解析所述返回參数声明获取其中的返回參数注解;所述返回參数注解用于表示所述 Web上下文的范围;将所述Web组件方法调用完毕后的返回值存储于所述Web上下文的范围中。
5.根据权利要求1所述的方法,其特征在干,所述调用所述Web组件方法之前,还包括判断与所述客户端请求对应的Web组件方法是否存在实例;如果是,则直接调用所述 Web组件实例的方法,如果否,则创建与所述客户端请求对应的Web组件实例。
6.根据权利要求5所述的方法,其特征在于,还包括将所述Web组件实例进行缓存,以便于下一次接收到相同的客户端请求吋,直接调用所述Web组件实例的Web组件方法。
7.—种Web服务器,其特征在干,所述Web服务器包括查找单元,用于根据客户端请求查找相应的Web组件及Web组件的方法; 获取单元,用于按照所述Web组件方法中的形式參数声明从Web上下文中获取与所述客户端请求对应的请求数据;调用方法単元,用于以所述请求数据作为Web组件方法的输入參数,调用所述Web组件方法;存储单元,用于依据所述Web组件方法中的返回參数声明,将所述Web组件方法调用完毕后的返回值存储至所述Web上下文中;显示单元,用于将所述Web上下文中的返回值渲染为Web页面并在所述客户端上进行显不。
8.根据权利要求7所述的Web服务器,其特征在干,所述获取単元具体包括第一解析模块,用于解析所述形式參数声明以获得其中的形式參数注解名和形式參数注解属性;所述形式參数注解名用于表示请求数据在Web上下文中的数据来源,所述形式參数注解属性用于表示请求数据在所述数据来源中的数据项;第一查找模块,用于依据所述形式參数注解名查找到所述Web上下文中包括请求数据的数据范围;第二查找模块,用于依据所述形式參数注解属性从所述数据范围中查找到与客户端请求对应的数据项。
9.根据权利要求8所述的Web服务器,其特征在干,所述获取单元还包括判断模块,用于判断所述形式參数类型与所述请求数据的实际类型是否一致;如果是, 则触发所述调用方法単元;转换模块,用于当所述判断模块的结果为否时,将实际类型的请求数据转换为所述形式參数类型的请求数据。
10.根据权利要求7所述的Web服务器,其特征在干,所述存储単元具体包括第二解析模块,用于解析所述返回參数声明获取其中的返回參数注解;所述返回參数注解用于表示所述Web上下文的范围;存储模块,用于将所述Web组件方法调用完毕后的返回值存储于所述Web上下文的范围中。
11.根据权利要求7所述的Web服务器,其特征在于,还包括判断単元,用于判断与所述客户端请求对应的Web组件方法是否存在实例;如果是,则直接调用所述Web组件实例的方法;创建实例単元,用于当所述判断単元的结果为否时,创建与所述客户端请求对应的Web 组件实例。
12.根据权利要求11所述的Web服务器,其特征在于,还包括缓存单元,用于将所述Web组件实例进行缓存,以便于下一次接收到相同的客户端请求吋,直接调用所述Web组件实例的Web组件方法。
全文摘要
本申请提供了一种实现Web访问的方法和Web服务器,所述方法包括根据客户端请求查找相应的Web组件及Web组件的方法;按照Web组件方法中的形式参数声明从Web上下文中获取与客户端请求对应的请求数据;以请求数据作为Web组件方法的输入参数,调用Web组件方法;依据Web组件方法中的返回参数声明,将Web组件方法调用完毕后的返回值存储至Web上下文中;将Web上下文中的返回值渲染为Web页面并在客户端上进行显示。本申请实施例公开的方法和Web服务器,可以解决因为无法很好的区别Web组件实例变量中的请求数据和响应数据以及Web组件的方法中没有对应的参数说明,导致Web组件无法准确表达设计语义的问题,无法直接体现功能设计和领域设计,以及Web服务器处理效率和处理性能下降的问题。
文档编号G06F17/30GK102567400SQ201010617580
公开日2012年7月11日 申请日期2010年12月31日 优先权日2010年12月31日
发明者何坤 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1