`
vorce
  • 浏览: 5001 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

struts2+json简单示例

    博客分类:
阅读更多

本文主要是使用struts2 和 json 做一个简单的示例。

 

1、环境

 

struts2的基本配置就不赘述了,以下是此demo用到的所有jar包:

commons-fileupload-1.2.2.jar;
commons-io-2.0.1.jar;
commons-lang3-3.1.jar;
commons-logging-1.1.1.jar;
freemarker-2.3.19.jar;
javassist-3.11.0.GA.jar;
json-lib-2.3-jdk15.jar;
ognl-3.0.5.jar;
struts2-core-2.3.4.1.jar;
struts2-json-plugin-2.3.4.1.jar;
xwork-core-2.3.4.1.jar;
  这些包都能在下载好的struts2下的lib目录找到,我使用的版本是struts-2.3.4.1

2、示例

struts2自带了json插件,所以在使用上不会像以前那么繁琐。
下面是Action的代码:
	private DemoService demoService = new DemoServiceImpl();
	private User user;
	/**
	 * 执行方法
	 */
	public String show() throws Exception {
		user = demoService.getUserById(userId);
		return SUCCESS;
	}

  这里的user是一个标准的pojo对象,service通过user的ID返回一个对象。

 

然后是struts.xml代码:

<package name="demo" extends="json-default" namespace="/json">
		<action name="*Action" class="com.demo.action.DemoAction" method="{1}">
			<result type="json" />
		</action>
	</package>

  在使用json传递对象时,包必须继承json-default,而非struts-default包,不然是无法识别type为json的返回结果的。

 

下面是前台页面demo.jsp的主要实现代码:

<script type="text/javascript">
	function getJsonInfo() {
		var val = $("#userId").val();
		$.ajax({
			type : "post",
			url : "json/showAction",
			dataType:"json",
			data : {'userId':val},
			success : function(data) {
				$("#username").text(data.user.username);
				$("#password").text(data.user.password);
				$("#birthday").text(data.user.birthday);
				$("#div_display").show();
			}
		});
	}
</script>

  通过ajax直接传递id到后台,获得user对象。

:网上找资料,发现有些人通过一下的方式传递json:

	public String show() throws Exception {
		user = demoService.getUserById(userId);
		JSONObject json = JSONObject.fromObject(user);	
		System.out.println("json is " + json);
		return SUCCESS;
	}

  上面代码经测试,不知道是不是我的使用方法不对,打印语句无法执行到,而且,前台也无法得到数据。

 

还有就是,当result里面的Type是json时,它回默认把action里面所有序列化过的属性全部传递出去,而我们的业务类往往不需要这么做,所以:

 

	@JSON(serialize = false)  
	public DemoService getDemoService() {
		return demoService;
	}

  只要在get该属性的方法前面注明不序列化它就可以了。

 

如有错误请及时指出

 

相关博文介绍: Struts2 json ajax动态显示列表 

  关于Struts2 json-plugin Date日期格式的处理

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics