最近看了一些帖子,发现一些朋友在使用Ajax和Struts2的结合的时候遇到了困惑和问题。特此,我将自己在实际应用中的解决方案拿出来和大家共享。希望可以给那些还没有找到更合适的Ajax方法的朋友提供一些启发。
问题:
struts2 的书籍以及文章中,多数在Ajax应用的时候,要求在struts.xml文件中需要对ajax的返回类型进行配置。如:
type="json"。使用这个配置的时候,必须使用struts2的json插件的jar包。
解决方案:
我给出的方案是:
不使用struts2的json插件的jar包,不需要配置struts.xml中的type="json"
具体实现如下:
使用json-lib.jar(下载地址:http://sourceforge.net/projects/json-lib/files/),需要的环境和jar包:
Json-lib requires (at least) the following dependencies in your classpath:
- jakarta commons-lang 2.4
- jakarta commons-beanutils 1.7.0
- jakarta commons-collections 3.2
- jakarta commons-logging 1.1.1
- ezmorph 1.0.6
web页面,js里面,我书写的代码(jQuery):
var options = {
url: 'test/jsonTest.do',
type:'POST',
dataType:'json',//指定返回数据的解析类型,也可以是 xml
data:{
name:'lilei',
sex:'1'
},
success:function(rs){
if(rs.person){
alert(rs.name + '\t' + rs.sex);
}
},
error: function(rs){},
timeout:3000
};
$.ajax(options);
struts.xml 配置文件:
<package name="test" namespace="/test" extends="struts-default">
<action name="jsonTest" class="test.JsonTestAction" method="jsonTest">
<!-- 注意,这里我什么都没有写,是空的 因为JsonTestAction里面的jsonTest的返回类型为 void -->
</action>
</package>
Action JsonTestAction的代码:
public class JsonTestAction extends ActionSupport implements
ServletResponseAware {
private HttpServletResponse response;
// -------------- tool methods
/**
* 注意:因为struts2.xml 里面没有写 <result></result> 这个项,所有这里的类型是 void,而不是 String
*
*
*
*/
public void jsonTest(){
String name = ServletActionContext.getRequest().getParameter("name");
Integer sex = Integer.valueOf(ServletActionContext.getRequest().getParameter("sex"));
JSONObject json = new JSONObject();
json.put("name",name);
if(sex.initValue == 1){
json.put("sex","男"):
}else{
json.put("sex","女"):
}
printToJson(json.toString());
}
/**
* 这里我指定了放回的类型 "text/json" 也可以是xml等其他类型
* 用response直接将数据打回到页面的 ajax 的请求里面去
*
*/
private void printToJson(String jsonStr) {
try {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/json");
response.setDateHeader("Expires", 0);
PrintWriter out = response.getWriter();
out.println(jsonStr);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//实现 ServletResponseAware 接口,必须实现的方法
public void setServletResponse(HttpServletResponse response) {
this.response = response;
}
}
这样,就可以通过上面的Action类,将所要的数据,通过response直接到回到ajax的请求里面去。
问题解决。
如果朋友们有更好的方法,请在这里留言。谢谢
分享到:
相关推荐
JSON、Struts2和Ajax是Web开发中的关键技术,它们在文件上传场景中有着广泛的应用。在本项目中,我们将深入探讨如何使用这些技术实现文件上传,特别是当用户选择相同的文件进行多次提交时的情况。我们将使用...
在Struts2中,我们可以利用Ajax和JSON来实现数据的异步交互。 **一、引入所需库** 首先,为了在Struts2中使用Ajax和JSON,我们需要引入以下库: 1. Struts2的核心库:`struts2-core.jar` 2. Struts2的JSON插件:`...
在Struts2框架中整合Ajax以实现异步数据交互,JSON(JavaScript Object Notation)扮演了关键角色。JSON是一种轻量级的数据交换格式,它允许Web应用与服务器之间高效地传输数据,而无需进行繁琐的HTTP请求。在这个...
在本场景中,我们将探讨如何使用AJAX来传递JSON数组,并在Struts2的Action中接收和处理这些数据。 首先,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析...
通过以上步骤,你可以在Struts2应用中顺利地使用Ajax和JSON,实现动态更新和高效的数据交换。记住,良好的前端设计和合理的后端架构相结合,才能充分利用Ajax和JSON的优势,提升应用的性能和用户体验。在实际项目中...
【标题】"ZTree+Struts2+ajax+json实现checkbox权限树"涉及的技术栈主要集中在前端的ZTree,后端的Struts2框架,以及数据交互中的Ajax和JSON。这个项目的核心目标是构建一个可复选的权限树形结构,用户通过勾选节点...
总的来说,"struts2+json"资源涉及到了Struts2框架中的Action设计、拦截器机制、结果类型的配置,以及AJAX和JSON在Web应用中的使用。理解这些知识点对于开发动态、交互性强的Java Web应用至关重要。
在Web开发中,Struts2、Ajax和JSON的结合使用能实现异步数据交互,提高用户体验。本实例展示了如何在Struts2框架下,通过Ajax发送请求获取JSON数据,并将数据返回到JSP页面,以填充下拉列表(`<s:select/>`标签)。 ...
在Struts2框架中整合Ajax,可以实现异步数据交互,提高应用的响应速度和交互性。 本项目"struts2ajax"是基于Struts2框架,利用jQuery库实现的Ajax功能示例。jQuery是一个轻量级的JavaScript库,它简化了DOM操作、...
**AjaxStruts2Json实例详解** 在Web开发中,用户界面的实时性和...实践这个实例,开发者可以更深入地理解Struts2、Ajax以及JSON在实际项目中的应用。同时,也提醒我们在追求交互效果的同时,不要忽视了安全性的保障。
总结,Struts2和jQuery的Ajax JSON数据交换涉及以下几个关键步骤:配置Struts2的JSON插件,编写返回JSON数据的Action,使用jQuery发起Ajax请求并处理返回的JSON数据。通过这种方式,可以实现客户端与服务器之间的...
本主题主要探讨如何在Struts2框架下利用AJAX传递和接收JSON(JavaScript Object Notation)数据,这是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 首先,让我们理解三种在Struts2中...
综上所述,通过jQuery的Ajax功能与Struts2的JSON支持相结合,我们可以实现前后端无刷新的数据交互,提升Web应用的响应速度和用户体验。在实际开发中,要灵活运用这些技术,并注意安全性和性能优化。
Struts、jQuery、Ajax以及JSON是Web开发中的四个关键技术,它们在构建动态、交互式的Web应用程序中发挥着重要作用。下面将分别介绍这些技术的核心概念及其在实际应用中的结合使用。 **Struts框架**:Struts是Apache...
在Web开发中,jQuery、Struts2、Ajax和JSON是常见的技术组合,它们协同工作以实现动态、异步的数据交互。本示例将探讨如何利用jQuery的Ajax功能向Struts2框架发送请求,并以JSON格式接收响应数据。下面我们将详细...
在本场景中,我们将重点讨论如何利用Struts2作为后台处理框架,与前端Ajax通过JSON(JavaScript Object Notation)数据格式进行数据交换。 **Struts2框架** Struts2是一个基于MVC(Model-View-Controller)设计模式...
Struts2、JSON和AJAX是Web开发中的关键技术,它们的整合可以实现高效的数据交互和动态页面更新。本文将深入探讨这些技术以及如何在实际项目中整合它们。 **Struts2** 是一个基于MVC(Model-View-Controller)设计...
Struts2的JSON插件正是为了方便开发者在Struts2框架中处理JSON数据而设计的。 首先,让我们深入了解JSON。JSON是一种独立于语言的数据交换格式,具有易于人阅读和编写,同时也易于机器解析和生成的特点。它的数据...
例如,在前端使用jQuery等库发起AJAX请求,获取或发送JSON格式的数据,而在后端,Struts2框架则能够无缝处理这些JSON数据,从而构建出响应迅速、用户体验优秀的Web应用。 综上所述,Struts2与JSON的整合不仅提升了...
在"struts2+json/ajax"的组合中,Struts2框架与JSON和Ajax协同工作,提供了一个强大的机制来处理客户端和服务器端的数据交互。具体来说,当用户在前端执行某个操作时,Ajax会发送一个HTTP请求到服务器,这个请求通常...