如何从HTML / JS和android调用Java服务器端方法?

时间:2014-10-03 14:27:18

标签: java javascript android

我想创建一个包含Java编码服务器的人员项目,以及一个HTML / JS客户端(带有要确定的框架)和一个Android客户端。< / p>

我希望能够从只有一个实现的两个客户端调用Java方法。我可以使用哪种方法?

我考虑过Websocket,但似乎我只能发送消息,然后服务器端必须解析它并自己进行方法调用。这是可行的,但我想找到一个更好的解决方案。

使用AJAX(我从未真正使用过)似乎也有同样的问题。发送了一个http请求,但我需要一种解析器来读取请求并发送它。

我知道servlet可以完成这项工作,但我常常认为这是真正的老派。不过我不知道为什么。

我真的愿意接受任何实现这种客户端 - 服务器通信的建议。

编辑:我想找到的理想解决方案是能够在客户端从服务器上直接调用方法。一个很好的解决方案是,例如,能够从Javascript调用webservices,或者找到一个框架,我可以使用它直接远程调用Java方法。

2 个答案:

答案 0 :(得分:1)

目前,访问服务器端方法的标准方法是通过WebServices。

  1. 用Java编写业务逻辑。
  2. 添加REST Web服务层以将请求传递给java方法并返回响应。
  3. REST库将提供servlet实现来路由您的请求 - 您只需要添加一些注释(Try Jersey REST api)
  4. REST库还会将您的java对象转换为JSON 自动(使用像杰克逊这样的JSON库)
  5. 在REST Webservice上查看本教程: http://www.vogella.com/tutorials/REST/article.html

    Webservice就像一个Web URL,除了它返回JSON文本而不是HTML。要调用该服务,您必须发出正常的Ajax请求并将响应解释为JSON。我更喜欢使用JQuery来简化和跨浏览器安全。

    1. 调用此方法放置ajax请求(异步)$ .getJSON(url,callbackFn);
    2. 定义回调函数
    3. 收到回复后会调用该函数

      function callbackFn(responseObj){     alert(JSON.toString(response));
      }

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

答案 1 :(得分: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