CN103123593B - Java应用服务器及处理Web业务的方法 - Google Patents
Java应用服务器及处理Web业务的方法 Download PDFInfo
- Publication number
- CN103123593B CN103123593B CN201110367690.0A CN201110367690A CN103123593B CN 103123593 B CN103123593 B CN 103123593B CN 201110367690 A CN201110367690 A CN 201110367690A CN 103123593 B CN103123593 B CN 103123593B
- Authority
- CN
- China
- Prior art keywords
- service
- service logic
- view
- labelling
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/248—Presentation of query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
- G06F16/972—Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computational Linguistics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种Java应用服务器及处理Web业务的方法,属于互联网技术领域。服务器包括:网络框架层、应用容器层和页面模板层;网络架构层,用于获取客户端所发送的访问Web业务的统一资源定位符;应用容器层包括:获取模块,用于根据统一资源定位符查找统一资源定位符与业务逻辑间对应关系得到业务逻辑;运行模块,用于运行业务逻辑得到数据模型及视图名称;页面模板层包括:查找模块,用于根据视图名称查找视图名称与视图对象间对应关系得到视图对象;调用输出模块,用于调用视图对象对应的方法将数据模型渲染输出到客户端进行显示。本发明所提供的服务器具有较高的吞吐量,由于结构简洁,使得业务逻辑的部署和运营维护难度较低,且易于二次开发。
Description
技术领域
本发明涉及互联网技术领域,特别涉及一种Java应用服务器及处理Web业务的方法。
背景技术
Java应用服务器被广泛地用于实现动态Web服务端应用、承载并整合各种后台业务逻辑。现有的各种Java应用服务器,如Resin(一种开源的Java应用服务器)、WebSphere(一种商业的Java应用服务器)或TAC(一种基于开源代码内核进行二次开发的Java应用服务器)等,均存在着以下问题:(1)体积和复杂度较大;(2)开发和维护所需的人力成本过高,获得商业授权和支持所需的资金成本过高;(3)运营性能一般,不能完全满足互联网业务对处理速度的要求。
发明内容
为了解决现有一些Java应用服务器所存在的问题,本发明实施例提供了一种Java应用服务器及处理Web业务的方法。所述技术方案如下:
一种Java应用服务器,所述Java应用服务器包括:网络框架层、应用容器层和页面模板层;
所述网络架构层,用于获取客户端所发送的访问Web业务的统一资源定位符;
所述应用容器层包括:
获取模块,用于根据所述统一资源定位符查找统一资源定位符与业务逻辑间对应关系得到业务逻辑;
运行模块,用于运行所述业务逻辑得到数据模型及视图名称;
所述页面模板层包括:
查找模块,用于根据所述视图名称查找视图名称与视图对象间对应关系得到视图对象;
调用输出模块,用于调用所述视图对象对应的方法将所述数据模型渲染输出到所述客户端进行显示。
所述网络架构层包括:
接收器,用于接收客户端发送的连接请求,与所述客户端建立连接并为所述客户端创建会话对象;
处理器,用于检测与所述会话对象关联的访问Web业务的请求事件,当检测到与所述会话对象关联的访问Web业务的请求事件时,读取所述访问Web业务的请求事件;
过滤器,用于解析所述访问Web业务的请求事件得到访问Web业务的统一资源定位符信息。
所述应用容器层还包括:控制器Controller、请求Request、拦截器Interceptor、自动装配Autowired、组件Component、工厂Factory和服务Service中一种或多种标记,所述标记用于识别业务逻辑。
所述应用容器层还包括:
业务逻辑部署模块,用于指定业务逻辑在所述应用容器层内的类路径;
扫描模块,用于扫描所述类路径下的所有业务逻辑,采用反射调用技术Reflection获取Controller、Interceptor、Component、Factory或者Service标记的业务逻辑,并实例化所获取的业务逻辑。
所述应用容器层还包括:
第一处理模块,用于对Controller标记的业务逻辑,采用Reflection获取所述Controller标记的业务逻辑内由Request标记的方法,并将所述由Request标记的方法与已实例化的业务逻辑的对象进行关联;
第二处理模块,用于对Autowired标记的业务逻辑,采用Reflection记录所述Autowired标记的业务逻辑所依赖的协作者类,并装配所述Autowired标记的业务逻辑之间的依赖关系。
所述应用容器层还包括:
前拦截模块,用于对所述业务逻辑进行前置处理,当前置处理的结果为第一数值时,通知所述运行模块执行运行所述业务逻辑得到数据模块及视图名称的操作;或/和
后拦截模块,用于对所述运行模块得到的所述数据模型及所述视图名称进行修改。
所述页面模板层还包括:
编译模块,用于扫面预设的模版语言页面,并调用编译器将所述模版语言页面编译为Java语言源文件;
视图对象生成模块,用于扫描所述Java语言源文件,并采用自定义的类加载器加载及实例化所述Java语言源文件,所述实例化后的Java语言源文件为视图对象;
缓存模块,用于缓存所述视图对象的视图名称与所述视图对象间对应关系,以便所述查找模块可以根据所述视图名称查找视图名称与视图对象间对应关系得到视图对象。
一种处理Web业务的方法,所述方法包括:
获取客户端所发送的访问Web业务的统一资源定位符;
根据所述统一资源定位符查找统一资源定位符与业务逻辑间对应关系得到业务逻辑;
运行所述业务逻辑得到数据模型及视图名称;
根据所述视图名称查找视图名称与视图对象间对应关系得到视图对象;
调用所述视图对象对应的方法将所述数据模型渲染输出到所述客户端进行显示。
所述获取客户端所发送的访问Web业务的统一资源定位符包括:
接收客户端发送的连接请求,与所述客户端建立连接并为所述客户端创建会话对象;
检测与所述会话对象关联的访问Web业务的请求事件,当检测到与所述会话对象关联的访问Web业务的请求事件时,读取所述访问Web业务的请求事件;
解析所述访问Web业务的请求事件得到访问Web业务的统一资源定位符信息。
所述方法还包括:控制器Controller、请求Request、拦截器Interceptor、自动装配Autowired、组件Component、工厂Factory和服务Service中一种或多种标记,所述标记用于识别业务逻辑。
所述方法还包括:
指定业务逻辑在所述应用容器层内的类路径;
扫描所述类路径下的所有业务逻辑,采用反射调用技术Reflection获取Controller、Interceptor、Component、Factory或者Service标记的业务逻辑,并实例化所获取的业务逻辑。
所述方法还包括:
对Controller标记的业务逻辑,采用Reflection获取所述Controller标记的业务逻辑内由Request标记的方法,并将所述由Request标记的方法与已实例化的业务逻辑的对象进行关联;
对Autowired标记的业务逻辑,采用Reflection记录所述Autowired标记的业务逻辑所依赖的协作者类,并装配所述Autowired标记的业务逻辑之间的依赖关系。
所述运行所述业务逻辑得到数据模型及视图名称之前,所述方法还包括:
对所述业务逻辑进行前置处理,当前置处理的结果为第一数值时,执行运行所述业务逻辑得到数据模型及视图名称的操作。
所述运行所述业务逻辑得到数据模型及视图名称之后,所述方法还包括:
对所述数据模型及所述视图名称进行修改。
所述方法还包括:
扫面预设的模版语言页面,并调用编译器将所述模版语言页面编译为Java语言源文件;
扫描所述Java语言源文件,并采用自定义的类加载器加载及实例化所述Java语言源文件,所述实例化后的Java语言源文件为视图对象;
缓存所述视图对象的视图名称与所述视图对象间对应关系。
本发明所提供的Java应用服务器仅有网络架构层、应用容器层及页面模板层三层构成,架构简洁,各层分工合作;具体地,网络架构层用于获取客户端所发送的访问Web业务的统一资源定位符,所述应用容器层用于根据所述统一资源定位符查找统一资源定位符与业务逻辑间对应关系得到业务逻辑,及用于运行所述业务逻辑得到数据模型及视图名称,所述页面模板层用于根据所述视图名称查找视图名称与视图对象间对应关系得到视图对象,及用于调用所述视图对象对应的方法将所述数据模型渲染输出到所述客户端进行显示。上述技术方案的实现,使得本发明所提供的Java应用服务器具有较高的吞吐量,由于结构简洁,使得业务逻辑的部署和运营维护难度较低,且易于二次开发。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例1中提供的一种Java应用服务器的结构图;
图2是本发明实施例2中提供的一种Java应用服务器的结构图;
图3是本发明实施例2中提供的一种Java应用服务器的结构图;
图4是本发明实施例2中提供的一种Java应用服务器的结构图;
图5是本发明实施例3中提供的一种处理Web业务的方法流程图;
图6是本发明实施例4中提供的一种处理Web业务的方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
参见图1,一种Java应用服务器,该Java应用服务器包括:网络框架层101、应用容器层102和页面模板层103;
网络架构层101,用于获取客户端所发送的访问Web业务的统一资源定位符;
应用容器层102包括:
获取模块,用于根据统一资源定位符查找统一资源定位符与业务逻辑间对应关系得到业务逻辑;
运行模块,用于运行业务逻辑得到数据模型及视图名称;
页面模板层103包括:
查找模块,用于根据视图名称查找视图名称与视图对象间对应关系得到视图对象;
调用输出模块,用于调用视图对象对应的方法将数据模型渲染输出到客户端进行显示。
本发明所提供的Java应用服务器仅有网络架构层、应用容器层及页面模板层三层构成,架构简洁,各层分工合作;具体地,网络架构层用于获取客户端所发送的访问Web业务的统一资源定位符,所述应用容器层用于根据所述统一资源定位符查找统一资源定位符与业务逻辑间对应关系得到业务逻辑,及用于运行所述业务逻辑得到数据模型及视图名称,所述页面模板层用于根据所述视图名称查找视图名称与视图对象间对应关系得到视图对象,及用于调用所述视图对象对应的方法将所述数据模型渲染输出到所述客户端进行显示。上述技术方案的实现,使得本发明所提供的Java应用服务器具有较高的吞吐量,由于结构简洁,使得业务逻辑的部署和运营维护难度较低,且易于二次开发。
实施例2
参见图2,一种Java(一种跨平台编程语言及技术平台)应用服务器,该Java应用服务器包括:网络框架层201、应用容器层202和页面模板层203,其中,网络框架层201、应用容器层202和页面模板层203直接运行于JVM(Java Virtual Machine,Java虚拟机及运行时环境)上,不依赖其他任何的第三方软件。
参见图3,本发明实施例中,网络架构层201,用于获取客户端所发送的访问Web业务的统一资源定位符;
应用容器层202包括:
获取模块2021,用于根据统一资源定位符查找统一资源定位符与业务逻辑间对应关系得到业务逻辑;
运行模块2022,用于运行业务逻辑得到数据模型及视图名称;
页面模板层203包括:
查找模块2031,用于根据视图名称查找视图名称与视图对象间对应关系得到视图对象;
调用输出模块2032,用于调用视图对象对应的方法将数据模型渲染输出到客户端进行显示。
参见图4,本发明实施例中所提供的Java应用服务器的网络架构层201包括:
接收器2011,用于接收客户端发送的连接请求,与客户端建立连接并为客户端创建会话对象;
处理器2012,用于检测与会话对象关联的访问Web业务的请求事件,当检测到与会话对象关联的访问Web业务的请求事件时,读取访问Web业务的请求事件;
过滤器2013,用于解析访问Web业务的请求事件得到访问Web业务的统一资源定位符信息。
本发明实施例中,应用容器层202还包括:控制器Controller、请求Request、拦截器Interceptor、自动装配Autowired、组件Component、工厂Factory和服务Service中一种或多种标记,所述标记用于识别业务逻辑。
相应地,应用容器层202还包括:
业务逻辑部署模块2023,用于指定业务逻辑在应用容器层内的类路径;
扫描模块2024,用于扫描类路径下的所有业务逻辑,采用反射调用技术Reflection获取Controller、Interceptor、Component、Factory或者Service标记的业务逻辑,并实例化所获取的业务逻辑。
第一处理模块2025,用于对Controller标记的业务逻辑,采用Reflection获取Controller标记的业务逻辑内由Request标记的方法,并将由Request标记的方法与已实例化的业务逻辑的对象进行关联;
第二处理模块2026,用于对Autowired标记的业务逻辑,采用Reflection记录Autowired标记的业务逻辑所依赖的协作者类,并装配Autowired标记的业务逻辑之间的依赖关系。
前拦截模块2027,用于对业务逻辑进行前置处理,当前置处理的结果为第一数值时,通知运行模块2022执行运行业务逻辑得到数据模块及视图名称的操作;
后拦截模块2028,用于对运行模块2022得到的数据模型及视图名称进行修改。
页面模板层203还包括:
编译模块2033,用于扫面预设的模版语言页面,并调用编译器将模版语言页面编译为Java语言源文件;
视图对象生成模块2034,用于扫描Java语言源文件,并采用自定义的类加载器加载及实例化Java语言源文件,实例化后的Java语言源文件为视图对象;
缓存模块2035,用于缓存视图对象的视图名称与视图对象间对应关系,以便查找模块2031可以根据视图名称查找视图名称与视图对象间对应关系得到视图对象。
这里,页面模板层203预先定义有模板语言及语法;
例如,本发明实施例中,预先定义的模版语言可以由以下关键字来表述,其中,关键字包括set、function、if、elif、else、for、in、end、extend、segment、super、out、url、main、compress、select、when或other,由关键字所构成的语句可以包括:
set语句:设置变量值;
function语句:自定义函数;
if/elif/else语句:逻辑判断;
for/in语句:循环迭代;
end语句:块结束;
extend语句:页面的继承与扩展;
segment语句:自定义页面分段;
super语句:父页面自定义段调用;
out内置自定义函数:转义输出页面字符串片段;
url内置自定义函数:URL(Uniform/Universal Resource Locator,统一资源定位符)重写输出;
main内置自定义页面分段:页面默认的入口分段;
compress语句:压缩页面输出;
m)select/when/other语句:多分支逻辑判断。
本发明实施例中,预先定义的语法可以包括:
a)闭合式语法,可以如下所示:
${参数}或${自定义函数名参数},用于对象导航或自定义函数的输出。
@{自定义段名}或@{super.自定义段名},用于调用自定义段。
b)单行语法,可以如下所示:
#语句关键字参数,用于语句。
需要说明的是,本发明实施例中,模版语言的定义除了上述的关键字、语句和语法之外,还可以包括对象导航和表达式等,其中,对象导航与JEE(Java Platform Enterprise Edition,Java平台企业版标准和规范)页面视图模版的规范一致,表达式与Java语言规范一致。
本发明所提供的Java应用服务器仅有网络架构层、应用容器层及页面模板层三层构成,架构简洁,各层分工合作;具体地,网络架构层用于获取客户端所发送的访问Web业务的统一资源定位符,所述应用容器层用于根据所述统一资源定位符查找统一资源定位符与业务逻辑间对应关系得到业务逻辑,及用于运行所述业务逻辑得到数据模型及视图名称,所述页面模板层用于根据所述视图名称查找视图名称与视图对象间对应关系得到视图对象,及用于调用所述视图对象对应的方法将所述数据模型渲染输出到所述客户端进行显示。上述技术方案的实现,使得本发明所提供的Java应用服务器具有较高的吞吐量,由于结构简洁,使得业务逻辑的部署和运营维护难度较低,且易于二次开发。
实施例3
参见图5,一种处理Web业务的方法,该方法的执行主体具体为Java应用服务器,具体包括如下步骤:
步骤301:获取客户端所发送的访问Web业务的统一资源定位符;
步骤302:根据统一资源定位符查找统一资源定位符与业务逻辑间对应关系得到业务逻辑;
步骤303:运行业务逻辑得到数据模型及视图名称;
步骤304:根据视图名称查找视图名称与视图对象间对应关系得到视图对象;
步骤305:调用视图对象对应的方法将数据模型渲染输出到客户端进行显示。
本发明所提供的Java应用服务器仅有网络架构层、应用容器层及页面模板层三层构成,架构简洁,各层分工合作;具体地,网络架构层用于获取客户端所发送的访问Web业务的统一资源定位符,所述应用容器层用于根据所述统一资源定位符查找统一资源定位符与业务逻辑间对应关系得到业务逻辑,及用于运行所述业务逻辑得到数据模型及视图名称,所述页面模板层用于根据所述视图名称查找视图名称与视图对象间对应关系得到视图对象,及用于调用所述视图对象对应的方法将所述数据模型渲染输出到所述客户端进行显示。上述技术方案的实现,使得本发明所提供的Java应用服务器具有较高的吞吐量,由于结构简洁,使得业务逻辑的部署和运营维护难度较低,且易于二次开发。
实施例4
本发明实施例所提供的处理Web业务的方法适用于如图1所述的Java应用服务器,参见图6,一种处理Web业务的方法,该方法的执行主体具体为Java应用服务器,具体包括如下步骤:
步骤401:获取客户端所发送的访问Web业务的统一资源定位符;
具体地,获取客户端所发送的访问Web业务的统一资源定位符包括:
接收客户端发送的连接请求,与客户端建立连接并为客户端创建会话对象;
检测与会话对象关联的访问Web业务的请求事件,当检测到与会话对象关联的访问Web业务的请求事件时,读取访问Web业务的请求事件;
解析访问Web业务的请求事件得到访问Web业务的统一资源定位符信息。
步骤401所述的方法具体有Java应用服务器内的网络结构层来完成。
步骤402:根据所述统一资源定位符查找统一资源定位符与业务逻辑间对应关系得到业务逻辑;
本发明实施例中,Java应用服务器预先定义有识别业务逻辑的标记,所述标记包括:控制器Controller、请求Request、拦截器Interceptor、自动装配Autowired、组件Component、工厂Factory和服务Service中一种或多种。
在根据所述统一资源定位符查找统一资源定位符与业务逻辑间对应关系得到业务逻辑之前,Java应用服务器预先将给予该Java应用服务器而开发的业务逻辑部署到应用容器层中,其中,应用容器层具备IoC(Inversion of Control,反转控制)和MVC((Model ViewController,模型-视图-控制器为核心的设计模式)的能力;
具体地,该Java应用服务器预先将给予该Java应用服务器而开发的业务逻辑部署到应用容器层包括:
指定业务逻辑在应用容器层内的类路径;
扫描类路径下的所有业务逻辑,采用反射调用技术Reflection获取Controller、Interceptor、Component、Factory或者Service标记的业务逻辑,并实例化所获取的业务逻辑。
更进一步地,为了实现应用容器层的IoC能力,该方法还包括:
对Controller标记的业务逻辑,采用Reflection获取Controller标记的业务逻辑内由Request标记的方法,并将由Request标记的方法与已实例化的业务逻辑的对象进行关联;
对Autowired标记的业务逻辑,采用Reflection记录Autowired标记的业务逻辑所依赖的协作者类,并装配Autowired标记的业务逻辑之间的依赖关系。
步骤403:对业务逻辑进行前置处理,并根据前置处理的结果来确定是否运行业务逻辑,
当前置处理的结果为第一数值时,执行步骤404;
当前置处理的结果为第二数值时,操作流程结束;
这里,前置处理的结果为布尔数值,例如,第一数值为1,第二数值为0;
步骤404:运行业务逻辑得到数据模型及视图名称;
由于Java应用服务器中的应用容器层本身具备有MVC的能力,故在Java应用服务器中运行业务逻辑时,可以得出该业务逻辑对应的数据模型及视图名称。
步骤405:对数据模型及视图名称进行修改;
需要说明的是,本步骤为可选执行的步骤,目的是为了提高Java应用服务器的灵活性。
上述步骤402至步骤405均由Java应用服务器内的应用容器层来完成。
本发明实施例中,Java应用服务器内的页面模板层预先定义的模版语言及相应的语法,其中,模板语言可以由以下关键字来表述,其中,关键字包括set、function、if、elif、else、for、in、end、extend、segment、super、out、url、main、compress、select、when或other,由关键字所构成的语句可以包括:
set语句:设置变量值;
function语句:自定义函数;
if/elif/else语句:逻辑判断;
for/in语句:循环迭代;
end语句:块结束;
extend语句:页面的继承与扩展;
segment语句:自定义页面分段;
super语句:父页面自定义段调用;
out内置自定义函数:转义输出页面字符串片段;
url内置自定义函数:URL(Uniform/Universal Resource Locator,统一资源定位符)重写输出;
main内置自定义页面分段:页面默认的入口分段;
compress语句:压缩页面输出;
m)select/when/other语句:多分支逻辑判断。
本发明实施例中,预先定义的语法可以包括:
a)闭合式语法,可以如下所示:
${参数}或${自定义函数名参数},用于对象导航或自定义函数的输出。
@{自定义段名}或@{super.自定义段名},用于调用自定义段。
b)单行语法,可以如下所示:
#语句关键字参数,用于语句。
需要说明的是,本发明实施例中,模版语言的定义除了上述的关键字、语句和语法之外,还可以包括对象导航和表达式等,其中,对象导航与JEE(Java Platform Enterprise Edition,Java平台企业版标准和规范)页面视图模版的规范一致,表达式与Java语言规范一致。
基于以上的描述,页面模板层预先生成视图对象并将生成的视图对象与视图对象的视图名称间对应关系存储在缓存中,以便在应用容器层得到数据模板及视图名称时,可以根据视图名称查找视图对象与视图对象的视图名称间对应关系得到视图对象,并根据视图对象对应的方法对数据模板进行渲染输出。
其中,页面模板层预先生成视图对象并将生成的视图对象存储在缓存包括:
扫面预设的模版语言页面,并调用编译器将模版语言页面编译为Java语言源文件;
扫描Java语言源文件,并采用自定义的类加载器加载及实例化Java语言源文件,实例化后的Java语言源文件为视图对象;
缓存视图对象的视图名称与视图对象间对应关系。
步骤406:根据视图名称查找视图名称与视图对象间对应关系得到视图对象;
步骤407:调用视图对象对应的方法将数据模型渲染输出到客户端进行显示。
步骤406至407所述的方法则具体有Java应用服务器内的页面模板层来完成。
本发明所提供的Java应用服务器仅有网络架构层、应用容器层及页面模板层三层构成,架构简洁,各层分工合作;具体地,网络架构层用于获取客户端所发送的访问Web业务的统一资源定位符,所述应用容器层用于根据所述统一资源定位符查找统一资源定位符与业务逻辑间对应关系得到业务逻辑,及用于运行所述业务逻辑得到数据模型及视图名称,所述页面模板层用于根据所述视图名称查找视图名称与视图对象间对应关系得到视图对象,及用于调用所述视图对象对应的方法将所述数据模型渲染输出到所述客户端进行显示。上述技术方案的实现,使得本发明所提供的Java应用服务器具有较高的吞吐量,由于结构简洁,使得业务逻辑的部署和运营维护难度较低,且易于二次开发。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (13)
1.一种Java应用服务器,其特征在于,所述Java应用服务器包括:网络框架层、应用容器层和页面模板层;
所述网络框架层,用于获取客户端所发送的访问Web业务的统一资源定位符;
所述应用容器层包括:
获取模块,用于根据所述统一资源定位符查找统一资源定位符与业务逻辑间对应关系得到业务逻辑;
运行模块,用于运行所述业务逻辑得到数据模型及视图名称;
所述页面模板层包括:
查找模块,用于根据所述视图名称查找视图名称与视图对象间对应关系得到视图对象;
调用输出模块,用于调用所述视图对象对应的方法将所述数据模型渲染输出到所述客户端进行显示;
所述应用容器层还包括:控制器Controller、请求Request、拦截器Interceptor、自动装配Autowired、组件Component、工厂Factory和服务Service中一种或多种标记,所述标记用于识别业务逻辑。
2.根据权利要求1所述的Java应用服务器,其特征在于,所述网络框架层包括:
接收器,用于接收客户端发送的连接请求,与所述客户端建立连接并为所述客户端创建会话对象;
处理器,用于检测与所述会话对象关联的访问Web业务的请求事件,当检测到与所述会话对象关联的访问Web业务的请求事件时,读取所述访问Web业务的请求事件;
过滤器,用于解析所述访问Web业务的请求事件得到访问Web业务的统一资源定位符信息。
3.根据权利要求1所述的Java应用服务器,其特征在于,所述应用容器层还包括:
业务逻辑部署模块,用于指定业务逻辑在所述应用容器层内的类路径;
扫描模块,用于扫描所述类路径下的所有业务逻辑,采用反射调用技术Reflection获取Controller、Interceptor、Component、Factory或者Service标记的业务逻辑,并实例化所获取的业务逻辑。
4.根据权利要求3所述的Java应用服务器,其特征在于,所述应用容器层还包括:
第一处理模块,用于对Controller标记的业务逻辑,采用Reflection获取所述Controller标记的业务逻辑内由Request标记的方法,并将所述由Request标记的方法与已实例化的业务逻辑的对象进行关联;
第二处理模块,用于对Autowired标记的业务逻辑,采用Reflection记录所述Autowired标记的业务逻辑所依赖的协作者类,并装配所述Autowired标记的业务逻辑之间的依赖关系。
5.根据权利要求1所述的Java应用服务器,其特征在于,所述应用容器层还包括:
前拦截模块,用于对所述业务逻辑进行前置处理,当前置处理的结果为第一数值时,通知所述运行模块执行运行所述业务逻辑得到数据模块及视图名称的操作;或/和
后拦截模块,用于对所述运行模块得到的所述数据模型及所述视图名称进行修改。
6.根据权利要求1所述的Java应用服务器,其特征在于,所述页面模板层还包括:
编译模块,用于扫面预设的模版语言页面,并调用编译器将所述模版语言页面编译为Java语言源文件;
视图对象生成模块,用于扫描所述Java语言源文件,并采用自定义的类加载器加载及实例化所述Java语言源文件,所述实例化后的Java语言源文件为视图对象;
缓存模块,用于缓存所述视图对象的视图名称与所述视图对象间对应关系,以便所述查找模块可以根据视图名称查找视图名称与视图对象间对应关系得到视图对象。
7.一种处理Web业务的方法,其特征在于,所述方法包括:
获取客户端所发送的访问Web业务的统一资源定位符;
根据所述统一资源定位符查找统一资源定位符与业务逻辑间对应关系得到业务逻辑;
运行所述业务逻辑得到数据模型及视图名称;
根据所述视图名称查找视图名称与视图对象间对应关系得到视图对象;
调用所述视图对象对应的方法将所述数据模型渲染输出到所述客户端进行显示;
预先定义有识别业务逻辑的标记,所述标记包括:控制器Controller、请求Request、拦截器Interceptor、自动装配Autowired、组件Component、工厂Factory和服务Service中一种或多种。
8.根据权利要求7所述的方法,其特征在于,所述获取客户端所发送的访问Web业务的统一资源定位符包括:
接收客户端发送的连接请求,与所述客户端建立连接并为所述客户端创建会话对象;
检测与所述会话对象关联的访问Web业务的请求事件,当检测到与所述会话对象关联的访问Web业务的请求事件时,读取所述访问Web业务的请求事件;
解析所述访问Web业务的请求事件得到访问Web业务的统一资源定位符信息。
9.根据权利要求7所述的方法,其特征在于,所述方法还包括:
指定业务逻辑在应用容器层内的类路径;
扫描所述类路径下的所有业务逻辑,采用反射调用技术Reflection获取Controller、Interceptor、Component、Factory或者Service标记的业务逻辑,并实例化所获取的业务逻辑。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
对Controller标记的业务逻辑,采用Reflection获取所述Controller标记的业务逻辑内由Request标记的方法,并将所述由Request标记的方法与已实例化的业务逻辑的对象进行关联;
对Autowired标记的业务逻辑,采用Reflection记录所述Autowired标记的业务逻辑所依赖的协作者类,并装配所述Autowired标记的业务逻辑之间的依赖关系。
11.根据权利要求7所述的方法,其特征在于,所述运行所述业务逻辑得到数据模型及视图名称之前,所述方法还包括:
对所述业务逻辑进行前置处理,当前置处理的结果为第一数值时,执行运行所述业务逻辑得到数据模型及视图名称的操作。
12.根据权利要求7所述的方法,其特征在于,所述运行所述业务逻辑得到数据模型及视图名称之后,所述方法还包括:
对所述数据模型及所述视图名称进行修改。
13.根据权利要求7所述的方法,其特征在于,所述方法还包括:
扫面预设的模版语言页面,并调用编译器将所述模版语言页面编译为Java语言源文件;
扫描所述Java语言源文件,并采用自定义的类加载器加载及实例化所述Java语言源文件,所述实例化后的Java语言源文件为视图对象;
缓存所述视图对象的视图名称与所述视图对象间对应关系。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110367690.0A CN103123593B (zh) | 2011-11-18 | 2011-11-18 | Java应用服务器及处理Web业务的方法 |
PCT/CN2012/076973 WO2013071748A1 (zh) | 2011-11-18 | 2012-06-15 | Java应用服务器及处理Web业务的方法 |
KR1020147014900A KR20140089410A (ko) | 2011-11-18 | 2012-06-15 | 자바 애플리케이션 서버 및 웹 서비스 처리 방법 |
EP12849935.7A EP2782008A4 (en) | 2011-11-18 | 2012-06-15 | JAVA APPLICATION SERVER AND METHOD FOR PROCESSING WEB SERVICES |
US14/355,656 US20140297627A1 (en) | 2011-11-18 | 2012-06-15 | Java application server and method for processing web business |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110367690.0A CN103123593B (zh) | 2011-11-18 | 2011-11-18 | Java应用服务器及处理Web业务的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103123593A CN103123593A (zh) | 2013-05-29 |
CN103123593B true CN103123593B (zh) | 2016-08-31 |
Family
ID=48428968
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110367690.0A Active CN103123593B (zh) | 2011-11-18 | 2011-11-18 | Java应用服务器及处理Web业务的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20140297627A1 (zh) |
EP (1) | EP2782008A4 (zh) |
KR (1) | KR20140089410A (zh) |
CN (1) | CN103123593B (zh) |
WO (1) | WO2013071748A1 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104216729B (zh) * | 2013-06-05 | 2017-10-13 | 阿里巴巴集团控股有限公司 | 应用系统的逻辑模块更新实现方法及装置 |
US11397520B2 (en) * | 2013-08-01 | 2022-07-26 | Yogesh Chunilal Rathod | Application program interface or page processing method and device |
CN104767780B (zh) * | 2014-01-08 | 2018-09-18 | 上海博科资讯股份有限公司 | 一种基于IOC的web应用系统 |
US20150293669A1 (en) * | 2014-04-09 | 2015-10-15 | Zulahoo, Inc. | Apparatus, method, and computer system for generating contained, usable objects that are dynamically configurable |
CN104317591B (zh) * | 2014-10-23 | 2017-11-28 | 西安未来国际信息股份有限公司 | 一种基于OSGi的web界面框架系统及web业务处理方法 |
CN107479861B (zh) * | 2016-06-07 | 2021-04-06 | 阿里巴巴集团控股有限公司 | 页面处理方法及其系统 |
CN107846448B (zh) * | 2017-09-22 | 2020-07-07 | 阿里巴巴集团控股有限公司 | 数据服务提供装置及实现方法 |
CN110020307B (zh) * | 2017-11-30 | 2023-06-13 | 阿里巴巴集团控股有限公司 | 一种客户端视图的绘制方法和装置 |
CN109542402A (zh) * | 2018-10-12 | 2019-03-29 | 杭州工跃机械制造有限公司 | 一种自适应的用于多门户网站无缝切换的方法 |
CN109739573B (zh) * | 2018-12-27 | 2023-07-18 | 深圳市多度科技有限公司 | 实现api接口调用的处理方法及装置、实现api接口的系统 |
CN109857801B (zh) * | 2019-01-02 | 2021-01-15 | 哈尔滨鸿德亦泰数码科技有限责任公司 | 基于四层架构的智慧灌区e平台及数据处理方法 |
CN114153521A (zh) | 2019-03-25 | 2022-03-08 | 华为技术有限公司 | 类加载方法和装置 |
CN110866197B (zh) * | 2019-11-19 | 2022-08-19 | 中国民航信息网络股份有限公司 | 一种基于web应用程序的离港前端客户端访问方法及装置 |
CN111222062B (zh) | 2020-01-09 | 2021-06-01 | 百度在线网络技术(北京)有限公司 | 小程序的运行方法、装置、电子设备和存储介质 |
CN113127732B (zh) * | 2021-03-23 | 2024-02-20 | 金蝶蝶金云计算有限公司 | 业务数据的获取方法、装置、计算机设备和存储介质 |
CN114168129A (zh) * | 2021-10-12 | 2022-03-11 | 山东健康医疗大数据有限公司 | 基于ViewPager组件的轮播图功能模块 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1560741A (zh) * | 2004-02-23 | 2005-01-05 | 史宇清 | 基于j2ee的五层体系结构构建方法 |
CN1728700A (zh) * | 2004-07-26 | 2006-02-01 | 中兴通讯股份有限公司 | 基于struts框架的web电信网管系统及其方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001069444A2 (en) * | 2000-03-10 | 2001-09-20 | Aether Systems, Inc. | System, method, and apparatus for providing value added services to specific users |
CN1419675A (zh) * | 2000-03-22 | 2003-05-21 | 伟博麦德有限公司 | 用于自上而下的企业过程定义和执行的方法和系统 |
US7831655B2 (en) * | 2001-10-18 | 2010-11-09 | Bea Systems, Inc. | System and method for implementing a service adapter |
US20030135509A1 (en) * | 2002-01-11 | 2003-07-17 | Davis Andrew Thomas | Edge server java application framework having application server instance resource monitoring and management |
US20040046789A1 (en) * | 2002-08-23 | 2004-03-11 | Angelo Inanoria | Extensible user interface (XUI) framework and development environment |
US20050076329A1 (en) * | 2003-10-01 | 2005-04-07 | Christina Hsu | Method and apparatus for supporting configuration of a web application in a web presentation architecture |
US7614052B2 (en) * | 2004-01-09 | 2009-11-03 | Nexaweb Technologies Inc. | System and method for developing and deploying computer applications over a network |
CN1960371B (zh) * | 2006-08-25 | 2010-09-08 | 华为技术有限公司 | 一种访问Web应用程序文件的方法及系统 |
EP2140659A2 (en) * | 2007-05-03 | 2010-01-06 | Sonus Networks, Inc. | Service integration on a network |
US20110321010A1 (en) * | 2010-06-24 | 2011-12-29 | Yifei Wang | Web application framework based on object oriented class mapping |
-
2011
- 2011-11-18 CN CN201110367690.0A patent/CN103123593B/zh active Active
-
2012
- 2012-06-15 US US14/355,656 patent/US20140297627A1/en not_active Abandoned
- 2012-06-15 EP EP12849935.7A patent/EP2782008A4/en not_active Withdrawn
- 2012-06-15 WO PCT/CN2012/076973 patent/WO2013071748A1/zh active Application Filing
- 2012-06-15 KR KR1020147014900A patent/KR20140089410A/ko not_active Application Discontinuation
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1560741A (zh) * | 2004-02-23 | 2005-01-05 | 史宇清 | 基于j2ee的五层体系结构构建方法 |
CN1728700A (zh) * | 2004-07-26 | 2006-02-01 | 中兴通讯股份有限公司 | 基于struts框架的web电信网管系统及其方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2782008A1 (en) | 2014-09-24 |
KR20140089410A (ko) | 2014-07-14 |
CN103123593A (zh) | 2013-05-29 |
EP2782008A4 (en) | 2015-07-15 |
WO2013071748A1 (zh) | 2013-05-23 |
US20140297627A1 (en) | 2014-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103123593B (zh) | Java应用服务器及处理Web业务的方法 | |
US10417314B2 (en) | Systems and methods of a script generation engine | |
US10387123B2 (en) | Lightweight framework for web applications | |
JP5982575B2 (ja) | 動的テイントに基づくセキュリティ・スキャン | |
US7617479B2 (en) | Method and apparatus for generating service frameworks | |
US8402319B2 (en) | Method and system to extract a navigation model for analysis of a web application | |
US8615750B1 (en) | Optimizing application compiling | |
CN102279765A (zh) | 预编译托存托管代码 | |
KR20110030461A (ko) | 클라이언트-서버 환경에서의 애플리케이션의 동적 분할 방법 및 시스템 | |
Adetunji et al. | Dawning of Progressive Web Applications (PWA): Edging Out the Pitfalls of Traditional Mobile Development | |
CN105308578B (zh) | 状态转变的诊断 | |
CN110381026B (zh) | 一种富客户端的业务服务封装和访问系统、方法和装置 | |
CN101727475A (zh) | 一种获取数据库访问过程的方法、装置及系统 | |
CN109448075A (zh) | 一种图片处理方法和服务器 | |
Vosloo et al. | Server-centric web frameworks: An overview | |
US7877640B2 (en) | Method and system for providing enhanced exception messages for exceptions thrown by virtual machines | |
CN110674173A (zh) | 一种风控云上的数据缓存的方法和系统 | |
CN116974581B (zh) | 代码生成方法、装置、电子设备和存储介质 | |
Wood et al. | Triton: a domain specific language for cyber-physical systems | |
US11803786B2 (en) | Enterprise integration platform | |
Mostinckx et al. | Mirages: Behavioral intercession in a mirror-based architecture | |
Dantas et al. | Towards aspect-oriented programming for context-aware systems: A comparative study | |
Yuan et al. | Research and implementation of security vulnerability detection in application system of WEB static source code analysis based on JAVA | |
US20240104221A1 (en) | AUTOMATED TESTING OF OPERATING SYSTEM (OS) KERNEL HELPER FUNCTIONS ACCESSIBLE THROUGH EXTENDED BPF (eBPF) FILTERS | |
Pleines | Analysis of Git Repositories for Software Visualization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |