2013年7月30日 星期二

Error, javax.servlet.ServletException

最近在寫 Java Servlet 時遇到了一個問題,錯誤訊息如下:


exception
javax.servlet.ServletException: Error instantiating servlet class
root cause
java.lang.IllegalAccessException: Class org.apache.catalina.core.StandardWrapper can not access a member of class

大約是這樣,解決辦法為,在 class 的權限控管中,我使用了 protected,而改成 public 就正常了 !

2013年7月16日 星期二

parse.com

最近發現到一個不錯的網站,可以做為開發時的後端,一般而言在開發初期,最令人頭痛的就是後端的部分,在這邊有不錯的後端與前端資源,在後端可以使用它提供的 API,不用花太多心力,而前端又有許多不同平台的資源。

還有一個重點,這網頁的 doc 做得很用心,而且蠻漂亮的,help 那邊也有不錯的資源 (Help 才是重點阿) !!

https://parse.com/

2013年7月4日 星期四

Eclipse 下載

這篇文章與先前的 Android SDK 環境設定 - 1 的第二點相同,這篇會比較新而且詳細些。
可以直接看這篇就好 !!


首先,先到 eclipse download 這邊去下載 eclipse 主程式,eclipse 為免安裝的程式,直接解壓縮就可以使用,紅色框框顯示 Java EE 的版本,下面還有很多種版本,可以挑選自己喜歡、適合的。
另外,也有 Windows、Linux 與 32-bit、64-bit 可以挑選。(這和 JDK 或 JVM 的 32-bit、64-bit 有點關係,為了省去麻煩,eclipse 與 JDK 我都選擇 32-bit)


之後在下面可以選擇不同的 mirror,而紅色框框這邊,你也直接使用他給的網址,點選 [Taiwan] Providence University (http)


之後應該就會出現下載的畫面了,如果沒有出現下載提示,可以點選 click here 來進行下載。


下載完後,直接解壓縮,會有 eclipse 的資料夾,裡面直接執行 eclipse.exe 即可。

2013年6月12日 星期三

StringReader with jdom

同樣以上一個 XML 檔為例子,這邊說明 XML 除了可以以網路、檔案讀入之外,亦可使用 String 方式讀入,但這邊需要用另外一種方法進行讀取。(利用 StringReader class 類別)

public static void main(String[] args) throws IOException, JDOMException {
// SAX
SAXBuilder sax = new SAXBuilder();
// 使用 String 時,須利用 StringReader
Document doc = sax.build(new StringReader(xmlString));
// 取得 xml 的 root element
Element root = doc.getRootElement();
// 使用 foreach 開始進行走訪
Iterator<Element> items = root.getChildren().iterator();

// 根節點
System.out.println(root.getName());
while (items.hasNext()) {
Element e = items.next();

// 印出下一個 text
System.out.println(e.getText());

// 使用 foreach 開始進行走訪
Iterator<Element> item = e.getChildren().iterator();
while (item.hasNext()) {
Element e2 = item.next();

// 印出下一個 text
System.out.println(e2.getText().trim());
}
}
}

2013年6月10日 星期一

XML Tree parse with jdom (SAX)

這邊利用了 jdom third library 來進行 XML 的解析,並利用 SAX 方式來處理。
程式碼大概是這樣子,且下面附有此 XML Tree 樹狀結構 !


public class tmp {

/**
* @param args
* @throws IOException 
* @throws JDOMException 
* @throws MalformedURLException 
*/
public static void main(String[] args) throws MalformedURLException, JDOMException, IOException {
// DOM or SAX 選其一,這邊選擇 SAX
SAXBuilder bSax = new SAXBuilder();
// 開啟 XML 檔案,可用 inputstream、URL、File 等等
Document doc = bSax.build(new File("search_result_xml.rb.xml"));
// 取得根結點
Element root = doc.getRootElement();
Iterator<Element> guideIterator = root.getChildren().iterator();
// 開始進行走訪
while (guideIterator.hasNext()) {
Element items = guideIterator.next();
Iterator<Element> itemsIterator = items.getChildren().iterator();
// 子節點走訪
while (itemsIterator.hasNext()) {
Element item = itemsIterator.next();
System.out.println(item.getText()); // 最後印出資料 !
}
}
}
}

2013年6月9日 星期日

XML Parser Error - xmlParseEntityRef: no name

這邊的問題出在於 XML 的內容出現了非法自原,因此在資料部分必須用 <![CDATA[ ]]> 包起來。

ex.
原本 <test>內容在這</test>

<test><![CDATA[ 內容在這 ]]></test>

HTTP with XML

HTTP 有個 Content-Type 欄位,這欄位主要的用意在於告知瀏覽器如何解析資料

若要視作 XML 形式,則需要用 Content-Type: text/xml

正常 HTML 形式,則為 Content-Type: text/html

若是是純文字,則 Content-Type: text/plain

XML Parser Error - Extra content at the end of the document

若遇到 XML 解析時,出現 Extra content at the end of the document 訊息時,這可能代表你區少一個 root !

example:
<a>XXX</a>
<b>XXX</b>
<c>XXX</c>

你可能需要更改成此形式

<root>
<a>XXX</a>
<b>XXX</b>
<c>XXX</c>
</root>

2013年6月7日 星期五