`

ajax和struts2整合返回xml和json数据

    博客分类:
  • ajax
阅读更多
最近项目用到了ajax,由于以前完只是了解了一下ajax没有实际用过,这几天用到的时候感觉出现一些莫名的错误。其主要原因就是ajax和struts2整合时,struts2的action中有错误,struts2根本不报错,导致在前端返回错误的数据,特别是json,xml还好点一次性通过。由于在struts2中使用json传数据,需要加一些jar包,本来struts2是有自带的jar包,但我我们团队已经有人使用json时,把它换了,搞得我在struts2后台调用老是不对出现错误,所以我干脆直接使用最原始的方法,不用struts2自带的生成json对象的功能,自己手动拼接json格式的字符串,因为说到底前后台传输json数据都是传送的json格式的字符串,如:json = "[{'value':'cao','title':'pan'},{'value':'caocao','title':'panpan'}]";
拼接好json格式字符串之后也不用struts2的方式返回结果,而是直接用传统的方式:
HttpServletResponse res = ServletActionContext.getResponse();
res.setCharacterEncoding("UTF-8");
res.setContentType("text/json;charset=utf-8");
res.setHeader("cache-control", "no-cache");
res.setHeader("pragma", "no-cache");
res.setDateHeader("expires", 0L);
try {
PrintWriter out = res.getWriter();
out.println(rs);
out.flush();
out.close();

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
即利用HttpServletResponse来传送数据。
最后在前台通过javaScript自带函数eval来解析json格式数据:
function callBack(){
       if(xmlhttp.readyState == 4&& xmlhttp.status ==200){
          try{
             alert(xmlhttp.responseText);
             eval("var json=(" + xmlhttp.responseText + ")");
             alert(json.length);
             for(var n = 0; n < json.length; n ++){
                alert(json[n].value);
                alert(json[n].title);
             }
          }catch(e){
             alert(e.message);
          }
       }
    }
到此json格式数据完成。
xml格式的数据传送方式跟这个差不多,只是在组织xml格式数据时跟这个方式不一样,最好知道xml的文件格式,在struts2的action中代码如下:
public void getAlldepartmentsOfOrg(){
List<Department> deps = departmentService.getAllDepartmentsOfOrg(orgId);
HttpServletResponse res = ServletActionContext.getResponse();
res.setCharacterEncoding("utf-8");
res.setContentType("text/xml;charset=utf-8");
StringBuilder sb = new StringBuilder();
sb.append("<?xml version='1.0' encoding='utf-8'?>");
sb.append("<departments>");
for(Department m:deps){
sb.append("<department>");
sb.append("<depName>" + m.getDep_name() + "</depName>");
sb.append("<depId>" + m.getDep_id() + "</depId>");
sb.append("</department>");
}
sb.append("</departments>");
try {
out.println(sb.toString());
out.flush();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ServletActionContext.getRequest().setAttribute("user", "panchao");
}
前台数据处理,主要使用javaScript来解析xml类型数据:
function callBack(){
      var selectDep = document.getElementById("dep");
      if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
        try{
        var deps = xmlhttp.responseXML.getElementsByTagName("department");
        for(var n = 0 ;n < deps.length; n ++){
          var depName = null;
          var depId = null;
          for(var i = 0;i < deps[n].childNodes.length; i ++){
             var elem = deps[n].childNodes[i].nodeName;
             var nodeValue = deps[n].childNodes[i].firstChild.nodeValue;
             if(elem == "depName"){
               depName = nodeValue;
             }else{
               depId = nodeValue;
             }
             selectDep.options[n+1] = new Option(depName,depId);
          }
        }
        }catch(e){
           alert(e.message);
        }
      }else{
        alert("无结果");
      }
   }
最后是struts.xml文件的配置,这个配置很简单,没有返回结果:
<package name="testajax" namespace="/test" extends="json-default">
  <action name="testAjaxAction" class="logAction" method="ajaxTest">  
   </action>

到此xml格式数据传送完成。
分享到:
评论

相关推荐

    json2+jsonplugin struts2整合ajax时,使用json时需要的jar包

    在Struts2与Ajax的交互中,后端返回的JSON数据需要在前端被`json2.js`解析成可操作的对象,这样才能在页面上动态更新内容。 接下来,我们讨论Struts2的`jsonplugin`。Struts2 JSON插件是官方提供的一个扩展,它使...

    AJAX和struts2传递JSON数组

    在本场景中,我们将探讨如何使用AJAX来传递JSON数组,并在Struts2的Action中接收和处理这些数据。 首先,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析...

    使用struts2 和ajax进行传递json数据

    综上所述,Struts2和Ajax的结合使用,能够实现高效的前后端数据交互,通过JSON数据格式,使数据传输更加便捷和高效。在实际项目中,开发者应熟练掌握这两种技术的结合,以提高Web应用的用户体验。

    AJAX 想Struts2后台传送Json数据并向前台返回Json格式的数据

    本主题主要探讨如何在Struts2框架下利用AJAX传递和接收JSON(JavaScript Object Notation)数据,这是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 首先,让我们理解三种在Struts2中...

    struts2与json整合

    在探讨“Struts2与JSON整合”的主题时,我们深入分析了如何在Struts2框架中集成JSON技术,实现前后端数据的高效交互。Struts2作为一款流行的Java Web开发框架,提供了丰富的功能来简化Web应用程序的开发过程。而JSON...

    JQuery发起ajax请求Struts2,并操作JSON数据的例子

    在Web开发中,jQuery、Ajax、Struts2和JSON是常用的技术栈,它们结合使用能够构建动态、交互式的网页应用。下面将详细讲解这些技术及其在"JQuery发起ajax请求Struts2,并操作JSON数据的例子"中的应用。 **jQuery** ...

    struts2+json+ajax整合例子(导入即可运行,附带详细教程)

    Struts2、JSON和AJAX是Web开发中的关键技术,它们的整合可以实现高效的数据交互和动态页面更新。本文将深入探讨这些技术以及如何在实际项目中整合它们。 **Struts2** 是一个基于MVC(Model-View-Controller)设计...

    使用Struts2的JSON插件来实现JSON数据传递

    Struts2的JSON插件正是为了方便开发者在Struts2框架中处理JSON数据而设计的。 首先,让我们深入了解JSON。JSON是一种独立于语言的数据交换格式,具有易于人阅读和编写,同时也易于机器解析和生成的特点。它的数据...

    JQuery发送Ajax请求Struts2,并返回JSON的例子

    在Web开发中,jQuery、Struts2、Ajax和JSON是常见的技术组合,它们协同工作以实现动态、异步的数据交互。本示例将探讨如何利用jQuery的Ajax功能向Struts2框架发送请求,并以JSON格式接收响应数据。下面我们将详细...

    ZTree+Struts2+ajax+json实现checkbox权限树

    【标题】"ZTree+Struts2+ajax+json实现checkbox权限树"涉及的技术栈主要集中在前端的ZTree,后端的Struts2框架,以及数据交互中的Ajax和JSON。这个项目的核心目标是构建一个可复选的权限树形结构,用户通过勾选节点...

    Struts2 ajax json使用介绍

    在Struts2中,我们可以利用Ajax和JSON来实现数据的异步交互。 **一、引入所需库** 首先,为了在Struts2中使用Ajax和JSON,我们需要引入以下库: 1. Struts2的核心库:`struts2-core.jar` 2. Struts2的JSON插件:`...

    struts2+jquery执行ajax并返回json类型数据(源码)

    在这个"struts2+jquery执行ajax并返回json类型数据"的示例中,我们将探讨如何通过Ajax技术在后台Struts2框架与前端jQuery库之间交换JSON格式的数据。 首先,Struts2是一个强大的MVC(Model-View-Controller)框架,...

    ajax struts 无刷新访问后台返回json数据

    总结,使用Ajax和Struts框架,我们可以构建一个高效的Web应用,实现在不刷新整个页面的情况下,获取和处理服务器返回的JSON数据,从而提升用户体验。通过实践和研究这个项目实例,你将能深入掌握这一技术的运用。

    jquery ajax json struts2最简单例子测试成功

    通过Struts2的插件,如struts2-json-plugin,可以在Action类中直接返回一个包含JSON数据的对象,Struts2会自动将其序列化为JSON格式。 3. **WebRoot目录**:这是Web应用程序的根目录,包含了HTML、CSS、JavaScript...

    struts2返回json

    在Struts2中,返回JSON(JavaScript Object Notation)数据类型是一种常见的需求,尤其是在开发AJAX或者前后端分离的应用时。JSON是一种轻量级的数据交换格式,它允许服务器向客户端发送结构化的数据,而无需解析...

    struts2+json

    这个资源"struts2+json"显然涉及到在Struts2框架下实现JSON(JavaScript Object Notation)数据交换,这是一种轻量级的数据交换格式,广泛用于前后端交互,特别是AJAX(Asynchronous JavaScript and XML)请求。...

    Struts2 与Jquery Ajax的json数据交换的典型范例

    总结,Struts2和jQuery的Ajax JSON数据交换涉及以下几个关键步骤:配置Struts2的JSON插件,编写返回JSON数据的Action,使用jQuery发起Ajax请求并处理返回的JSON数据。通过这种方式,可以实现客户端与服务器之间的...

    Struts2+Jquery+ajax+Json代码案例

    在“jsa03”这个文件中,可能包含了相关的JavaScript代码,这些代码负责与Struts2 Action进行Ajax通信,使用jQuery发送请求并处理返回的JSON数据。例如,可能有一个函数用于向服务器发送请求,获取数据,然后使用$....

    Struts2整合jQuery实现Ajax功能.doc

    总结来说,Struts2整合jQuery实现Ajax功能,可以让前端和后端之间进行无缝通信,提供更加动态的用户体验。通过使用jQuery简化Ajax操作,开发者可以专注于业务逻辑而不是繁琐的异步请求处理。同时,Struts2的Action...

    struts2+ajax+easyui+json+datagrid增删改查

    在Struts2和前端之间传输数据时,通常会使用JSON格式,因为它可以快速地被JavaScript处理,而无需额外的解析步骤。 **DataGrid** 是EasyUI中的核心组件,用于显示和操作表格数据。它可以动态加载数据,支持Ajax请求...

Global site tag (gtag.js) - Google Analytics