`

EasyJWeb中缺省URL映射转换器揭密

 
阅读更多
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>

  在EasyJWeb对Ajax的支持中,通过引用类似<script type="text/javascript" src="ejf/easyajax/UserService.js"></script>的url可以动态得到调用服务器端业务组件的javascript脚本。另外,在基于EasyJWeb的CRUD应用中,也可以使用类似http://localhost:8080/user/edit/3的URL来编辑数据表中的某一条记录。究竟EasyJWeb中是如何处理这些URL的呢?本文将作简单的分析!
  在EasyJWeb中,有一个URL映射处理器,通过配置这个映射处理器可以非常简单地实现Web应用中类似URLRewrite的需求。映射处理器了代码如下所示:

publicinterfaceIPathMappingRuler...{
//对请求路径的解析;
publicStringgetModuleName();//得到模板的名称
publicMapgetParams();//得到模板缺省参数
publicStringgetCommand();//得到模板命令
}

  该接口的默认实现是com.easyjf.web.core.PathMappingRulerImpl,在基于EasyJWeb的应用中,每一个交由EasyJWeb框架处理的请求url,都会通过这个映射处理器进行转换。通过使用EasyJWeb缺省URL映射转换器,客户端请求路径/module/command/params将按以下请求规则,作如下的映射处理.
  映射处理前的URL:
  1、 /module/command/name=xxx
  2、 /module
  3、 /module/command
  4、 /module/command/12345
  5、/module/edit/12345/title=1111
  6、/moduel/title=测试

 映射处理的URL:
  1~ /module.ejf?easyjwebCommand=command&name=xxx
  2~ /module.ejf
  3~ /module.ejf?easyjwebCommand=command
  4~ /module.ejf?easyjwebCommand=command&cid=1234
  5、/module.ejf?easyJWebCommand=edit&cid=123455&title=111
  6、/module.ejf?title=测试


  因此,在一个EasyJWeb自动代码生成的CRUD应用中,http://localhost:8080/user.ejf?easyJWebCommand=edit&cid=3 这个URL表示编辑user对象中属性cid为3的信息。使用默认的映射处理规则,上面的url可以变成如下的形式:

  http://localhost:8080/user/edit/3

  这个url表示运行user.ejf这个模块,传送的命令为edit,标准key值为3。


  URL映射转换器的一个最典型的应用示例,就是EasyJWeb-0.8版本开始增加的远程Web脚本处理支持引擎,也即Ajax的部分功能。远程JS脚本调用支持只是EasyJWeb中的一个小小插件,EasyJWeb的Ajax实现只是一个普通的EasyJWeb Module(Action)。这个Action即com.easyjf.web.ajax.AjaxEngineAction。

看过本人《在EasyJWeb中轻松开发Ajax运用》一文的朋友都知道,远程Web脚本调用涉及到一个如何生成调用服务器端方法的Javascript Stub问题。在EasyJWeb对Ajax的支持中,可以直接通过下面的URL来生成远程javascript调用脚本。

scripttype='text/javascript'src="ejf/easyajax/prototype.js">script>
scripttype='text/javascript'src='ejf/easyajax/engine.js'>script>
scripttype='text/javascript'src='ejf/easyajax/UserService.js'>script>

  第一句返回prototype.js脚本,第二句返回EasyJWeb的Ajax支持引擎engine.js脚本,第三句返回生成服务器UserService组件的远程调用脚本。
  上面的URL,改成通过原生的EasyJWeb URL来引用,可以写成下面的形式:

scripttype='text/javascript'src="easyajax.ejf?easyJWebCommand=prototype.js">script>
scripttype='text/javascript'src='easyajax.ejf?engine.js'>script>
scripttype='text/javascript'src='easyajax.ejf?easyJWebCommand=UserService'>script>

  AjaxEngineAction中处理这几个调用代码如下:

publicPagedoEngine(WebFormform,Modulemodule)throwsException...{
returnmodule.findPage("engine-js");
}


publicPagedoPrototype(WebFormform,Modulemodule)throwsException...{
returnmodule.findPage("prototype");
}
 

publicPagedoAjaxHome(WebFormform,Modulemodule)throwsException...{
Stringcommand
=CommUtil.null2String(form.get("easyJWebCommand"));
if(command.endsWith(".js"))
...{
command
=command.substring(0,command.length()-3);
}

Objectbean
=AjaxUtil.getServiceContainer().getService(command);
//System.out.println(command);
form.addResult("scriptName",command);
form.addResult(
"methodList",AjaxUtil.getAjaxStub(bean));
returnmodule.findPage("stub");
}


小结:
  一个简单适用的Web MVC框架,不仅仅是实现单纯的页面及代码分离功能,还应该提供更多的与Web应用相关的实用工具及解决通用应用需求抽象功能。在EasyJWeb中,除拥有了很多MVC框架的基本特性以外,还内置了很多解决应用Web应用程序中一些通过需求的工具,比如URL映射处理、自动代码生成、权限系统支持等,因此会使得我们开发Web应用程序开发变得更加简单、高效。作为一个完全由国内Java开源爱好者发起及实现的Web MCX框架,虽然在EasyJWeb-0.8版本中还存在着很多问题,但只要有更多的开源爱好者参与到其中来,相信在以后的版本中会不断得到完善。

(本文作者:EasyJF开源大峡 欢迎转载,转载请保留作者声明,谢谢!)




分享到:
评论

相关推荐

    EasyJWeb实用开发指南——开始EasyJWeb

    EasyJWeb实用开发指南——开始EasyJWeb

    EasyJWeb开发者指南

    文档目录(后面数字为页码) EasyJWeb开发者指南 EasyJWeb开发者指南 1 ...EasyJWeb中的拦截器 35 Ajax支持 35 Ajax概述 35 远程脚本调用36 快速上手 37 配置Ajax 38 安全控制 38 Ajax工具 38 Ajax验证 38

    easyjweb1.2

    EasyJWeb是基于java技术,用于企业级Java Web应用... 4、EasyJWeb插件体系,项目中的各种实用功能的扩展,可以灵活地通过基于插件的形式安装到EasyJWeb中,提供各种针对性的功能。如ajax实用插件、代码生成插件等。

    EasyJWEB2.0

    EasyJWeb是基于java技术,用于实现企业级Java Web应用程序快速开发框架。框架由来自国内的EasyJF开源团队维护,是一个完全由来自的中国开源爱好者开发,文档及注释全部为中文的开源框架。

    easyjweb-2.0快速开发

    easyjweb-2.0 java 快速开发 easyjweb-2.0 java 快速开发 easyjweb-2.0 java 快速开发

    EasyJWeb快速入门指南

    EasyJWeb快速入门指南,EasyJWeb 是一个让你开发 Java Web 应用程序变得容易及高效的框架,他是一个基于请求转发模型的 MVC 框架。本章将主要介绍如何使用 EasyJWeb 写一个简单的应用程序。

    EasyJWeb开发指南

    EasyJWeb是基于java技术,用于企业级Java Web应用程序快速开发的MVC框架。框架设计构思来源于国内众多项目实践,框架的设计及实现借鉴当前主要流行的开源Web框架,如Rails、Struts、JSF、Tapestry等,吸取其优点及...

    EasyJWeb源码构建指南

    目前EasyJWeb已经采用国际水准的项目管理工具——Maven。Maven是一个功能强大的项目管理工具,在此处不做过多介绍,有兴趣的可以阅读Maven官方文档。 首先要确保你的计算机上已经安装了Maven2.0.5以上版本,如果还...

    EasyJWeb框架0.7.0

    EasyJWeb框架0.7.0

    配置easyjweb项目

    配置easyjweb项目 ,要用到的细节,免于发生不必要的错误

    easyjweb说明文档

    easyjweb说明文档

    EasyJWeb入门手册

    可以让你easyjweb快速入门使用 EasyJWeb简介 EasyJWeb是基于java技术,能实现企业级Java Web应用程序快速开发的MVC框架。框架设计构思来源于国内众多项目实践,框架的设计及实现借鉴当前主要流行的开源Web框架...

    easyjweb-1.1

    一个轻量级的J2EE框架

    Easyjweb 1.2.2

    类似于struts的开发框架,但开发效率却是struts的N倍。这是2010年01月15日发布出来的最新的版本。

    EasyJWeb-Velocity脚本简明教程

    EasyJWeb-Velocity脚本简明教程

    Easyjweb项目实例

    很好的Easyjweb学习资料及源码 包括载MyEclipse中的配置,数据库的配置等.很详细!

    基于EasyJWeb框架和MVC模式的Web应用

    描述了MVC设计模式和EasyJWeb框架的组成和工作原理,然后通过一个客户管理系统实例论述了基于MVC模式EasyJWeb框架的Web应用系统的实现方法。通过实例论述了基于EasyJWeb框架开发的Web应用系统可获得较高的效率性、可...

    EasyJWeb实用开发指南——开始EasyJWe

    EasyJWeb实用开发指南——开始EasyJWeEasyJWeb实用开发指南——开始EasyJWeEasyJWeb实用开发指南——开始EasyJWeEasyJWeb实用开发指南——开始EasyJWeEasyJWeb实用开发指南——开始EasyJWeEasyJWeb实用开发指南——...

    easyjweb 开发文档

    EasyJWeb综述 EasyJWeb是基于java技术,用于企业级...4、EasyJWeb插件体系,项目中的各种实用功能的扩展,可以灵活地通过基于插件的形式安装到EasyJWeb中,提供各种针对性的功能。如ajax实用插件、代码生成插件等。

Global site tag (gtag.js) - Google Analytics