浏览 4155 次
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-12-23
后来有天下午,翘了一堂英语课写了JSON_REST的第一个版本。他是一个Servlet能够接受诸如 http://www.example.com/json_rest?service=TestService&method=now 的URI返回一个JSON风格的字符串,其可序列化任何POJO对象。如上例返回的是 {date:23,day:0,hours:19,minutes:54,month:11,seconds:6,time:1198410846703,timezoneOffset:-480,year:107} 序列化在JsonExcanger类中完成,其方法更是老生常谈。用Reflect,以及Beans包内提供的自省方法扫描setter域得到porperty的名字以及其的getter方法。 其使用流程相当简单,先做一个POJO的类,将业务流程封装其中,然后将提供RPC的方法(Web Method),其参数必须为简单变量,或其数组。然后将相关参数注册在包中config/json_rest.xml下,例子已给出。 <ws service_name="TestService" service_class="sample_lws.TestClass" session="false"> <method name="echo" param_sum="1"> <param name="str" type="String[]"/> </method> <method name="now" param_sum="0"/> <method name="testNull" param_sum="1"> <param name="str" type="String"/> </method> </ws> 在浏览器中就可以调用了,方法很简单。 如http://localhost/json_rest?service=TestService&method=echo&str_lenth=4&str_0=xhyccc&str_1=hi&str_2=dfsfsfs&str_3=retertyryt 返回["xhyccc","hi","dfsfsfs","retertyryt"](Json 的数组)数组的调用上要先声明arrayname_lenth数组大小。然后arrayname_number数组每项的值。这样就可以应付绝大多数应用。 至于客户端肯定用javascript最恰当。下面是我用prototype.js开发出来的客户端应用例子。 <script language="javascript"> function mail_chk() {/*看看Email被注册没有*/ var par="service=reg&method=emailCheck&email="+$F("email"); new Ajax.Request('json_rest', { method: 'get', parameters: par, onComplete: function(rep){ res=eval('('+rep.responseText+')');/*编译后的JSON对象*/ alert(res);/*对此对象的处理*/ }, onException:function(){ alert('error in rpc '+service); } } ); } </script> 很简单的应用,大家不要笑,我毕竟只是个华中科技大学的大三学生。第一次发文就发SOA。时分。。。。用武汉话就是闹眼子,望大家见谅。对了整个架构我起了个还蛮好听的名字--Lightech! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-01-01
下次没有源码的不要发上来,
一个7k的东西没有源码 你真nb |
|
返回顶楼 | |
发表时间:2008-01-02
这种钻研精神值得大家学习。呵呵
|
|
返回顶楼 | |
发表时间:2008-01-02
完全没有找到楼主的主题,晕了
|
|
返回顶楼 | |
发表时间:2008-01-08
longleg 写道 完全没有找到楼主的主题,晕了
就是我做了一个Servlet可以映射RESTful URI与POJOs方法。并且把返回值转化成了JSON式的数据 |
|
返回顶楼 | |
发表时间:2008-01-08
longleg 写道 完全没有找到楼主的主题,晕了
你把那个servlet配置到你的TOMCAT中按JSON_REST.xml提供的方法注册你的POJOS类就可以了。 |
|
返回顶楼 | |