2014-10-03 65 views
0

我想創建一個Java編碼的服務器和一個客戶端(有一個框架來確定)和一個客戶端的人員項目。如何從HTML/JS和android調用Java服務器端方法?

我希望能夠從這兩個客戶端調用Java方法只有一個實現。我可以使用哪種方法?

我曾想過Websocket,但似乎我只能發送消息,然後服務器端必須解析它,並調用自己的方法。這是可行的,但我想找到一個更好的解決方案。

使用AJAX(我從未真正使用過)似乎有同樣的問題。發送一個http請求,但我需要一種解析器來讀取請求並分配它。

我知道servlets可以做這項工作,但我經常說這是真的老派。不過,我不知道爲什麼。

我真的很樂意實現這個客戶端 - 服務器通信的任何建議。

編輯:我想找到的理想解決方案是任何可以在客戶端直接調用服務器的方法。例如,一個好的解決方案是能夠從Javascript調用Web服務,或者找到一個框架,我可以通過該框架直接遠程調用Java方法。

+0

請解釋一下,**完全準確地**,又有什麼特色了 「更好的解決方案。」畢竟,互聯網上的一切*都涉及「發送消息,然後服務器端必須對其進行解析並進行方法調用」。例如,servlets必須做同樣的事情。 – CommonsWare 2014-10-03 14:37:51

回答

0

我知道在Java中的分佈式系統中直接調用java方法的唯一方法是使用RMI。但是這個解決方案對你不好。首先,因爲我認爲當系統(客戶機和服務器)都是Java系統時,您只能使用RMI。其次,Android平臺默認不支持rmi。

人們通常解決這個問題的方式是使用Web Services。我建議你使用JSON如何在客戶端和服務器之間傳輸格式,因爲你將不得不在瀏覽器中處理這些內容,並且使用json可以方便你的生活,而不是使用XML。

更多提示:我還建議您使用GSON庫在JSON文件和Java模型之間進行轉換/解析。您可以在這裏獲得更多信息:https://sites.google.com/site/gson/gson-user-guide

+0

RMI確實不是適合我的情況的解決方案。我正在尋找一種非常「經典」的解決方案來在javascript客戶端和java服務器之間進行通信。 – 2014-10-06 06:52:42

1

最近提供訪問服務器端方法的標準方法是通過WebServices。

  1. 用Java編寫業務邏輯。
  2. 添加REST Webservice層以將請求傳遞給java方法並返回響應。
  3. REST庫將提供servlet實現路由您的要求 - 你只需要放幾個註釋(試行新澤西州的REST API)
  4. REST庫也將轉換成Java對象到JSON 自動(使用一些JSON庫像傑克遜)

看看這個教程REST web服務: http://www.vogella.com/tutorials/REST/article.html

web服務類似,只是它返回的JSON文本,而不是HTML網頁的URL。要調用服務,您必須放置正常的Ajax請求並將響應解釋爲JSON。我更喜歡使用JQuery來簡化和跨瀏覽器的安全。

  1. 調用此方法來放置ajax請求(異步)$ .getJSON(url,callbackFn);
  2. 定義的回調函數
  3. 當接收

    的響應的功能將被調用

    功能callbackFn(responseObj){ 警報(JSON.toString(響應));
    }

例子:http://www.pureexample.com/jquery/get-json.html

+0

這是有道理的。我看過這篇教程,但是我看不到任何關於調用web服務的javascript。這可能本地與JavaScript,或者我應該使用tierce lib,例如JQuery? – 2014-10-06 06:49:57

相關問題