<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 165, comments - 198, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    json 使用

    Posted on 2007-09-13 11:36 G_G 閱讀(2919) 評論(2)  編輯  收藏 所屬分類: json


    使用后好處?
    ??? java 和 javascript 使用同統一對象,語法?. 數據從 sever 到 v層?和?v層 到 sever ?方便.
    ??????????? 簡單說就是?JBean 不做修改拿到V層 當 JSBean (javascript 類)?中用

    1.url 亂碼問題參照 Ajax uri 亂碼問題總結(IE,FF)
    2.使用jar是 jxpath ; json? ......(與相關)
    ???????????????jxpath 參照 jxpath 學習筆記?
    ???????????????json 參照 使用json-lib

    例題說明 數據 name,avg 在通過 ajax json 后 avg +1 再展現到頁面
    本頁需要 json.js 下載到 http://www.json.org/json.js?

    <% @?page?pageEncoding = " GBK " %>
    <% @?page?contentType = " text/html;?charset=GBK " ? %> ??
    < html >
    ??
    < head >
    ????
    < title > json.html </ title >
    ????
    ????
    < meta? http-equiv ="keywords" ?content ="keyword1,keyword2,keyword3" >
    ????
    < SCRIPT? src ="../js/json.js" ? ></ SCRIPT > ?
    ????
    < script? language ="javascript" ?type ="text/javascript" >
    ????
    var ?request? = ? false ;
    ????
    ?? // javascript ?Ajax? 沒什么好說的 這可以用 prototype prototype.js 的理解??,dojo?dojo? 等 ajax
    ? //本例?為方便直接寫了 ^_^
    ?
    ????
    function ?getOpen(){??????
    ???????
    try ?{
    ?????????request?
    = ? new ?XMLHttpRequest();
    ???????}?
    catch ?(trymicrosoft)?{
    ?????????
    try ?{
    ???????????request?
    = ? new ?ActiveXObject( " Msxml2.XMLHTTP " );
    ?????????}?
    catch ?(othermicrosoft)?{
    ???????????
    try ?{
    ?????????????request?
    = ? new ?ActiveXObject( " Microsoft.XMLHTTP " );
    ???????????}?
    catch ?(failed)?{
    ?????????????request?
    = ? false ;
    ???????????}??
    ?????????}
    ???????}
    ????}???
    ???????
    ???????
    ??????
    function ?getCustomerInfo()?{
    ??????getOpen();
    ???????
    if ?( ! request)
    ?????????alert(
    " Error?initializing?XMLHttpRequest! " );
    ?????????
    ?????? //這通過 url 把數據傳給 server?
    ?????? //數據來源 javascript 類 就下方 DBdata
    ???? string:?name:我名字^_^??,? int:?avg:年齡^_^
    ?????????
    var ?url? = ? " /json/json?jsonStr= " + ?( new ?DBdata()).toJSONString()?;
    ?????????request.open(
    " GET " ,?url,? true );
    ?????????request.send(
    null );
    ?????????request.onreadystatechange?
    = ?updatePage;
    ???????}
    ???????
    ?????? //?ajax 處理?數據后返回的?結果?
    ????? // 年齡 +1?并輸入到 輸入框中
    ???????
    function ?updatePage(){
    ???????
    if ?(request.readyState? == ? 4 )?
    ???????????
    if ?(request.status? == ? 200 ){?
    ??????????? //得到 json str
    ?????????????
    var ?jss? = ?request.responseText;
    ??????????? //加載到 javascript 類中 string -> jsBean
    ?????????????
    var ?jsobj? = ?eval('('? + ?jss? + ?')');
    ???????????? //使用和 java對象一樣 ^_^
    ?????????????document.getElementById('xx').value?
    = ?jsobj.name? + ':' + ?jsobj.avg?;
    ????????????}
    ???????}
    ????
    //數據來源
    ?????
    function ?DBdata(){
    ?????????
    this .name? = ?'劉凱毅';
    ?????????
    this .avg = 23 ;?
    ?????????
    this .init = function (){
    ?????????????alert('呵呵');
    ?????????}
    ?????}
    </ script >
    ??
    </ head >
    ??
    < body? onload ="" >
    ??????
    < INPUT? id ='xx'? type ="text" ? >
    ??????
    < INPUT? id ='x'? type ="button" ?onclick ="getCustomerInfo()" ?value ="go" >
    ??
    </ body >
    </ html >

    為了方便明了我java方就使用了 server
    package?servlet;

    import?java.io.IOException;
    import?java.io.PrintWriter;

    import?javax.servlet.ServletException;
    import?javax.servlet.http.HttpServlet;
    import?javax.servlet.http.HttpServletRequest;
    import?javax.servlet.http.HttpServletResponse;

    import?org.apache.commons.jxpath.JXPathContext;

    import?net.sf.json.JSONObject;


    public?class?Json?extends?HttpServlet?{
    ????
    public?void?doGet(HttpServletRequest?req,HttpServletResponse?rpo)throws?ServletException,IOException{
    ????????rpo.setCharacterEncoding(
    "GBK");
    ????????req.setCharacterEncoding(
    "GBK");
    ????????rpo.setContentType(
    "text/html;?charset=GBK");
    ????????
    ????????PrintWriter?out?
    =?rpo.getWriter()?;
    ???????
    ??? ??? //得到 url 傳入數據
    ????????String?str?
    =?req.getParameter("jsonStr")?;
    ??? ??? //java 方 string -> javaBean
    ????????JSONObject?jso?
    =?JSONObject.fromString(str);
    ??? ??? //javaBean 使用jxpathcontxt解讀更方便 ^_^
    ??????? //其實jso中是以 map 形式存區的 有興趣的可以自己動手寫下哦

    ????????JXPathContext?jx?
    =?JXPathContext.newContext(jso);
    ????????
    try?{
    ??? ?? ?? ?? //jxpath好處來了 avg + 1
    ????????????jx.setValue(
    "./avg",?jx.getValue("./avg?+?1?")?);
    ????????}?
    catch?(Exception?e)?{e.printStackTrace();}
    ??? ???
    ??? ?? //以 jsonString 傳出
    ????????out.print(jso.toString());

    ????}
    }

    web.xml(好象有點多嘴了 哈哈 方便下入門人了)
    ????<servlet>
    ????????
    <servlet-name>json</servlet-name>
    ????????
    <servlet-class>servlet.Json</servlet-class>
    ????
    </servlet>
    ????
    <servlet-mapping>
    ????????
    <servlet-name>json</servlet-name>
    ????????
    <url-pattern>/json</url-pattern>
    ????
    </servlet-mapping>




    評論

    # re: json 使用  回復  更多評論   

    2007-09-13 11:36 by G_G
    自己沙發

    # re: json 使用  回復  更多評論   

    2007-09-13 17:51 by 編程、設計是職業更是愛好
    我是自己寫的將MAP轉為Json string的方法,用于Server->Console,等有向Server傳Json的時候再說反向的問題。但是,感覺Console-> Server的路不是很常用,因為此時需要在console端拼成Json再傳給Server,感覺多了一道手,而不是象Server->Console那樣,必須要轉,只是采用Json格式。

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲成年人电影网站| 亚洲人成7777影视在线观看| 99视频在线免费观看| 亚洲AV无码乱码国产麻豆穿越| 最近最新高清免费中文字幕| 亚洲夂夂婷婷色拍WW47| 久久精品亚洲男人的天堂| 99精品一区二区免费视频| 久久亚洲AV成人无码国产电影| 中文字幕亚洲乱码熟女一区二区| 最近中文字幕2019高清免费| 亚洲av永久无码天堂网| 久久久久亚洲精品美女| 特级淫片国产免费高清视频| 久操视频免费观看| 校园亚洲春色另类小说合集| 久久精品国产亚洲av水果派| 亚洲AV蜜桃永久无码精品| 免费观看激色视频网站bd | 阿v视频免费在线观看| 亚洲av鲁丝一区二区三区| 免费国产在线观看| 青青视频观看免费99| 国产V片在线播放免费无码| 亚洲综合久久精品无码色欲 | 国产亚洲精品VA片在线播放| 国产亚洲精品自在久久| 午夜电影免费观看| 中文字幕在线免费| 岛国精品一区免费视频在线观看 | 亚洲Av无码乱码在线播放| 国产精品久久久久免费a∨| a级毛片在线免费观看| 老司机午夜精品视频在线观看免费| 久久久久亚洲AV无码专区首JN | 亚洲AV第一页国产精品| 亚洲精品成a人在线观看| 午夜老司机免费视频| 成年在线观看网站免费| 91在线手机精品免费观看| 最近免费中文字幕MV在线视频3|