Ajax返回Json在Java中的实现
来源:广州中睿信息技术有限公司官网
发布时间:2012/10/21 23:25:16 编辑:admin 阅读 1458
新建一个SecondTest.html页面,定义一个按钮,并给这个按钮绑定事件ajaxJson()。在JS中实现AJAX,这里的AJAX相对于上一篇中的,我做了简单的封装,将原有的代码分成三个方法,

新建一个SecondTest.html页面,定义一个按钮,并给这个按钮绑定事件ajaxJson()。在JS中实现AJAX,这里的AJAX相对于上一篇中的,我做了简单的封装,将原有的代码分成三个方法,分别是create()、callback()、run()。

  create方法是用来创建XMLHttp对象的,callback是用来实现回调函数的,run方法是核心方法。具体代码如下:

  create():

View Code
  function create(){                  if(window.XMLHttpRequest){                      xmlHttp=new XMLHttpRequest();                  }else if(window.ActiveXObject){                      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP")                  }              }

  callback():

View Code
  function callback(){                  if(xmlHttp.readyState==4){                      if(xmlHttp.status==200){                          //要实现的操作                      }else{                          alert("AJAX服务器返回错误!");                      }                      }              }

  run():

View Code
  function run(url){                  create();                  xmlHttp.open("POST",url,true);                  xmlHttp.onreadystatechange=callback;                  xmlHttp.send();              }

  以上三个方法写好后,在ajaxJson()方法中直接调用run方法并将请求当参数传入进去。代码如下:

View Code
  function ajaxJson(){                  run("test.do?method=jsonTest&&msg="+new Date());              }

  在AjaxController类的中新建jsonTest方法,在JAVA中实现Json是需要Json架包的,Json的架包有:json-lib-2.3-jdk15.jar,ezmorph-1[1].0.6.jar,commons-logging-tests.jar,commons-logging-api-1.1.1.jar,commons-logging-adapters-1.1.1.jar,commons-logging-1.1.1-sources.jar,commons-logging-1.1.1-javadoc.jar,commons-logging-1.1.1.jar,commons-lang.jar,commons-collections-3[1].2.1.jar,commons-beanutils-core.jar,commons-beanutils-bean-collections.jar,commons-beanutils.jar。看着有点多哈,可以自己去CSDN上面找,我试着删掉一些,但发现少了会不好使,所以为了保险还是把这些都加进去吧。

  在开发过程中一般数据都是从数据库中取出来的,习惯性的我们会在程序中将取出的数据存到List中,而Json架包中正好有封装好的方法能将List转换为Json。在这个例子中我们自己制造一些假数据放到List中,然后再将List转换为Json,再返回给前台。代码如下:

View Code
  public ActionForward jsonTest(ActionMapping mapping, ActionForm form,              HttpServletRequest request, HttpServletResponse response)              throws Exception {          //制造假数据          ArrayList<UserModel> list=new ArrayList<UserModel>();          UserModel user1=new UserModel();//用户对象1          user1.setUserId(1);          user1.setUserName("哈哈");          user1.setUserSex("男");          list.add(user1);                    UserModel user2=new UserModel();//用户对象2          user2.setUserId(2);          user2.setUserName("呵呵");          user2.setUserSex("女");          list.add(user2);          //将List转化为JSON          JSONArray json=JSONArray.fromObject(list);          //设置编码          response.setCharacterEncoding("gbk");          //写入到前台          response.getWriter().write(json.toString());          return null;      }

  后台部分写完了,现在前台SecondTest.html页面需要接收后台反馈来的数据,这个时候就需要在回调函数中接收Json数据。JS代码如下:

View Code
  //回调函数          function callback(){              if(xmlHttp.readyState==4){                  if(xmlHttp.status==200){                      var xmlDoc=xmlHttp.responseText;                      var data=eval(xmlDoc);                      alert(data[0].userId+","+data[0].userName+","+data[0].userSex);                      alert(data[1].userId+","+data[1].userName+","+data[1].userSex);                  }else{                          alert("AJAX服务器返回错误!");                  }                  }          }

  以上就完成了Ajax返回Json在Java中的实现。

联系我们CONTACT 扫一扫
愿景:成为最专业的软件研发服务领航者
中睿信息技术有限公司 广州•深圳 Tel:020-38931912 务实 Pragmatic
广州:广州市天河区翰景路1号金星大厦18层中睿信息 Fax:020-38931912 专业 Professional
深圳:深圳市福田区车公庙有色金属大厦509~510 Tel:0755-25855012 诚信 Integrity
所有权声明:PMI, PMP, Project Management Professional, PMI-ACP, PMI-PBA和PMBOK是项目管理协会(Project Management Institute, Inc.)的注册标志。
版权所有:广州中睿信息技术有限公司 粤ICP备13082838号-2