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 {    
    width: 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为路人。
教训在此了,写下来,然后都来嘲笑我吧。
~瞧,这个白痴,还在码楼~
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号