Gson+Struts2 例子

Gson+Struts2 例子

该实例只是测试,其实在action中,不需要一个user的全局变量(为了接收ID,懒得再去声明一个变量),

这样会破坏了Gson的原则,可以放到execute方法中。

gson包的下载地址:

http://code.google.com/p/google-gson/downloads/list

放到lib文件夹中。

struts.xml配置:

<action name="gsonaction" class="com.action.gson.GsonAction">  </action>

所属的包,没有必要继承自json-default

struts2 action 代码:

@Controller
public class GsonAction extends ActionSupport {
 @Resource
 private IUserDao iud;
 private Users user;
 public Users getUser() {
  return user;
 }
 public void setUser(Users user) {
  this.user = user;
 }
 public String execute() {
  Integer uid = user.getUserid();// 获取JSP页面中select列表的传递过来的用户ID
  this.user = iud.findById(uid);// 根据用户的ID获取用户实体
  Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
  String res = gson.toJson(this.user);
  HttpServletResponse response = ServletActionContext.getResponse();
  response.setContentType("application/json;charset=utf-8");
  try {
   PrintWriter out = response.getWriter();
   out.print(res);
   out.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
  return null;
 }
}

JSP 页面部分代码(使用jQuery):

function getgsoninfo() {
 var val = $("#person").val();//获取选中的用户ID
 $.ajax( {
  type:"post",
  url : "gsonaction.action",//action的地址
  data : "user.userid=" + val,
  success : function(data) {
   alert(data.username);//弹出用户名,data为返回的user实体
  }
 });
}

相关推荐