用xml传单个数据
首先在servlet类里面写好要传的数据,Dog是模拟从数据库中提取的内容,
用response.getwrite().append()传回数据,要注意表头<?xml version='1.0'?>不能写错,根是唯一的
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //response.getWriter().append("Served at: ").append(request.getContextPath()); request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); //模拟从数据库中提取的信息 Dog d = new Dog(); d.setName("name"); d.setZhuren("haha"); d.setAge(2); d.setZhonglei("aaa"); //用xml往回传 response.getWriter().append("<?xml version='1.0'?>");//表头 response.getWriter().append("<dog>");//根,是唯一的 response.getWriter().append("<name>"+d.getName()+"</name>"); response.getWriter().append("<zhuren>"+d.getZhuren()+"</zhuren>"); response.getWriter().append("<age>"+d.getAge()+"</age>"); response.getWriter().append("<zhonglei>"+d.getZhonglei()+"</zhonglei>"); response.getWriter().append("</dog>"); }
在jsp页面
首先引用"js/jquery-1.11.1.min.js",在#d元素上写一个click事件,里面用ajax引擎处理数据,
url是接收数据的路径,datatype是返回什么类型的数据
•"xml": 返回 XML 文档,可用 jQuery 处理。
•"html": 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。
•"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 "cache" 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)
•"json": 返回 JSON 数据 。
•"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
•"text": 返回纯文本字符串
<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("#d").click(function(){ $.ajax({ url:"textdog",//从textdog的servlet类中接受数据 data:{}, type:"POST", dataType:"xml",//返回类型是xml success:function(aaa){ //解析返回的aaa var n = $(aaa).find("name").text(); var z = $(aaa).find("zhuren").text(); var a = $(aaa).find("age").text(); var zl =$(aaa).find("zhonglei").text(); //在页面上把数据显示在通过#u找到的元素里面 $("#u").append("<li>"+n+"</li>"); $("#u").append("<li>"+z+"</li>"); $("#u").append("<li>"+a+"</li>"); $("#u").append("<li>"+zl+"</li>"); } }); }); }); </script>
演示结果:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
用xml传集合,
首先在servlet类里面写好要传的数据,跟单个基本一样,注意一下根,因为有多个dog 所以要用一个更大的chongwu作为根, 把所有的dog包起来
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); //模拟从数据库提取的数据 Dog d1 = new Dog(); d1.setName("日天"); d1.setZhuren("爸爸"); d1.setAge(1); d1.setZhonglei("泰迪"); Dog d2 = new Dog(); d2.setName("拖拖"); d2.setZhuren("坨坨粑粑"); d2.setAge(2); d2.setZhonglei("金毛"); Dog d3 = new Dog(); d3.setName("凡凡"); d3.setZhuren("凡凡爸爸"); d3.setAge(3); d3.setZhonglei("哈士奇"); //将d1d2d3放到list中 ArrayList<Dog> list = new ArrayList<>(); list.add(d1); list.add(d2); list.add(d3); //用xml把数据传到页面 response.getWriter().append("<?xml version='1.0'?>");//表头 //根,这里因为不只一个dog,所以我们用一个更大的chongwu包起来 response.getWriter().append("<chongwu>"); //遍历 for(Dog d : list){ response.getWriter().append("<dog>"); response.getWriter().append("<name>"+d.getName()+"</name>"); response.getWriter().append("<zhuren>"+d.getZhuren()+"</zhuren>"); response.getWriter().append("<age>"+d.getAge()+"</age>"); response.getWriter().append("<zhonglei>"+d.getZhonglei()+"</zhonglei>"); response.getWriter().append("</dog>"); } response.getWriter().append("</chongwu>"); }
在jsp,同样先引入jar包
要先把所有的dog放到一个dogs里面,相当于一个数组,
<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("#d").click(function(){ $.ajax({ url:"textdog1", data:{}, type:"POST", dataType:"XML", success:function(hhh){ //先把所有的dog放到dogs里面,相当于一个数组,不是一个对象 var dogs = $(hhh).find("dog"); //tb是找到的jquery对象 var tb =$("#tb"); //循环dogs for(var i =0;i<dogs.length;i++){ var n = $(dogs).eq(i).find("name").text(); var z = $(dogs).eq(i).find("zhuren").text(); var a = $(dogs).eq(i).find("age").text(); var lei =$(dogs).eq(i).find("zhonglei").text(); //把信息拼接 var tr = "<tr>"; tr += "<td>"+n+"</td>"; tr += "<td>"+z+"</td>"; tr += "<td>"+a+"</td>"; tr += "<td>"+lei+"</td>"; tr += "</tr>"; //把tr放到td中 $(tb).append(tr); } } }) }) }) </script>
结果演示:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
用json传数据,首先导入json jar包,在servlet类里面写好要传的数据
先把dog放在jo这个json中,然后把jo放到obj这个json中,在页面中用jo中的key就可以直接取值了
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //编码格式 request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); // Dog d = new Dog(); d.setName("拖拖"); d.setZhuren("李哈哈"); d.setAge(2); d.setZhonglei("金毛"); //把dog放到json中,用put赋值,key和value JSONObject jo = new JSONObject(); jo.put("name",d.getName()); jo.put("zhuren", d.getZhuren()); jo.put("age", d.getAge()); jo.put("zhonglei", d.getZhonglei()); //obj这个json中再放jo这个json,obj里面放着jo JSONObject obj = new JSONObject(); obj.put("dog", jo); response.getWriter().append(jo.toString()); }
在jsp中,把返回数据类型改为json,然后把数据显示在页面中
<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("#d").click(function(){ $.ajax({ url:"textjson1",//从textjson1的servlet类中接受数据 data:{}, type:"POST", dataType:"JSON",//返回的数据类型是json success:function(aaa){ //把数据显示在通过#u找到的元素里面 $("#u").append("<li>"+aaa.name+"</li>"); $("#u").append("<li>"+aaa.zhuren+"</li>"); $("#u").append("<li>"+aaa.age+"</li>"); $("#u").append("<li>"+aaa.zhonglei+"</li>"); } }); }); }); </script>
显示结果: