溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Java對(duì)象序列化怎么實(shí)現(xiàn)

發(fā)布時(shí)間:2021-12-31 10:02:31 來(lái)源:億速云 閱讀:120 作者:iii 欄目:編程語(yǔ)言

本篇內(nèi)容介紹了“Java對(duì)象序列化怎么實(shí)現(xiàn)”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!


從 Java 類(lèi)產(chǎn)生 XML

把 Ajax 響應(yīng)作為 XML 來(lái)傳遞有許多原因:每個(gè)支持 Ajax 的瀏覽器都有導(dǎo)航 XML 文檔的方法,也有許多服務(wù)器端技術(shù)可以處理 XML 數(shù)據(jù)。

通過(guò)制定一個(gè)方案,描述要交換的文檔類(lèi)型,在 Ajax 客戶(hù)端和服務(wù)器端之間很容易定義合約,而且如果服務(wù)器端架構(gòu)采用面向服務(wù)的方式,那么使用 XML 也可以允許非 Ajax 客戶(hù)機(jī)使用您提供的數(shù)據(jù)。

我將考慮從 Java 對(duì)象產(chǎn)生 XML 數(shù)據(jù)的三種方法,并討論每種方法的優(yōu)劣。

自行進(jìn)行序列化

首先,可以從對(duì)象圖以編程的方式生成 XML。這種方式可以簡(jiǎn)單到只是在每個(gè) JavaBean 類(lèi)中實(shí)現(xiàn) toXml() 方法即可。然后就可以選擇合適的 XML API,讓每個(gè) bean 提供表示自己狀態(tài)的元素,并遞歸地對(duì)自己的成員調(diào)用對(duì)象圖。

顯然,這種方式無(wú)法擴(kuò)展到大量的類(lèi),因?yàn)槊總€(gè)類(lèi)都需要專(zhuān)門(mén)編寫(xiě)自己的 XML 生成代碼。從好的方面來(lái)看,這是一個(gè)實(shí)現(xiàn)起來(lái)簡(jiǎn)單的方式,沒(méi)有額外的配置支出或者更復(fù)雜的構(gòu)建過(guò)程支出,任何 JavaBean 圖都可以只用幾個(gè)調(diào)用就變成 XML 文檔。

我曾把XML標(biāo)記字符串連接在一起,實(shí)現(xiàn)了toXml()方法。上次我就提到過(guò),這是個(gè)糟糕的方法,因?yàn)樗汛_保標(biāo)記配對(duì)、實(shí)體編碼等工作的負(fù)擔(dān)放在每個(gè) toXml() 方法的代碼中。

在 Java 平臺(tái)上有幾個(gè) XML API 可以替您做這些工作,這樣您就可以把精力集中在 XML 的內(nèi)容上。清單 1 用 JDOM API 實(shí)現(xiàn)了在線商店示例中表示訂單的類(lèi)中的 toXml()(請(qǐng)參閱 圖 1)。

清單 1. Order 類(lèi)的 toXml() 的 JDOM 實(shí)現(xiàn)

public Element toXml()

{

Element elOrder = new Element("order");

elOrder.setAttribute("id",id);

elOrder.setAttribute

("cost",getFormattedCost());

Element elDate = 

new Element("date").addContent(date);

elOrder.addContent(elDate);

Element elItems = new Element("items");

for (Iterator

在這里可以看到用 JDOM 創(chuàng)建元素、使用屬性和添加元素內(nèi)容有多么簡(jiǎn)單。遞歸地調(diào)用復(fù)合 JavaBean 的 toXml() 方法是為了取得它們子圖的 Element 表示。例如,items 元素的內(nèi)容是通過(guò)調(diào)用 Order 聚合的每個(gè) Item 對(duì)象上的 toXml() 得到的。

一旦所有的 JavaBean 都實(shí)現(xiàn)了 toXml() 方法,那么把任意對(duì)象圖序列化成 XML 文檔并返回給 Ajax 客戶(hù)機(jī)就簡(jiǎn)單了,如清單 2 所示。

清單 2. 從 JDOM 元素生成 XML 響應(yīng)

public void doGet(HttpServletRequest req, 

HttpServletResponse res)

throws java.io.IOException, 

ServletException

{

String custId = 

req.getParameter("username");

Customer customer =

getCustomer(custId);

Element responseElem = 

customer.toXml();

Document responseDoc = 

new Document(responseElem);

res.setContentType("application/xml");

new XMLOutputter().output

(responseDoc,res.getWriter());

}

JDOM 再次把工作變得非常簡(jiǎn)單。只需要在對(duì)象圖返回的 XML 元素外面包裝一個(gè) Document,然后用 XMLOutputter 把文檔寫(xiě)入 servlet 響應(yīng)即可。清單 3 顯示了用這種方式生成的 XML 示例,用 JDOM Format.getPrettyFormat() 對(duì) XMLOutputter進(jìn)行初始化,格式化得非常好。在這個(gè)示例中,顧客只做了一個(gè)訂單,包含兩個(gè)商品。

“Java對(duì)象序列化怎么實(shí)現(xiàn)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI