Java http-сервер и веб-папка

Кто-нибудь знает, как создать HTTP-сервер на Java, но установить папку по умолчанию для Интернета и загрузить из нее файлы? Я хочу использовать класс com.sun.net.httpserver.

Например, у меня есть папка с именем abc рядом с моим java-файлом. Java-файл запускает HTTP-сервер под портом 8080. И если я открою адрес http://123.123.123.123:8080/, я хочу увидеть список файлов из папки abc. В папке abc есть несколько файлов, например. изображение.jpg. Итак, я хочу открыть в своем браузере адрес файла изображения, например http://123.123.123.123:8080/image.jpg. Таким образом я могу открыть все остальные файлы из папки abc (а также подпапки, файлы в подпапках и т. д.).

  1. Можно ли создать этот HTTP-сервер?
  2. Можно ли как-то запустить файлы PHP в папке?

Большое спасибо за ваши ответы.


person PerwinCZ    schedule 06.01.2013    source источник


Ответы (2)


Почему бы не использовать встроенный Jetty? Я почти уверен, что с ним вы можете достичь того, что вы ищете. Если вы хотите выполнить PHP из Jetty, обратитесь к http://docs.codehaus.org/display/JETTY/Jetty+and+PHP

person Alessandro Santini    schedule 06.01.2013
comment
Но на моем сервере не установлен Apache. Будет ли работать PHP? - person PerwinCZ; 06.01.2013
comment
На самом деле не имеет значения. Должен быть установлен PHP (5 или выше и некоторая среда сценариев). Прочтите документы для получения дополнительной информации. - person Alessandro Santini; 06.01.2013

После того, как вы создали свой серверный объект, вам нужно зарегистрировать несколько обработчиков пути, который вы хотите, чтобы пользователь использовал для извлечения документов.

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

Встроенных обработчиков по умолчанию нет, поэтому вам потребуется написать класс MyDocsHandler, который реализует интерфейс HttpHandler для обработки любых запросов, поступающих на ваш сервер по адресу http: //локальный хост:8080/abc.

Для обработчика требуется единственный метод handle, который принимает аргумент HttpExchange, дающий доступ к данным запроса и потоку ответов. На этом этапе ваша обязанность делать то, что необходимо. Поэтому, если вы хотите, чтобы фактические файлы находились на вашем жестком диске в /usr/local/abc, ваш обработчик должен был бы открыть запрошенный файл с помощью стандартного файлового ввода-вывода и передать его обратно пользователю.

person Jere    schedule 06.01.2013