Ajax+Jsp+servlet+json技术的使用json数据的传输
在使用json的时候,记得必须导入如下几个.jar包,最好是手动复制.jar包只lib路径下,否则可能出现异常。
commons-beanutils.jar commons-collections.jar commons-lang-2.5.jar(必须是2.x 3.x的会报ClassNotFoundException这个异常) commons-logging.jar ezmorph-1.0.6.jar json-lib.jar.导入这些jar包以后,就可以在后台使用json来进行数据处理了。
JSONArray的使用:
这里做一个简单的示例:
定义一个Person类:
public class Person{
private String name;
private String sex;
private int age;
....
}
假如我们在servlet中使用了json
public class Test extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
resp.setContentType("text/xml;character=utf-8");
resp.setHeader("Cache-Control", "no-cache");
try{
Person p =new Person();
p.setName("小宝");
p.setAge(3);
p.setSex("男");
List<Person> list =new ArrayList<Person>();
list.add(p);
try{
JSONArray json =JSONArray.fromObject(list);
JSONObject jb =new JSONObject();
jb.put("person", json);
resp.getWriter().write(jb.toString());
}catch(IOException e){
e.printStackTrace();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
前台的Ajax接收到后台返回json的数据
<script type="text/javascript">
function validate(obj){
var xmlhttp;
if(window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
var back =xmlhttp.responseText;
//在这里遍历输出返回来的信息即可 这个没有测试过
for(i in back) {
back[i] .name=
back[i].age=
........
}
}
}
var url ="fan/servlet/demo?name="+obj;
xmlhttp.open("POST",url,true);
xmlhttp.send();
}
</script>