现在的位置: 首页 > 综合 > 正文

换种新的思路,采用JSON进行Web动态编程

2012年11月12日 ⁄ 综合 ⁄ 共 1716字 ⁄ 字号 评论关闭

        在Web应用程序开发中,越来越多的页面采取了动态页面编辑技术。也就是说页面上的控件不再写死,而是根据客户端用户的需求进行变化。比如说页面初始化时候只有一个Text框,但是客户可以通过点击添加按钮等手段不断添加Text框, 也可以点击按钮删除Text框等等。对于这样的Web页面,进行服务器页面编程是很痛苦的,特别是在传统的Struts画面中,一个画面form中的控件对应后台ActionForm中的一个Field,如果这个时候画面上的控件本身就是变化多样,那么程序写起来会很麻烦。如果还有输入check,当服务器端check失败的时候还要返回服务器,刚才动态生成的页面以及用户输入的别的数据仍然要保留,这下如何是好呢。在这里,我想到了使用JSON。

        JSON(JavaScript Object Notation)是一种Javascript的数据结构,采用文本的形式来表示。比如我拿一个例子来说。

      "programmers": [
        
"firstName""Brett""lastName":"McLaughlin""email""brett@newInstance.com" },
        
"firstName""Jason""lastName":"Hunter""email""jason@servlets.com" },
        
"firstName""Elliotte""lastName":"Harold""email""elharo@macfaq.com" }
       ],
      
"authors": [
        
"firstName""Isaac""lastName""Asimov""genre""science fiction" },
        
"firstName""Tad""lastName""Williams""genre""fantasy" },
        
"firstName""Frank""lastName""Peretti""genre""christian fiction" }
       ],
      
"musicians": [
        
"firstName""Eric""lastName""Clapton""instrument""guitar" },
        
"firstName""Sergei""lastName""Rachmaninoff""instrument""piano" }
       ]
      }

    看上去很可怕,其实并不难。在JSON中,大括号就是指一个Map,中括号就是数组。逗号是数组的分隔记号,冒号就是Map的key与Value的分割符号。Map中的值的取得可以采用类似Field的方法,比如people.authors就是authors后面的那个中括号数组内的数据。知道了这些概念以后就很好办了。

    people.authors[1].lastName就是authors后中括号数组中的第二个大括号中的key为lastName的值,也就是Wiliams。用这种方法可以很方便的存储以及访问数据。

    在Web页面提交的时候,可以利用json官方页面提供的json.js里面的toJSONString方法把一个Javascript中的数据结构转换为JSON文字列。这个json.js地址如下http://www.json.org/json.js

    在数据提交以前在Hidden域上记录下JSON,然后在后台Java程序中解析此JSON,还原为Java对象,然后后台处理过后,把处理后的Java对象再一次写成JSON字符串,然后在前台Web页面中使用。这样的话,就可以利用JSON使前台和后台之间共享复杂的数据结构了。

抱歉!评论已关闭.