2019独角兽企业重金招聘Python工程师标准>>>

(JimStoneAjax交流群:366984517)

DWR是Ajax实现RIA一时无二的王者,它强大厚重并且饱经磨练。JimStoneAjax是同领域的新秀,灵活、轻巧且使用方便。

JimStoneAjax可以跟DWR竞争嘛?答案是肯定的!我们来看看它有哪些优点竟然能够跟DWR匹敌。

1、配置简单甚至无配置

JimStoneAjax 配置简单,甚至您可以不需要进行任何配置。

使用JimStoneAjax默认情况下是不需要任何配置的,根据使用环境,您可能希望自定义客户端生成JS和执行JS方法的访问路径,那么您就需要配置URL对脚本的访问路径。

2、编写Serivce无需配置即可在客户端直接调用

也许大家同时会想到这个里边的最关键的问题就是这样安全性一定很差劲。但是恰恰相反,JimStoneAjax 巧妙的利用接口实现来屏蔽无关对象,只有实现自ISTAjaxModel接口的类才被标识为“有效类”。

那么同样的问题,一个Java对象可能包含很多方法,不配置那岂不是方法全暴漏了!同样这样的担心也是没必要的,因为它当前通过泛型返回值来绝对方法的有效性!不用担心,JimStoneAjax规定只有返回类型为STDataResult和STAjaxView的方法才被允许被调用。

STDataResult对象适用于大部分方法返回结果。它是一个饱经验证的泛型类,能够适用与所有的场景,并且能够完美的给用户提供更加详细的方法反馈结果。主要属性包含成功与否状态stat,错误代码errCode(用于国际化和精确定位),方法返回说明message,返回数据datas。创建方法包含多种多样,且非常灵活和可靠。

public STDataResult<Integer> maxFromArray(Integer[] list) {int count = list.length;int max = Integer.MIN_VALUE;for (int i=0; i<count; i++) {if (list[i] > max) {max = list[i];}}return STDataResult.succByMessage("max from array success", max);
}

这个方法会被识别为有效方法,在生成JS时可以直接调用这个方法。

所以根本不需要进行任何配置,实现了ISTAjaxModel接口的类将自动被识别并动态生成JS引用。

3、支持项目当前环境中默认的控制器渲染结果作为返回值

这个功能充满创意并且真的很酷。

刚才我们曾经提到过 STAjaxView 对象,这个对象神奇的地方在于,他能够自动的融入Spring MVC、Struts控制器等本地系统环境,您编写的Service返回值可以等同于Controller中方法的返回值,使用本地控制器渲染器自动渲染页面结果,并且客户端接收的数据为渲染之后的页面结果,So cool!

public STAjaxView getPageTop(HttpServletRequest request, HttpServletResponse response) {request.setAttribute("name", "JimStone");return render("/test/top", "email",    "boychong2@126.com","qq",      "123581766","mobile",   "15221869351");}

客户端调用后,返回数据将为融入本地环境的渲染后的页面。客户端此时接收到的返回数据直接是页面HTML内容。

testAjaxModel2.getPageTop('request', 'response', function(html){$('#test-get-page-top').html(html);
});


    4、方法参数调用灵活,支持传递request、response和自定义对象

JimStoneAjax的框架设计非常灵活,您可以自定义参数传递和转换方法。

通过上一个代码片段我们看到,参数的传递包含了request和resonse。这样我们在使用过程中基本上能够处理网络应用中更多的复杂情况。同时支持自定义参数转换方法,您可以编写自己的方法转换方法去更好的扩展功能。

如果您需要传递自定义对象,您需要实现接口 ISTMethodParamLoader,并且加入配置项 jsajax.class.serviceLoader。

如果项目没有使用Spring,那么您需要在配置文件中更换参数加载器为 jsajax.class.methodParamLoader=com.jimstone.ajax.loader.STSimpleMethodParamLoader。如果需要热部署或使用JRebel则请更换加参数加载器为STSpringMethodParamLoader。

5、天生支持Spring和Spring MVC,同时支持自己创建的JavaBean对象

天生亲和Spring MVC,但同时也可以不依赖Spring环境,您完全可以根据本地使用场景自定义Ajax模块创建接口,更好的融入本地环境。优雅的设计让您的程序更加灵活和松耦合。

让我们来看一个提供给客户端调用的Service类示例。

@Service("testAjaxModel1")
public class TestAjaxModel1 implements ISTAjaxModel {public STDataResult<Integer> min(Integer x, Integer y) {int ret = (x < y)  ?  x :  y;return STDataResult.succByMessage("success min", ret);}public STDataResult<List<Integer>> getRandomList(Integer minNum, Integer maxNum, Integer count) {int num;List<Integer> list = new ArrayList<Integer>();for (int i=0; i<count; i++) {num = minNum + Double.valueOf(Float.valueOf(maxNum - minNum) * Math.random()).intValue();list.add(num);}return STDataResult.succByMessage("success random list", list);}
}

这是一个使用Spring注解创建的Service,这个类在没有任何配置的情况下就可以在客户端直接调用,客户端引用方法也很简单。

<ajax:script value="testAjaxModel1"></ajax:script>

这样客户端就能够直接使用了。当然也支持同时加载多个模块。

<ajax:script value="testAjaxModel1,testAjaxModel2"></ajax:script>

如果您需要自定义JavaBean对象的获取方式,需要实现接口ISTServiceLoader,并且加入配置项jsajax.class.serviceLoader。

6、生成JS文件体积极小并且支持客户端缓存,可以自定义JavaScript生成规则

JimStoneAjax 生成的JS文件体积非常小巧,并且生成的JS文件能够自动被浏览器缓存住。如果您开发环境使用JRebel或者服务器支持热部署,那么没有关系,它会根据class文件编译修改时间自动更新缓存。

默认提供生成的JS如果不能满足您的需求,您完全可以定义自己的JS生成器。需要实现ISTAjaxJavascriptMaker接口,并且加入配置项 jsajax.class.jsMaker。

    7、支持方便的JSTL标签使用更简便

    它的JSTL标签只有三种:

  • ajax:script    加载JS脚本
  • ajax:url    生成方法直接调用URL
  • ajax:load    直接在页面当前位置加载方法调用的结果数据

综上所述,JimStoneAjax 比 DWR 更加轻量、方便和灵活。

更多信息可以下载示例或去JimStoneAjax官网查看。

转载于:https://my.oschina.net/jimstone/blog/163720

JimStoneAjax如何跟DWR竞争?相关推荐

  1. 2022-2028年中国碘矿行业竞争格局分析及市场需求前景报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国碘矿行业市场行业相关概述.中国碘矿行业市 ...

  2. 2022-2028年中国钢铁电商产业竞争现状及发展前景预测报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国钢铁电商行业市场行业相关概述.中国钢铁电 ...

  3. 2022-2028年中国钢铁智能制造产业竞争现状及发展趋势分析报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国钢铁智能制造行业市场行业相关概述.中国钢 ...

  4. 2022-2028年中国果壳活性炭行业市场发展调研及竞争战略分析报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国果壳活性炭行业市场行业相关概述.中国果壳 ...

  5. 2021-2027年中国手机天线行业竞争格局分析及发展趋势预测报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国手机天线行业市场行业相关概述.中国手机天 ...

  6. 2022-2028年中国EBA树脂(乙烯丙烯酸丁酯)产业竞争现状及发展前景规划报告

    [报告类型]产业研究 [报告价格]¥4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国EBA树脂(乙烯丙烯酸丁酯)行业市场行 ...

  7. 2022-2028年中国异戊二烯橡胶产业竞争现状及发展规模预测报告

    [报告类型]产业研究 [报告价格]¥4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国异戊二烯橡胶行业市场行业相关概述.中国 ...

  8. 2022-2028年中国自热米饭市场竞争策略及行业投资潜力预测报告

    [报告类型]产业研究 [报告价格]¥4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国自热米饭行业市场行业相关概述.中国自热 ...

  9. 2022-2028中国快时尚服装市场竞争及发展前景预测报告

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了快时尚服装行业相关概述.中国快时尚服装行业运行环境.分析了中国快时尚 ...

最新文章

  1. java和php本质_JAVA和PHP的区别
  2. Golang中常用的并发模型
  3. pytorch笔记: 搭建Skip—gram
  4. pythonexcel表格教程_python对excel表格的操作
  5. 万万没想到,枯燥的“机器学习”还可以这样学!
  6. 使用代码获得document的related document 列表
  7. geth 转账_以太坊1 - 私有链部署、挖矿、转账
  8. IntelliJ IDEA 2017.2 x64 安装Scala
  9. 职称计算机技巧集锦,2014职称计算机考试《Excel》使用技巧集锦(4)
  10. C++读取Json生成随机名字
  11. Android开发人员不得不收集的代码(持续更新中)
  12. VMware16下载与安装
  13. python绘图技巧(高清图)
  14. 爬虫入门必学——常见的几种网站类型
  15. 《数据仓库与数据挖掘教程》ch01绪论 章节整理
  16. 反向迭代器---迭代器适配器
  17. 强化学习在文本生成nlg上的作用
  18. java:获取本机IP,Linux环境下使用InetAddress.getLocalHost()方法获得127.0.0.1
  19. Windows系统时间同步出错解决办法(w32tm /register按回车,可能是为了解决时间COM注册的问题)
  20. nginx配置IP白名单

热门文章

  1. 技术研究院005---如何基于DDD构建微服务架构
  2. 大数据之-Hadoop之HDFS的API操作_定位读取文件_只读取某个block的内容_案例---大数据之hadoop工作笔记0065
  3. Unity3D引擎工作笔记0002---Unity3D 5下载安装
  4. CodeMirror动态加载和表单提交
  5. 走进COM组件系列(二)
  6. sqlplus语句示例
  7. 编程之美——数字哑谜
  8. win32开发(自定义消息)
  9. 随想录(协议栈的基本技术)
  10. 使用Arduino和超声波传感器实现简单测距