Action返回Json数据方法
在网页里面,通常需要从数据库获得数据,然后返回前台Json格式的数据,通过以下方法,便可以在SSH框架里的Action对象中,将获得的数据转换成Json数据。
1.导包。
将以下的包导入到项目中:
注意:其中commons-logging-1.1.1.jar这个包与之前整合SSH导入的包有冲突,因此删除版本低的那个。
2.Action里实现Json转换。
如下getUserByName()方法(详情看备注)。
package com.cjr.web.action;
import java.util.List;
import org.apache.struts2.ServletActionContext;
import com.cjr.domain.User;
import com.cjr.service.UserService;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import net.sf.json.JSONArray;
public class UserAction extends ActionSupport implements ModelDriven<User> {
private User user = new User();
private UserService us;
public String getUserByName() throws Exception {
List<User> list = us.getUserByName(user.getU_name());
// 1.将字符串转换称json
String json = JSONArray.fromObject(list).toString();
// 2.将json发送给浏览器
ServletActionContext.getResponse().setContentType("application/json;charset=utf-8");
ServletActionContext.getResponse().getWriter().write(json);
return null;
}
public void setUs(UserService us) {
this.us = us;
}
@Override
public User getModel() {
// TODO Auto-generated method stub
return user;
}
}
3.前台URL或者ajax调用接口。
然后前台ajax直接后台写的接口便可,如下jsp代码。<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
<script type="text/javascript">
function fun1() {
alert("方法进入成功!!");
$.ajax({
type : "post",
url : "${pageContext.request.contextPath}/UserAction_ajaxTest",
async : true,
dataType :"json",
success : function(date) {
alert("请求成功!!"+date);
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
alert("加载失败!请重试!");
}
});
}
</script>