Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.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
将Java桌面应用程序与RubyonRails Web应用程序连接_Java_Ruby On Rails_Ruby_Database_Web - Fatal编程技术网

将Java桌面应用程序与RubyonRails Web应用程序连接

将Java桌面应用程序与RubyonRails Web应用程序连接,java,ruby-on-rails,ruby,database,web,Java,Ruby On Rails,Ruby,Database,Web,我正在尝试使用PostgreSQL数据库构建RubyonRails web应用程序,使用Hibernate构建带有H2数据库引擎的Java应用程序 我听说过JDBC、RMI和Sockets,但我对它们一无所知 问题是,我希望使用web应用程序中的数据,使用本地数据库在其中进行一些处理,最后我希望将更改上载到数据库,或者说,我希望在web数据库中创建新表,并立即在web中显示更改 例如,我想让学生在网络上注册,将学生卷号从网络数据库带到本地数据库,输入分数,最后我想能够在网络数据库中添加分数,并在

我正在尝试使用PostgreSQL数据库构建RubyonRails web应用程序,使用Hibernate构建带有H2数据库引擎的Java应用程序

我听说过JDBC、RMI和Sockets,但我对它们一无所知

问题是,我希望使用web应用程序中的数据,使用本地数据库在其中进行一些处理,最后我希望将更改上载到数据库,或者说,我希望在web数据库中创建新表,并立即在web中显示更改

例如,我想让学生在网络上注册,将学生卷号从网络数据库带到本地数据库,输入分数,最后我想能够在网络数据库中添加分数,并在网络上立即发布个人分数


如果有人能帮助我,我将不胜感激。

处理此问题的最佳方法是从web应用程序提供一个API,外部应用程序可以与之交互。Rails的一个优点是它基本上支持这种开箱即用的功能

采取典型的控制器操作从web查看学生

class StudentsController < ApplicationController
  def show
    @student = Student.find(params[:id])
  end
end
这设置了ActionController的一个称为响应器的功能。现在,当向
/students/1.json
发出请求时,控制器将在学生模型上调用
作为_json
,默认情况下,学生模型将获取所有模型属性并将其转换为json对象。这可以通过在学生模型中重写为_json来定制

要进行更新,您可以遵循类似的模式。您可以使用PUT请求向服务器提交
/students/1.json
。请求不是JSON格式的,您使用的库可能支持设置变量,请确保它是Rails期望的格式(即
student[field]
)。Rails中间件将负责其余部分

class StudentsController < ApplicationController
  respond_to :html, :json

  def update
    @student = Student.find(params[:id])
    @student.update_attributes(params[:student])
    respond_with(@student)
  end
end
class StudentsController
请注意,对于响应者,没有检查更新属性是否有效,而
respond\u with
将为您执行此操作。如果有错误,您将得到一个HTTP 422不可处理实体作为响应代码,响应的主体将是一个带有错误的JSON对象


同样值得一提的是,如果您更喜欢xml响应体而不是json,那么在所有这些示例中都可以用
xml
替换
json

解决问题的方法是(REST)API

我建议在API/v[版本号]下为您的API创建单独的控制器/

这里有一个Ryan Bates关于如何构建REST API的非常好的例子

您可以在这里找到API的代码示例

然后可以通过HTTP请求获取数据

例如,要获取应用程序中用户的数据,您将在url中执行http请求(您将在api和版本名称空间下的routes.rb中定义)/:username

乙二醇

您将得到一个JSON响应,如

user: {
  username: "ausername"
  email: "ausername@amaildomain.com"
 .....
如果您有任何问题,请随时问我:)

问题更新

当然,您可以通过这种方式添加数据。您只需将正确的json导出到正确的url即可

我在这个应用程序中做了一个例子

例如:


在这个应用程序中,我通过Javascript(主干)保存任务。同样的规则也适用于Java(和任何其他语言)

我是否能够使用Java应用程序中的这些方法添加数据和创建新表?这是否意味着我只能编辑、更新和删除现有数据。我可以用这些方法创建一个新表吗?一个新表?不,如果这是您的意思,您可以使用现有模型创建新记录。好的。一个新的记录就可以了。谢谢
user: {
  username: "ausername"
  email: "ausername@amaildomain.com"
 .....