我想请教下各位前辈,前端用PHP,后端用Java,怎么进行交互额?


我想请教下各位前辈,前端用PHP,后端用Java,怎么进行交互额?
AJAX的话可以用JSON
可是如果只是页面跳转的话,用啥额,PHP不可能懂得SpringMVC吧

java json php 交互

我吃金坷垃 9 years, 7 months ago

有必要用java嘛,PHP是世界上最好的语言,并且PHPNG 也快出来了

kexin answered 9 years, 7 months ago

php不是用来做后端程序的吗?

zhanghe answered 9 years, 7 months ago

涼宫ハルヒ answered 9 years, 7 months ago

前端php。。。真够纠结的,谁这样设计的。。2个语言随便哪个都行了。
交互方式多了,http、socket、rpc,随便选吧

简单.LB answered 9 years, 7 months ago

目前我公司就是这种架构,但是也不是说让php只负责前端,跟淘宝UED的那篇文章,多少有点出入。php当然可以只负责前端来调用java数据接口。但是也可以去负责一些php擅长的逻辑。

java负责大数据的处理之类的。从业务上与PHP分离开。

楼主的问题是如何交互, @seanlook 说的几种方式,比较完整了。大致就是webservice、RPC,soap这几种方式。用java虚拟机跑php,我觉得要比rpc调用会坑很多。

我们公司是用的RPC,但是是自己实现的RPC框架,数据转为二进制的,使用google 的 protobuffer。

rpc调用也很方便。几行代码就搞定了。因为数据传输使用二进制,所以效率上是比soap之类的快。应该是最优的选择了。希望能帮到题主。


更新!


 我去,没仔细看楼主的问题,原来只是要交互啊,最简单的,如果你用springmvc,那么你直接把action作为接口暴露出来,php发起http请求调用java的接口就哦了~!

天体D孤云 answered 9 years, 7 months ago

1、可以使用http的方式进行RPC(这也是最基础的方式啦)
2、利用yac等RPC框架(虽然也是基于HTTP的,但是反序列化和序列化会更爽)。
3、使用RabbitMQ等队列。
4、socket。。。。。。(这个比较底层,如果你对连接有特殊需求的话,建议自定义化,当然会复杂以及难度变大)

专业loli控 answered 9 years, 7 months ago

前端用PHP,后端用java的话,由java提供相关的接口就可以了啊,用curl请求接口信息。

Acchan answered 9 years, 7 months ago

后端的话 直接请求连接嘛 , 如果跳转需要带参数就ajax值写入连接里面

Bolo喵 answered 9 years, 7 months ago

java只暴露api,然后php拿到json数据,渲染页面,页面跳转放到php呢?


突然想起来之前看到过淘宝ued的一篇文:

前后端分离

主要思想也就是酱紫吧:


前端:负责View和Controller层。
后端:只负责Model层,业务处理/数据等。

文中前端是:node+js+html
你换成:php+js+html

然后看到楼下说的rpc,也不是很懂,就查了一下,可以看这个回答理解一下:

什么是RPC

对应的就可以用php的rpc框架了,比如yar,当然不用也是可以的吧

zrsad answered 9 years, 7 months ago

基本就是 http+json.当然也可以使用现成的rpc框架

彻斯鲁·梅耶 answered 9 years, 7 months ago

很有意思,我曾经也是老大让我做过这个调研,当时还用php与java结合做了一个项目。看到这里前面的回答,大部分都是说通过RESTfull API或json去调用java处理业务逻辑的结果,而我想题主可能更需要的是 Quercus PHP/Java Bridge SOAP 这三种技术的一种。

Quercus 是一个完全以java实现的PHP5引擎,可以让PHP程序在JVM上执行,前端php代码就像引入java包一样,然后就可以直接new一个java对象来使用。这也是我在调研项目中选用的。

PHP/Java Bridge 本质上也是通过XML去前后端交互数据的,但是它实现的PJB协议不需要我们自己去解析XML获取数据,php-java-bridge帮我们做好了数据类型映射这类功能。

SOAP具有与程序语言、平台和硬件无关的特性,不仅可以引用于php和java之间,但是据说效率不怎么高。

实际测试结果,个人真觉得没必要把一个项目用这种实现方法,一个字,zuo。

有了上面这些信息,我相信谷歌可以告诉你更多。

-伊吹萃香- answered 9 years, 7 months ago

Your Answer