如何在PHP Java Bridge中获取HttpServletRequest对象?

时间:2017-02-07 21:35:58

标签: java servlets httprequest php-java-bridge

我正在尝试设置PHP Java Bridge,我可以从PHP调用Java方法,但是我无法在我的java类中获取请求对象(HttpServletRequest)。我怎么能得到它?

我的PHP源代码是这样的。

<?php require_once("http://localhost:8080/PJBridge/java/Java.inc");
echo "PHP JAVA Bridge -- Calculator Test Application <br>"

$Calc= new java("test.math.Calc");
$val1 = 20;
$val2 = 10;
echo "<br> Addition of $val1 and $val2 is";
echo $Calc->add($val1,$val2);


$hello = new java("test.Hello");
echo "<br>";
echo $hello->sayHello("PHP from Java");
echo "<br>";
?>

Java Class源代码如下: -

public class Hello implements ServletRequestAware{


HttpServletRequest request;
public Hello(){ 

}

@Override
public void setServletRequest(HttpServletRequest request) {
    this.request = request;

}



public String sayHello(String name){
    return "Hello  " + name ;
}
}

我得到了预期的结果,但我需要客户端IP,所以我需要访问请求对象,但无法得到它。

1 个答案:

答案 0 :(得分:0)

无法回答HttpServletRequest,

但如果你的想法是将客户端远程IP传输到Java端......你可能需要采取另一条路径。 AFAIK PHPJavaBridge只知道客户端的IP地址(PHP脚本调用Java.inc - 通常是localhost),而不是远程用户IP。因此,即使你修复了HttpServletRequest,你也不会真正拥有你所期望的。我当然可能错了......

如果必须这样做,我会使用:

使用方法

发送远程客户端ip
.orElseGet(Employee::createDummy);

或者在java会话中设置

<?php
$javaObject = new java('...');
$javaObject->log('username', $_SERVER['REMOTE_ADDR']);

我不再使用Java.inc了,所以我不确定会话的语法,但如果您正在寻找信息,请查看{{3} }和soluble-japha session usage。它可能对你有所帮助,语法不同,但非常兼容。

相关问题