轉載請注明原文地址:http://www.cnblogs.com/ygj0930/p/6648131.html
一:View層與Control層的數據交互
做過Web項目的人都知道,當對一個request的處理結果攜帶很多數據時,比如:文章列表的顯示。如果從Control層一個參數一個參數地發送到文章列表頁面,是很麻煩而且不討好的。這時,我們可以把文章作為對象,把每篇文章的內容封裝到一個文章對象中,然后把查詢的文章結果add到一個數組。把數組set到request的屬性中,最后把request轉發到文章顯示頁面。在文章顯示頁面就可以獲取這個數組屬性,遍歷它提取文章內容了。
同理,View層如果數據太多,也可以創建一個JS對象,把數據封裝進對象然后把對象作為參數傳給Control層即可。
二:用XML來傳輸數據
除了上面通過屬性、參數的方式攜帶數據外,我們可以通過XML來傳輸數據,具體來說,是對象。
比如:Control層得到的結果是一個Java對象,那么怎么發回View層呢?我們可以把這個對象序列化為XML字符串,傳回View層解析提取數據。(當然,也可以轉換層JSON字符串。)【注意:XML/JSON序列化JavaBean只能保存對象的屬性成員,而Java的Serizable序列化則可以連同方法等等一切信息序列化】
在Ajax中,經常要用到XML來傳輸數據與后台進行交互。
三:JavaBean與XML的轉換
我們用XStream來實現。
XStream用於轉換時常用到的函數有:
1:創建對象:XStream xStream=new XStream();
2:對象轉換為XML字符串:String xml = xstream.toXML(bean);
3:對象轉換為XML字符串並輸出到xml文檔:xStream.toXML(bean,outputstream);
4:XML字符串轉換為Java對象;bean=(ClassName)xstream.fromXML(xmlstring);
5:讀取XML文檔並轉換為Java對象:ClassName bean=(ClassName) xStream.fromXML(inputStream);
6:在序列化時把包重命名:Xstream.aliasPackage(“新包名”,“原包名”);
7:為類重命名:Xstream.alias(“新名”,class對象)方法
8:為對象成員屬性重命名:Xstream.aliasField(“新名”,class對象,“原名”)方法
9:隱藏字段:xstream.omitField(class對象,“隱藏字段名”)方法
10:XStream的對象輸出流:
XStream xstream = new XStream(); ObjectOutputStream out = xstream.createObjectOutputStream(System.out); out.writeObject(對象);
11:XStream的對象輸入流:
String xml_string="XML字符串"; StringReader reader = new StringReader(xml_string); XStream xstream = new XStream(); ObjectInputStream in = xstream.createObjectInputStream(reader); ClassName bean=(ClassName) in.readObject();