0

我的目标是在 apache 网络服务器上运行 CGI。我的 CGI 是用 Java 编写的。我正在使用一个批处理文件(以后可能是一个 perl 脚本)来启动执行所有业务的 java CGI。

批处理文件工作并启动 Java CGI。java程序本身就可以工作。但是没有任何东西从我的 java 代码发送回浏览器。我正在做简单的 System.out.println 将内容发送到浏览器。我用这个作为参考

我的批处理文件

    echo Content-Type: text/html
    echo.
    echo ^<html^>^<head^>^</head^>^<body^>
    echo Hello world!!!
    java -cp My.jar MyClass
    echo ^</body^>^</html^>

我的 Java 文件

    new File("C:\\wamp\\www\\cgi-bin\\" + new Date().getTime()).mkdir();
    System.out.println("<b>Hello world from Java</b>");

旁注 - 我这样做是因为(不使用 servlet 容器等)我的任务是 2 到 3 分钟,我不想阻止 servlet。同时,我需要向用户更新任务的进度。这是非公开的,我不想让它太复杂,通过使用 JMS、ajax 等在容器内运行它......

4

1 回答 1

0

我想知道,
如果java -cp My.jar MyClass显示它应该作为一个单独的命令,但在批处理中不起作用,也许会有一个解决方法for /f......

@echo off
  rem  This works in Wampserver's Apache cgi-bin...
  rem     http://localhost/cgi-bin/testbat.bat
echo Content-Type: text/html
echo.
echo ^<html^>^<head^>^</head^>^<body^>
echo ^<H1^>Hello world!!!^</H1^>
echo ^<PRE^>
FOR /F "usebackq delims==" %%i IN (`dir`) do echo %%i
echo ^</PRE^>
echo ^</body^>^</html^>

无论如何,很高兴你解决了这个问题:) 干杯

于 2013-04-04T21:24:19.607 回答