JimStoneAjax是一套灵活的远程调用JavaBean的Ajax框架,部署环境很简单。
(JimStoneAjax交流群:366984517)
准备工作:
进入[下载]页面,选择“完整包”进行下载。完整包主要包含以下文件:
那么我们开启这段旅程吧。
- 首先,创建一个Spring MVC的web 项目并将相关包拖入项目库目录下。
具体的 Spring MVC项目的创建细节不在本文的讲解范围之内。
创建好项目后,启用Spring 注解,将相关的 Jar 包拷贝到项目的lib目录下。
2、从jimstone-ajax-release-x.x.jar中将默认配置文件和控制器文件拉入项目
从 jimstone-ajax-release-x.x.jar 中拖出配置文件jsajax.properties和控制器模版STAjaxCtrlDefault.java到我们的项目资源src目录下。其中STAjaxCtrlDefault.java 为一个标准的Spring MVC控制器,我们将这个文件放到 com.jsajax.test 包下。
3、创建对外开放的Service服务类
创建一个服务类FirstModel,最好继承自STAjaxRender 类。当然,也可以通过实现接口ISTAjaxModel 来把服务公开出来。
把 FirstModel 类通过注解注入为Service。
@Service("firstModel") public class FirstModel extends STAjaxRender{ }
4、编写对外开放的方法
从 FirstModel 中加入一个取最大值的方法。这里要注意的是,JimStoneAjax 框架通过返回类型来限定是否方法对外公开的,所有所有纯粹取运行返回结果的方法都需要通过 STDataResult 对象包装一下。
public STDataResult<Long> testMax(Long a,Long b) { return STDataResult.successByDatas((a>b) ? a : b); }
STDataResult 对象包装的很好,很适合用作默认的 Ajax 应用返回值,下面给出几个常用的构造方法说明:
STDataResult.succ()
- 返回状态为成功,直接返回
STDataResult.succByMessage(message)
- 返回状态为成功,并且设置一条自定义成功的消息
STDataResult.succByMessage(message,data)
- 返回状态为成功,并且设置一条自定义成功的消息同时返回成功的结果
STDataResult.successByDatas(data)
- 返回状态为成功,并且直接返回成功的结果
STDataResult.err()
- 返回状态为失败,直接返回
STDataResult.err(message)
- 返回状态为失败,并且返回自定义的失败消息
STDataResult.err(errorCode)
- 返回状态为失败,通过错误码设置失败消息
STDataResult.errorWithParams(errorCode,Object...params)
- 返回状态为失败,通过错误码设置失败消息,并且动态传入变量组织失败文本
我们再实现一个取最小值的方法。这次的要求是第一个参数不能小于5,第二个参数不能大于100,并且成功的时候有个友好的提示。
public STDataResult<Long> testMin(Long a,Long b) { if (a < 5) { return STDataResult.err("第一个参数不能小于5"); } if (b > 100) { return STDataResult.err("第二个参数不能大于100"); } return STDataResult.succByMessage("获取最小值成功",(a>b) ? b : a); }
5、从客户端直接调用
创建 index.jsp,加入标签引用。
<%@ taglib uri="http://www.jimstone.com/ajax" prefix="ajax" %>JimStoneAjax默认生成器生成的客户端JS要用到jquery,所以要加入 JQuery 引用。
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>通过标签做脚本引入。
<ajax:script value="firstModel" json="true"></ajax:script>在HTML内容段直接调用。
<a onclick="firstModel.testMax(15,20,function(data) { alert(data.datas); });" href="javascript:void(0);">取最大值</a><br> <a onclick="firstModel.testMin(50,105,function(data) { alert(data.message); });" href="javascript:void(0);">取最小值</a><br> <a onclick="firstModel.testMin(50,30,function(data) { alert(data.message); alert(data.datas); });" href="javascript:void(0);">再取最小值</a>点击链接可以直接看到执行结果啦。
完整的HTML请看下边:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://www.jimstone.com/ajax" prefix="ajax" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>MyAjaxTest</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <ajax:script value="firstModel" json="true"></ajax:script> </head> <body> <a onclick="firstModel.testMax(15,function(data) { alert(data.datas); });" href="javascript:void(0);">取最大值</a><br> <a onclick="firstModel.testMin(50,function(data) { alert(data.message); });" href="javascript:void(0);">取最小值</a><br> <a onclick="firstModel.testMin(50,function(data) { alert(data.message); alert(data.datas); });" href="javascript:void(0);">再取最小值</a> </body> </html>
是不是很简单啊!如果你的项目本来就是基于Spring的,调用 JimStoneAjax 基本上引入相关JAR包,写个 Service,页面上就能直接用啦。确实很方便。