Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从HTML/JS和android调用Java服务器端方法?_Java_Javascript_Android - Fatal编程技术网

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

如何从HTML/JS和android调用Java服务器端方法?,java,javascript,android,Java,Javascript,Android,我想创建一个带有Java编码服务器的人事项目,一个HTML/JS客户端(需要确定框架)和一个Android客户端 我希望能够用一个实现从这两个客户端调用Java方法。我可以使用哪种方法 我曾经考虑过Websocket,但似乎我只能发送消息,然后服务器端必须解析它并自行进行方法调用。这是可行的,但我想找到更好的解决办法 使用AJAX(我从未真正使用过)似乎也有同样的问题。一个http请求被发送,但是我需要一种解析器来读取请求并发送它 我知道servlets可以做这项工作,但我经常认为这是一个非常古

我想创建一个带有Java编码服务器的人事项目,一个
HTML
/
JS
客户端(需要确定框架)和一个
Android
客户端

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

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

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

我知道servlets可以做这项工作,但我经常认为这是一个非常古老的学校。但我不知道为什么

我非常愿意接受任何实现这种客户机-服务器通信的建议


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

我知道在Java分布式系统中直接调用Java方法的唯一方法是使用RMI。但是这个解决方案对你不好。首先,因为我认为只有当系统(客户机和服务器)都是Java系统时,才能使用RMI。其次,Android平台默认不支持rmi

人们通常解决这个问题的方法是使用。我建议您使用JSON如何在客户端和服务器之间传输格式,因为您必须在浏览器中处理此问题,使用JSON可以简化您的生活,而不是使用XML,例如


更多提示:我还建议您使用GSON库在JSON文件和Java模型之间进行转换/解析。您可以在这里了解更多的工作原理:

现在,访问服务器端方法的标准方式是通过Web服务

  • 用Java编写业务逻辑
  • 添加RESTWebService层,将请求传递给java方法并返回响应
  • REST库将提供servlet实现来路由您的请求-您只需要放置一些注释(试试Jersey REST api)
  • REST库还将把java对象转换为JSON 自动(使用像Jackson这样的JSON库)
  • 查看有关REST Webservice的本教程:

    Webservice与web URL类似,只是它返回JSON文本而不是HTML。要调用服务,您必须放置一个普通的Ajax请求并将响应解释为JSON。我更喜欢使用JQuery来简化和跨浏览器安全

  • 调用此方法放置ajax请求(异步)$.getJSON(url,callbackFn)
  • 定义一个回调函数
  • 当收到响应时,将调用该函数

    函数callbackFn(responseObj){ 警报(JSON.toString(响应));
    }


  • 示例:

    请完整、准确地解释哪些特征可以构成“更好的解决方案”。毕竟,互联网上的一切都涉及“发送消息,然后服务器端必须解析消息并自行进行方法调用”。例如,servlet必须做同样的事情,这是有道理的。我已经看了本教程,但是我看不到任何关于javascript调用Web服务的内容。这在javascript中是可能的,还是应该使用tierce lib,例如JQuery?RMI确实不是适合我的情况的解决方案。我正在寻找一个非常“经典”的解决方案来在javascript客户机和java服务器之间进行通信。