我遇到了一个特定的情况,我需要能够在同一个文档中执行php和jsp。我有一个tomcat服务器设置,正确配置了java网桥from here。一个.php文件本身运行正常,.jsp文档正常运行,但合并后,我得到一个或另一个。
我尝试将.jsp扩展名添加到php javabridge servlet映射:
<servlet-mapping>
<servlet-name>PhpCGIServlet</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
但这导致只在.jsp文件中执行php。我已经尝试将.php添加到jsp servlet映射
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.php</url-pattern>
</servlet-mapping>
但这导致只在.jsp文件中执行php。有没有办法让php和jsp同时存在于同一个文件中,让它们同时运行?下面是我的代码示例。请不要建议更改代码,因为这只是一个示例,因为我要测试的内容需要这两个代码才能在同一个文档中工作。我愿意接受“这是不可能的”的回答,但不是在用尽所有其他选择之前。
<?php
$value = 'this_is_the_cookie';
setcookie("TestCookie", $value);
?><%@ page language="java" contentType="text/xml" import="javax.xml.parsers.DocumentBuilder, javax.xml.parsers.DocumentBuilderFactory, org.w3c.dom.Document,org.w3c.dom.Element,org.w3c.dom.Node,org.w3c.dom.NodeList,java.io.*,java.util.*,org.voicexml.conformance.testharness.*" %><?php echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";?>
<callxml version="3.0">
<assign var="startTime" expr="time()"/>
<%!
public String setDefault(String foo, String defValue)
{
if(foo == null)
{
return defValue;
}
else
return foo;
}
String defValue = "0000";
String testCaseID = request.getParameter("testcaseid");
testCaseID = setDefault(testCaseID, defValue);
%>
<assign var="session.testCaseID" value="<%=testCaseID%>"/>
<do label="B1">
<prompt>
CallXML Parent application.
</prompt>
<goto value="https://127.0.0.1:8888/MAMP/CallXML1.php"/>
</do>
</callxml>
提前感谢您的帮助!
答案 0 :(得分:0)
Java中的过滤器和普通的jsp怎么样?反之亦然。
答案 1 :(得分:0)
如果要将PHP添加到现有Web应用程序中,则需要将代码直接添加到您的WEB-INF/web.xml
配置文件和所需的库(JavaBridge.jar, php-servlet.jar
)到WEB-INF / lib中夹。检查您是否安装了php
,然后将以下java参数-Dphp.java.bridge.php_exec=<location_of_php_bin>/php
添加到catalina.sh or catalina.bat
<listener>
<listener-class>php.java.servlet.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>PhpJavaServlet</servlet-name>
<servlet-class>php.java.servlet.PhpJavaServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>PhpCGIServlet</servlet-name>
<servlet-class>php.java.servlet.fastcgi.FastCGIServlet</servlet-class>
<init-param>
<param-name>prefer_system_php_exec</param-name>
<param-value>On</param-value>
</init-param>
<init-param>
<param-name>php_include_java</param-name>
<param-value>Off</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>PhpJavaServlet</servlet-name>
<url-pattern>*.phpjavabridge</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>PhpCGIServlet</servlet-name>
<url-pattern>*.php</url-pattern>
</servlet-mapping>
答案 2 :(得分:0)
尝试将JSP包含在PHP中。它就像一个普通的包括。