JSON学习笔记

今天做了一个在网页上显示股票动态更新的效果图。

可是最后却因为IDE的不同,而造成了很大的后果,就是:很不高兴!!!

事情是这样的:

刚开始,是使用MyEclipse来写代码的。MyEclipse自身集成了很多的工具,而且好多东西不用自己手动设置就可以配置的很好。可是这对于像我这种初学者而言,这是很不好的。

刚开始用MyEclipse写的时候,只需将主要的代码写完就OK了。

后来换到Eclipse,就是一直有报错。

具体代码如下(只显示主要代码):

1,ActionServlet部分;

if ("/quoto".equals(action)) {
            // 模拟生成几只股票的信息
            List<Stock> stocks = new ArrayList<Stock>();
            Random r = new Random();
            for (int i = 0; i < 8; i++) {
                Stock s = new Stock();
                s.setCode("60023" + i);
                s.setName("峰铜电子" + i);
                s.setPrice(r.nextInt(500));
                stocks.add(s);
            }
            // fromObject方法也可以传进来数组
            JSONArray jsonObj = JSONArray.fromObject(stocks);
            String jsonStr = jsonObj.toString();
            out.println(jsonStr);
        }

2,stock.jsp部分:

<%@page pageEncoding="utf-8" contentType="text/html;charset=utf-8"%>
<html>
<head>
<style>
#d1 {
    500px;
    height: 400px;
    background-color: black;
    margin-left: 400px;
    margin-top: 30px;
}

#d2 {
    color: yellow;
    height: 40px;
    background-color: red;
}

table {
    color: white;
    font-size: 24px;
    font-style: italic;
}
</style>
<script type="text/javascript" src="js/ajax.js">
</script>
<script type="text/javascript" src="js/prototype-1.6.0.3.js">
</script>
<script type="text/javascript">
    function showStock() {
        setInterval(quoto, 1000);
    }
    function quoto() {
        var xhr = getXhr();
        xhr.open('get', 'quoto.do', true);
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4 && xhr.status == 200) {
                var txt = xhr.responseText;
                //将json字符串转换成js对象
                var arr = txt.evalJSON();
                var trs = '';
                for (i = 0; i < arr.length; i++) {
                    var s = arr[i];
                    trs += '<tr><td>' + s.code + '</td><td>' + s.name
                            + '</td><td> ' + s.price + '</td></tr>';
                }
                $('tb1').innerHTML = trs;
            }
        };
        xhr.send(null);
    }
</script>
</head>
<body style="font-size: 30px;" onload="showStock();">
    <div id="d1">
        <div id="d2">股票实时行情</div>
        <div id="d3">
            <table width="100%">
                <thead>
                    <tr>
                        <td>代码</td>
                        <td>名称</td>
                        <td>价格</td>
                    </tr>
                </thead>
                <tbody id="tb1">
                </tbody>
            </table>
        </div>
    </div>
</body>
</html>

3,ajax.js部分
function getXhr() {
    var xhr = null;
    if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
    } else {
        xhr = new ActiveXObject('MicroSoft.XMLHttp');
    }
    return xhr;
}

整体基本就这样了。但是在TOMCAT上运行时,总是出现找不到'quoto.do'的错误提示。进行了若干种锚点测试和各种检查,还是没发现问题原因。但是这段代码在MyEclipse上运行就没半点问题。

后来,真的没什么耐性了,就一行一行的对比代码,可是CV大法什么时候出过错呢?结果还是失败。

休息了一会儿,再看代码,从一个旁观者的角度去看,根本就没把运行的问题放在心上,然后就是以这种心态,终于找到原因了:

很坑的原因:在MyEclipse中,xml文件是自动配置好的,无需人工参与;但是在Eclipse中,TM就得纯手工去配!!!!!!!!!!!!

一个一个的去配置各种参数。

然后,就是那个参数少了个*.do的路径,所以,一切的运行都是扯淡!!!

此时的心情就不用去说了。整整一天的时间,全都浪费在这里了。

总结:

各种IDE,各种不同的配置文件的生成和手工,各种设置的参数不同。

ps:还没在NetBeans上测试,也幸好没在那上面测试,不然坑更大。

或许会让我从此与Eclipse为路人。

教训在此了,写下来,然后都来嘲笑我吧。

~瞧,这个白痴,还在码楼~

原文地址:https://www.cnblogs.com/SummerinShire/p/4665604.html