太舊的版本, 可能支援性不高。
因為最近才剛在試 Java, 所以都是剛下載的, 想必應該是蠻新吧:
Java 6
JRE 6
Eclipse 3.5 (build id: 20090920-1017)
不廢話, 開始 step :
step 1:
首先新增一個 web 專案, 可以用 JSP 的。
step 2:
新增一個 web service client, 輸入 web service WSDL, 請參考這裡。
如果跟我一樣懶、或對 dotnet framework 不熟的人, 這時 soap proxy (一堆 .java 定義) 會放在 src\org\tempuri 之下。
原因? 原因就是實作 ASPNET web service 時, 並沒有去更改 web service 定義的 namespace, 於是就使用了預設值了。
不過, 還是可以跑啦, 只是沒有插旗而已。
step 3 (optional):
我自行定義了另外一些 class, 其中一個用來呼叫 web service method(就是 step 4 sample code 中的 QueryMgr.Query), 其他則用來將 web service 回傳的類別轉換成自己要用的類別資料(step 4 中的 Result1, Doc)。
step 4:
最後, 就是撰寫 jsp 了。
原來, JSP 的概念跟微軟早期的 asp 有點類似, 就是將 server side 要執行的碼以 的方式嵌在 html script 之中。
就像這樣:
<br />
<%
String kw = "mp3";
String k = request.getParameter("kw");
if (k != null)
kw = k;
Result1 r = QueryMgr.Query(kw);
%>
<table border="1">
<tr>
<td>
<%
out.println("keyword: " + kw);
out.println("<br />");
out.println("total: " + r.Total);
%>
</td>
</tr>
<%
for (Doc d : r.Docs)
{
out.println("<tr><td>");
out.println(d.PID);
out.println("<br />");
out.println(d.Name);
out.println("<br />");
out.println(d.Note);
out.println("<br />");
out.println(d.Price);
out.println("</td></tr>");
}
%>
</table>
以上就可以將 web service 回傳的結果顯示在 .jsp 的網頁上了。
後記:
如果無法 import web service soap proxy , 而錯誤訊息是:
WS-I: (BP2402) .....
或
cvc-complex-type.4: Attribute 'part' must appear on element....
那, 很有可能你使用的是舊版的 MyEclipse, 或者是太舊的 JDK, 或者是有人自己改了某個 .jar 的東東。
啥! 你說你不相信最後一項? 老實說, 我聽到時, 我也不太相信啊!
0 意見:
張貼留言