`
kanpiaoxue
  • 浏览: 1777881 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Struts2 Ajax 应用(不再书写type="json")

阅读更多

最近看了一些帖子,发现一些朋友在使用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文件上传 input type=file,选择相同文件也提交 附带类库

    JSON、Struts2和Ajax是Web开发中的关键技术,它们在文件上传场景中有着广泛的应用。在本项目中,我们将深入探讨如何使用这些技术实现文件上传,特别是当用户选择相同的文件进行多次提交时的情况。我们将使用...

    Struts2 ajax json使用介绍

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

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

    在Struts2框架中整合Ajax以实现异步数据交互,JSON(JavaScript Object Notation)扮演了关键角色。JSON是一种轻量级的数据交换格式,它允许Web应用与服务器之间高效地传输数据,而无需进行繁琐的HTTP请求。在这个...

    AJAX和struts2传递JSON数组

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

    struts2 ajax json

    通过以上步骤,你可以在Struts2应用中顺利地使用Ajax和JSON,实现动态更新和高效的数据交换。记住,良好的前端设计和合理的后端架构相结合,才能充分利用Ajax和JSON的优势,提升应用的性能和用户体验。在实际项目中...

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

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

    struts2+json

    总的来说,"struts2+json"资源涉及到了Struts2框架中的Action设计、拦截器机制、结果类型的配置,以及AJAX和JSON在Web应用中的使用。理解这些知识点对于开发动态、交互性强的Java Web应用至关重要。

    Struts2+ajax+json返回list.docx

    在Web开发中,Struts2、Ajax和JSON的结合使用能实现异步数据交互,提高用户体验。本实例展示了如何在Struts2框架下,通过Ajax发送请求获取JSON数据,并将数据返回到JSP页面,以填充下拉列表(`&lt;s:select/&gt;`标签)。 ...

    struts2ajax项目

    在Struts2框架中整合Ajax,可以实现异步数据交互,提高应用的响应速度和交互性。 本项目"struts2ajax"是基于Struts2框架,利用jQuery库实现的Ajax功能示例。jQuery是一个轻量级的JavaScript库,它简化了DOM操作、...

    AjaxStruts2Json实例

    **AjaxStruts2Json实例详解** 在Web开发中,用户界面的实时性和...实践这个实例,开发者可以更深入地理解Struts2、Ajax以及JSON在实际项目中的应用。同时,也提醒我们在追求交互效果的同时,不要忽视了安全性的保障。

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

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

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

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

    Jquery struts2 json 实现ajax

    综上所述,通过jQuery的Ajax功能与Struts2的JSON支持相结合,我们可以实现前后端无刷新的数据交互,提升Web应用的响应速度和用户体验。在实际开发中,要灵活运用这些技术,并注意安全性和性能优化。

    Struts+Jquery+Ajax+Json应用实例

    Struts、jQuery、Ajax以及JSON是Web开发中的四个关键技术,它们在构建动态、交互式的Web应用程序中发挥着重要作用。下面将分别介绍这些技术的核心概念及其在实际应用中的结合使用。 **Struts框架**:Struts是Apache...

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

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

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

    在本场景中,我们将重点讨论如何利用Struts2作为后台处理框架,与前端Ajax通过JSON(JavaScript Object Notation)数据格式进行数据交换。 **Struts2框架** Struts2是一个基于MVC(Model-View-Controller)设计模式...

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

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

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

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

    struts2与json整合

    例如,在前端使用jQuery等库发起AJAX请求,获取或发送JSON格式的数据,而在后端,Struts2框架则能够无缝处理这些JSON数据,从而构建出响应迅速、用户体验优秀的Web应用。 综上所述,Struts2与JSON的整合不仅提升了...

    struts2+json/ajax

    在"struts2+json/ajax"的组合中,Struts2框架与JSON和Ajax协同工作,提供了一个强大的机制来处理客户端和服务器端的数据交互。具体来说,当用户在前端执行某个操作时,Ajax会发送一个HTTP请求到服务器,这个请求通常...

Global site tag (gtag.js) - Google Analytics