0

有谁知道如何在 Java 中创建 HTTP 服务器,但是为 web 设置默认文件夹而不是从中加载文件?我想使用com.sun.net.httpserver类。

例如,我的 java 文件旁边有一个名为abc的文件夹。java 文件在端口 8080 下运行 HTTP 服务器。如果我打开地址http://123.123.123.123:8080/,我想查看文件夹abc中的文件列表。在文件夹 abc 中有一些文件,例如。图像.jpg . 所以我想在我的浏览器地址中打开图像文件,比如http://123.123.123.123:8080/image.jpg. 这样我就可以打开文件夹abc中的所有其他文件(还有子文件夹、子文件夹中的文件等)。

  1. 是否可以创建此 HTTP 服务器?
  2. 是否有可能在文件夹中运行 PHP 文件?

非常感谢您的回答。

4

2 回答 2

2

为什么不使用嵌入式 Jetty?我很确定用它你可以完成你正在寻找的东西。如果要在 Jetty 中执行 PHP,请参阅http://docs.codehaus.org/display/JETTY/Jetty+and+PHP

于 2013-01-06T10:50:12.493 回答
1

创建服务器对象后,您需要为希望用户用于获取文档的路径注册一些处理程序。

HttpServer server = HttpServer.create(new InetSocketAddress("localhost",8080));
HttpHandler myDocsHandler = new MyDocsHandler();
server.createContext("/abc", myDocsHandler);

没有内置的默认处理程序,因此您需要编写实现HttpHandler接口的MyDocsHandler类来处理在http://localhost:8080/abc进入服务器的任何请求。

该处理程序需要一个单句柄方法,该方法接受一个HttpExchange参数,该参数提供对请求数据和响应流的访问权限。在这一点上,您有责任做需要做的事情。因此,如果您希望实际文件位于/usr/local/abc的硬盘驱动器上,您的处理程序将需要使用标准文件 io 打开请求的文件并将其流式传输回用户。

于 2013-01-06T15:17:59.270 回答