刚才写的EXT传JSON数据的方法发现一个更好的替代方法。EXT.Ajax.request里的还有一个参数jsondata他是专门用于发送JSON数据的可是我一直不知道如何在ACTION中获得JSON。刚才看了一一下IBM developerWorks 中国 的一篇文章顿时茅塞顿开。
方法如下
EXT代码
Ext.Ajax.on("requestcomplete",function(_conn,_response,_options){ if(_response.responseText == "ok") { Ext.MessageBox.alert("系统提示","添加成功"); } }) Ext.Ajax.request({ url:"addUser.do", jsonData:{username:_name.getValue(),password:_password.getValue()} });
和刚才的一样就是把pamer属性换成了jsonData
关键是JAVA的变化
//这是专门从requeset中获得JSON数据的方法。
public String requesetjson(HttpServletRequest request) {
StringBuffer jb = new StringBuffer();
String line = null;
try {
BufferedReader reader = request.getReader();
while ((line = reader.readLine()) != null)
jb.append(line);
} catch (Exception e) {
}
return jb.toString();
}
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
//把获得JSON数据的string放到org.json中的类库中一切Ok。
JSONObject jsonObject = new JSONObject(requesetjson(request));
Userinfo userinfo = new Userinfo((String) jsonObject.get("username"),
(String) jsonObject.get("password"));
userinfoDAO.save(userinfo);
response.getWriter().write("ok");
return null;
}
我一直以为可以用getpam之类的方法可以实现,晕。还是懂得太少呀。