• Ajax


    一、Ajax开发步骤:

    1.得到XMLHttpRequest对象。

    var xmlhttp=null;
    if (window.XMLHttpRequest)
    {// code for all new browsers
    xmlhttp=new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {// code for IE5 and IE6
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    View Code

    2.注册回调函数  xmlhttp.onreadystatechange=function(){};

    3.open  只是用于设置请求方式 以及url,它不发送请求。
    4.send 它是用于发送请求的。send(null);null代表没有参数 如果有参数可以写成:"username=tom&password=123"。
    5.在回调函数中处理数据
    5.1.XMLHttpRequest对象有一个属性 readyState,它代表的是XMLHttpRequest对象的状态。
         0).代表XMLHttpRequest对象创建
         1).open操作
         2).send操作
         3).接收到了响应数据,但是只有响应头,正文还没有接收。
         4).所有http响应接收完成。

    5.2.status 由服务器返回的 HTTP 状态代码,如 200 表示成功。

    5.3.在回调函数中可以通过以下方式获取服务器返回的数据。1.responseText  2.responseXML

    二、Ajax实例1:    

    <script type="text/javascript">
    
        //第一步:得到XMLHttpRequest对象.
        var xmlhttp = null;
    
        if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest(); //针对于现在的浏览器包括IE7以上版本
        } else if (window.ActiveXObject) {
            //针对于IE5,IE6版本
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        
        //2.设置回调函数
        xmlhttp.onreadystatechange=function(){
            
            //5.处理响应数据  当信息全部返回,并且是成功
            if(xmlhttp.readyState==4&&xmlhttp.status==200){
                
                alert(xmlhttp.responseText);
            }
        };
        
        //3.open
        xmlhttp.open("GET","http://localhost/day23_3/ajax1");
        
        //4.发送请求 send
        xmlhttp.send(null);
    </script>
    View Code

     三、关于ajax操作中请求参数的设置问题:

    1.对于get请求方式,参数设置
       直接在url后面拼接 例如:"${pageContext.request.contextPath}/ajax2?name=tom"
    2.对于post请求方式,参数设置
       xmlhttp.open("POST","${pageContext.request.contextPath}/ajax2");
       xmlhttp.send("name=tom");
       注意:如果是post请求方式,还需要设置一个http请求头。xmlhttp.setRequestHeader("","");
      例如:  xmlhttp.open("POST","${pageContext.request.contextPath}/ajax2");
              xmlhttp.setRequestHeader("content-type","application/x-www-form-urlencoded");
              xmlhttp.send("name=tom");

    四、Ajax实例2:

         版本1: 1.创建一个Product类               

    package cn.itcast.domain;
    
    public class Product {
    
        private int id;
        private String name;
        private double price;
    
        private String type;
    
        public String getType() {
            return type;
        }
    
        public void setType(String type) {
            this.type = type;
        }
    
        public Product() {
            super();
        }
    
        public Product(int id, String name, double price) {
            super();
            this.id = id;
            this.name = name;
            this.price = price;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public double getPrice() {
            return price;
        }
    
        public void setPrice(double price) {
            this.price = price;
        }
    
    }
    View Code

                   2.创建ajax.jsp 

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    
    <title>ajax开发---显示商品信息</title>
    
    <script type="text/javascript"
        src="${pageContext.request.contextPath}/my.js"></script>
    
    <script type="text/javascript">
        window.onload = function() {
            //得到id=t的文本框
            var p = document.getElementById("p");
    
            p.onclick = function() {
    
                //第一步:得到XMLHttpRequest对象.
                var xmlhttp = getXmlHttpRequest();
                //2.设置回调函数
                xmlhttp.onreadystatechange = function() {
    
                    //5.处理响应数据  当信息全部返回,并且是成功
                    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
    
                        var msg = xmlhttp.responseText;
    
                        document.getElementById("d").innerHTML = msg;
    
                    }
                };
    
                //post请求方式,参数设置
                xmlhttp.open("GET", "${pageContext.request.contextPath}/ajax4");
    
                xmlhttp.send(null);
            };
        };
    </script>
    
    </head>
    
    <body>
    
        <a href="javascript:void(0)" id="p">显示商品信息</a>
    
        <div id="d"></div>
    </body>
    </html>
    View Code

                   3.在AjaxServlet中将List<Product>中的数据,手动拼接成了html代码,写回到浏览器端。 

    public class AjaxServlet extends HttpServlet {
    
    public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            response.setContentType("text/html;charset=utf-8");
            List<Product> ps = new ArrayList<Product>();
            ps.add(new Product(1, "洗衣机", 1800));
            ps.add(new Product(2, "电视机", 3800));
            ps.add(new Product(3, "空调", 5800));
    
            PrintWriter out = response.getWriter();
    
            StringBuilder builder = new StringBuilder();
    
            builder.append("<table border='1'><tr><td>商品编号</td><td>商品名称</td><td>商品价格</td></tr>");
            for (Product p : ps) {
            builder.append("<tr><td>" + p.getId() + "</td><td>" + p.getName()
                        + "</td><td>" + p.getPrice() + "</td></tr>");
            }
    
            builder.append("</table>");
    
            out.print(builder.toString());
            out.flush();
            out.close();
    
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doGet(request, response);
        }
    
    }
    View Code

          版本2: 1.创建一个product.jsp页面,在页面上去组装table,直接将数据返回了。 

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    
    
    <table border='1'>
        <tr>
            <td>商品编号</td>
            <td>商品名称</td>
            <td>商品价格</td>
        </tr>
        <c:forEach items="${ps}" var="p">
            <tr>
                <td>${p.id }</td>
                <td>${p.name }</td>
                <td>${p.price }</td>
            </tr>
        </c:forEach>
    </table>
    View Code

                    2.AjaxServlet 

    public class AjaxServlet extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            response.setContentType("text/html;charset=utf-8");
            List<Product> ps = new ArrayList<Product>();
            ps.add(new Product(1, "洗衣机", 1800));
            ps.add(new Product(2, "电视机", 3800));
            ps.add(new Product(3, "空调", 5800));
    
            request.setAttribute("ps", ps);
    
            request.getRequestDispatcher("/product.jsp").forward(request, response);
    
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doGet(request, response);
        }
    
    }
    View Code

          版本3:在服务器端得到数据,只将要显示的内容返回,而不返回html代码,而html代码的拼接,在浏览器端完成-引入Json。

                  1.创建ajax.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    
    <title>ajax开发---显示商品信息(json)</title>
    
    <script type="text/javascript"
        src="${pageContext.request.contextPath}/my.js"></script>
    
    <script type="text/javascript">
        window.onload = function() {
            //得到id=t的文本框
            var p = document.getElementById("p");
    
            p.onclick = function() {
    
                //第一步:得到XMLHttpRequest对象.
                var xmlhttp = getXmlHttpRequest();
                //2.设置回调函数
                xmlhttp.onreadystatechange = function() {
    
                    //5.处理响应数据  当信息全部返回,并且是成功
                    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
    
                        var json = eval(xmlhttp.responseText);
                        
                        var msg="<table border='1'><tr><td>商品编号</td><td>商品名称</td><td>商品价格</td></tr>";
                        
                        for(var i=0;i<json.length;i++){
                            msg+="<tr><td>"+json[i].id+"</td><td>"+json[i].name+"</td><td>"+json[i].price+"</td></tr>";
                        }
                        msg+="</table>";
                        
                        document.getElementById("d").innerHTML=msg;
                        
                        
                        
                    }
                };
    
                //post请求方式,参数设置
                xmlhttp.open("GET", "${pageContext.request.contextPath}/ajax5");
    
                xmlhttp.send(null);
            };
        };
    </script>
    
    </head>
    
    <body>
    
        <a href="javascript:void(0)" id="p">显示商品信息</a>
    
        <div id="d"></div>
    </body>
    </html>
    View Code

                   2.创建AjaxServlet

    public class Ajax5Servlet extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            response.setContentType("text/html;charset=utf-8");
            List<Product> ps = new ArrayList<Product>();
            ps.add(new Product(1, "洗衣机", 1800));
            ps.add(new Product(2, "电视机", 3800));
            ps.add(new Product(3, "空调", 5800));
    
            // 返回的是json数据
            PrintWriter out = response.getWriter();
    
            String json = JSONArray.fromObject(ps).toString();
            out.print(json);
    
            out.flush();
            out.close();
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doGet(request, response);
        }
    
    }
    View Code

     五、Json的使用

       1.导包(6个包)

       2.将java对象转换成json    

         2.1.对于数组,List集合,要想转换成json:JSONArray.fromObject(java对象); ["value1","value2"]

         2.2 对于javaBean,Map : JSONObject.fromObject(javaBean对象); {name1:value1,name2:value2}

        对于json数据,它只有两种格式 1.[值1,值2,...]  ------>这就是javascript中的数组  2.{name:value,....} ---->就是javascript中的对象。 

        但是这两种格式可以嵌套. [{},{},{}]       {name:[],name:[]}

       3.如果javaBean中有一个属性,不想生成在json中,怎样处理?

    sonConfig config = new JsonConfig();
    config.setExcludes(new String[] { "type" });
    JSONArray.fromObject(ps, config).toString();
    View Code

        4.实例

    public class JsonLibTest {
    
        // 将数组转换成json
        @Test
        public void fun1() {
            String[] st = { "aaa", "bbb", "ccc" };
            String json = JSONArray.fromObject(st).toString();
    
            System.out.println(json); // ["aaa","bbb","ccc"]
        }
    
        // 将List集合转换成json
        @Test
        public void fun2() {
            List<String> list = new ArrayList<String>();
            list.add("111");
            list.add("222");
            list.add("333");
    
            String json = JSONArray.fromObject(list).toString();
    
            System.out.println(json); // ["111","222","333"]
        }
    
        // 将一个javaBean转换成json
        @Test
        public void fun3() {
            Product p = new Product(1, "电冰箱", 1800);
            String json = JSONObject.fromObject(p).toString();
    
            System.out.println(json); // {"id":1,"name":"电冰箱","price":1800}
        }
    
        // 如果List<Product>
        @Test
        public void fun4() {
            List<Product> ps = new ArrayList<Product>();
            ps.add(new Product(1, "洗衣机", 1800));
            ps.add(new Product(2, "电视机", 3800));
            ps.add(new Product(3, "空调", 5800));
    
            JsonConfig config = new JsonConfig();
            config.setExcludes(new String[] { "type" });
    
            String json = JSONArray.fromObject(ps, config).toString();
    
            System.out.println(json);
        }
    
        // map集合转换成json
        @Test
        public void fun5() {
            Map<String, String> map = new HashMap<String, String>();
            map.put("aaa", "1111");
            map.put("bbb", "222");
            System.out.println(JSONObject.fromObject(map).toString());
        }
    
        // 将json转换成java
        @Test
        public void fun6() {
            Product p = new Product(1, "电冰箱", 1800);
            JSONObject jsonObj = JSONObject.fromObject(p);
    
            // 将jsonObj在转换成java对象
            Product pp= (Product) JSONObject.toBean(jsonObj,Product.class);
            
            System.out.println(pp);
        }
    }
    View Code

    六、Ajax操作中服务器端返回xml处理

         XMHttpRequest.resposneXML;----->得到的是一个Document对象.

        操作:可以自己将xml文件中的内容取出来,写回到浏览器端。也可以请求转发到一个xml文件,将这个文件信息写回到浏览器端.

        注意response.setContextType("text/xml;charset=utf-8");

        问题:如果没有xml文件,我们的数据是从数据库查找到,想要将其以xml格式返回怎样处理?可以使用xml插件处理 xstream,它可以在java对象与xml之间做转换.

     xstream使用:   

        1.导包 2个.

        2.将java对象转换成xml

    XStream xs=new XStream();
    String xml=xs.toXML(java对象);
    View Code

         问题:生成的xml中的名称是类的全名?

    两种方式:
    1.编码实现  xs.alias("person", Person.class);
    2.使用注解(Annotation)
       @XStreamAlias(别名) 对类和变量设置别名
       @XStreamAsAttribute  设置变量生成属性
       @XStreamOmitField  设置变量 不生成到XML
       @XStreamImplicit(itemFieldName = “hobbies”) 设置集合类型变量 别名
       使注解生效 
       xStream.autodetectAnnotations(true);
    View Code

      实例:1.创建ajax.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    
    <title>ajax开发---xml返回</title>
    
    <script type="text/javascript"
        src="${pageContext.request.contextPath}/my.js"></script>
    
    <script type="text/javascript">
        window.onload = function() {
            //得到id=t的文本框
            var btn = document.getElementById("btn");
    
            btn.onclick = function() {
    
                //第一步:得到XMLHttpRequest对象.
                var xmlhttp = getXmlHttpRequest();
                //2.设置回调函数
                xmlhttp.onreadystatechange = function() {
    
                    //5.处理响应数据  当信息全部返回,并且是成功
                    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
    
                        var xml = xmlhttp.responseXML;
                        
                        var div=document.getElementById("content");
                        
                        var persons=xml.getElementsByTagName("person");
                        
                        for(var i=0;i<persons.length;i++){
                            
                            var id=persons[i].getElementsByTagName("id")[0].innerHTML;
    
                            var name=persons[i].getElementsByTagName("name")[0].innerHTML;
    
                            var age=persons[i].getElementsByTagName("age")[0].innerHTML;
                            
                            div.innerHTML+="id:"+id+"&nbsp;name:"+name+"&nbsp;age:"+age+"<br>";
                            
                        }
                        
                    }
                };
    
                //post请求方式,参数设置
                xmlhttp.open("GET", "${pageContext.request.contextPath}/ajax7");
    
                xmlhttp.send(null);
            };
        };
    </script>
    
    </head>
    
    <body>
        <input type="button" value="接收xml" id="btn">
        
        <div id="content">
        </div>
    </body>
    </html>
    View Code

              2.创建AjaxServlet

    public class Ajax7Servlet extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            response.setContentType("text/xml;charset=utf-8");
    
            List<Person> ps = new ArrayList<Person>();
            ps.add(new Person(1, "tom", 20));
            ps.add(new Person(2, "fox", 30));
    
            XStream xs = new XStream();
    
            xs.autodetectAnnotations(true);
            String xml = xs.toXML(ps);
    
            response.getWriter().write(xml);
            response.getWriter().close();
    
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doGet(request, response);
        }
    
    }
    View Code

     Ajax的实例:

    两个实体类:Province.java  

    @XStreamAlias("province")
    public class Province {
    
        private String name;
    
        @XStreamImplicit
        private List<City> citys;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public List<City> getCitys() {
            return citys;
        }
    
        public void setCitys(List<City> citys) {
            this.citys = citys;
        }
    
    }
    View Code

     City.java 

    @XStreamAlias("city")
    public class City {
    
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
    }
    View Code

                     省市级联动 XML方式

       Ajax.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    
    <title>ajax开发---xml返回</title>
    
    <script type="text/javascript"
        src="${pageContext.request.contextPath}/my.js"></script>
    
    <script type="text/javascript">
        var xml; //声明全局,因为要在多个函数中使用.
        window.onload = function() {
            //得到id=t的文本框
    
            //第一步:得到XMLHttpRequest对象.
            var xmlhttp = getXmlHttpRequest();
            //2.设置回调函数
            xmlhttp.onreadystatechange = function() {
    
                //5.处理响应数据  当信息全部返回,并且是成功
                if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                    xml = xmlhttp.responseXML; //得到的数据将province中信息添加
    
                    //得到xml是一个Document对象,它代表的是服务器端返回的xml.
    
                    //将xml中所有province的name子元素中的文本获取到.
                    var ps = xml.getElementsByTagName("province");
    
                    for ( var i = 0; i < ps.length; i++) {
                        //得到每一个province元素下的第一个name子元素
                        var nameElement = ps[i].getElementsByTagName("name")[0];
                        //得到name元素中的文本信息,就是省份名称
                        var pname = nameElement.firstChild.nodeValue;
                        //创建option标签,将其添加到省份下拉框中.
                        var option = document.createElement("option");
                        option.text = pname;
                        //将创建的option添加到省份下拉框中
                        document.getElementById("province").add(option);
                    }
    
                }
            };
    
            //post请求方式,参数设置
            xmlhttp.open("GET", "${pageContext.request.contextPath}/ajax1");
    
            xmlhttp.send(null);
    
        };
    
        //创建一个函数,用于向城市下拉框中添加值.
        function fillCity() {        
            
            var province=document.getElementById("province");//省份下拉框
            var city=document.getElementById("city");//城市下拉框.
            
            //每一次向城市中添加信息时,将信息重置。
            city.innerHTML="<option>--请选择城市--</option>";
            
            //1.得到选中的省份名称.        
            var pname=province.options[province.selectedIndex].text;
            
            var ps = xml.getElementsByTagName("province");
    
            for ( var i = 0; i < ps.length; i++) {
                //得到每一个province元素下的第一个name子元素
                var nameElement = ps[i].getElementsByTagName("name")[0];
                //得到name元素中的文本信息,就是省份名称
                var pElementName = (nameElement.firstChild.nodeValue);
                if(pname==pElementName){
                    //判断选择的省份名称与xml文件中的省份名称一致.
                    var citys=ps[i].getElementsByTagName("city");
                    //得到所有省份的城市
                    for(var j=0;j<citys.length;j++){
                        //得到所有的城市名称
                        var cname=citys[j].getElementsByTagName("name")[0].firstChild.nodeValue;
                        //创建option添加到城市下拉框中
                        var option = document.createElement("option");
                        option.text = cname;
                        
                        city.add(option);
                    }
                }
            }
    
        }
    </script>
    
    </head>
    
    <body>
        <select id="province" onchange="fillCity()">
            <option>--请选择省份--</option>
        </select>
        <select id="city">
            <option>--请选择城市--</option>
        </select>
    </body>
    </html>
    View Code

        AjaxServlet.java

    public class AjaxServlet extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            response.setContentType("text/xml;charset=utf-8");
            // 1.得到数据
            List<Province> ps = new ArrayList<Province>();
    
            Province p1 = new Province();
            p1.setName("黑龙江");
            List<City> citys1 = new ArrayList<City>();
            City city1 = new City();
            city1.setName("哈尔滨");
            City city11 = new City();
            city11.setName("齐齐哈尔");
            City city111 = new City();
            city111.setName("大庆");
            citys1.add(city1);
            citys1.add(city11);
            citys1.add(city111);
            
            p1.setCitys(citys1);
    
            Province p2 = new Province();
            p2.setName("吉林");
            List<City> citys2 = new ArrayList<City>();
            City city2 = new City();
            city2.setName("长春");
            City city22 = new City();
            city22.setName("吉林");
            City city222 = new City();
            city222.setName("四平");
            citys2.add(city2);
            citys2.add(city22);
            citys2.add(city222);
    
            p2.setCitys(citys2);
    
            ps.add(p1);
            ps.add(p2);
    
            // 将ps转换成xml
            XStream xs = new XStream();
            xs.autodetectAnnotations(true);
            String xml = xs.toXML(ps);
    
            response.getWriter().write(xml);
            response.getWriter().close();
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doGet(request, response);
        }
    
    }
    View Code

                        省市级联动 Json方式

       Ajax.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    
    <title>ajax开发---json返回</title>
    
    <script type="text/javascript"
        src="${pageContext.request.contextPath}/my.js"></script>
    
    <script type="text/javascript">
        var jsonObj; //声明全局,因为要在多个函数中使用.
        window.onload = function() {
    
            var province = document.getElementById("province");//省份下拉框
            //第一步:得到XMLHttpRequest对象.
            var xmlhttp = getXmlHttpRequest();
            //2.设置回调函数
            xmlhttp.onreadystatechange = function() {
    
                //5.处理响应数据  当信息全部返回,并且是成功
                if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
    
                    jsonObj = eval("(" + xmlhttp.responseText + ")");
    
                    //得到省份名称
    
                    for ( var i = 0; i < jsonObj.length; i++) {
                        var pname = jsonObj[i].name;
    
                        var option = document.createElement("option");
                        option.text = pname;
    
                        province.add(option);
                    }
    
                }
            };
    
            //post请求方式,参数设置
            xmlhttp.open("GET", "${pageContext.request.contextPath}/ajax2");
    
            xmlhttp.send(null);
    
        };
    
        //创建一个函数,用于向城市下拉框中添加值.
        function fillCity() {
    
            var province = document.getElementById("province");//省份下拉框
            var city = document.getElementById("city");//城市下拉框.
    
            //每一次向城市中添加信息时,将信息重置。
            city.innerHTML = "<option>--请选择城市--</option>";
    
            var pname = province.options[province.selectedIndex].text;
    
            for ( var i = 0; i < jsonObj.length; i++) {
                var pElementName = jsonObj[i].name;
    
                if (pname == pElementName) {
                    var citys = jsonObj[i].citys;
    
                    for ( var j = 0; j < citys.length; j++) {
    
                        var cname = citys[j].name;
    
                        var option = document.createElement("option");
                        option.text = cname;
    
                        city.add(option);
    
                    }
                }
            }
    
        }
    </script>
    
    </head>
    
    <body>
        <select id="province" onchange="fillCity()">
            <option>--请选择省份--</option>
        </select>
        <select id="city">
            <option>--请选择城市--</option>
        </select>
    </body>
    </html>
    View Code

      AjaxServlet.java

    public class AjaxServlet extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            response.setContentType("text/xml;charset=utf-8");
            // 1.得到数据
            List<Province> ps = new ArrayList<Province>();
    
            Province p1 = new Province();
            p1.setName("黑龙江");
            List<City> citys1 = new ArrayList<City>();
            City city1 = new City();
            city1.setName("哈尔滨");
            City city11 = new City();
            city11.setName("齐齐哈尔");
            City city111 = new City();
            city111.setName("大庆");
            citys1.add(city1);
            citys1.add(city11);
            citys1.add(city111);
    
            p1.setCitys(citys1);
    
            Province p2 = new Province();
            p2.setName("吉林");
            List<City> citys2 = new ArrayList<City>();
            City city2 = new City();
            city2.setName("长春");
            City city22 = new City();
            city22.setName("吉林");
            City city222 = new City();
            city222.setName("四平");
            citys2.add(city2);
            citys2.add(city22);
            citys2.add(city222);
    
            p2.setCitys(citys2);
    
            ps.add(p1);
            ps.add(p2);
    
            // 转换成json
            String json = JSONArray.fromObject(ps).toString();
    
            response.getWriter().write(json);
            response.getWriter().close();
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doGet(request, response);
        }
    
    }
    View Code
  • 相关阅读:
    appium-flutter-driver 测试flutter_boost项目_Java语言
    appium-flutter-driver 测试flutter项目
    Android Studio 制作出来的9图无法进行拖拉,导致无法制作出正确的9图
    Flutter 正确删除emoji表情/正确分割字符串
    如何清除git仓库的所有提交记录,成为一个新的干净仓库
    js中this的总结
    python判断时间是否在某个时间段里面的三种方式
    centos7使用rpm包安装mysql5.74
    django学习之 从服务端上传文档与下载文档接口
    python 之阿里云短信服务接入流程短信接口
  • 原文地址:https://www.cnblogs.com/java-oracle/p/7076152.html
Copyright © 2020-2023  润新知