JimStoneAjax如何跟DWR竞争?

    (JimStoneAjax交流群:366984517)
html

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

     JimStoneAjax能够跟DWR竞争嘛?答案是确定的!咱们来看看它有哪些优势居然可以跟DWR匹敌。 ajax

       一、配置简单甚至无配置

        JimStoneAjax 配置简单,甚至您能够不须要进行任何配置。
浏览器

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

       二、编写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引用。
app

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

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

        刚才咱们曾经提到过 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);
});


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

        JimStoneAjax的框架设计很是灵活,您能够自定义参数传递和转换方法。

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

        若是您须要传递自定义对象,您须要实现接口 ISTMethodParamLoader,而且加入配置项 jsajax.class.serviceLoader。

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

    五、天生支持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。

    六、生成JS文件体积极小而且支持客户端缓存,能够自定义JavaScript生成规则


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

        默认提供生成的JS若是不能知足您的需求,您彻底能够定义本身的JS生成器。须要实现ISTAjaxJavascriptMaker接口,而且加入配置项 jsajax.class.jsMaker。

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

    它的JSTL标签只有三种:


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


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

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

相关文章
相关标签/搜索