2016-05-09 1 views
0

У меня есть небольшая веб-служба, работающая на сервере tomcat, и я хочу открыть мой html-файл на моем сервере tomcat.Откройте файл html на сервере Tomcat в веб-службе Restfull

Мой веб-сервис:

import java.awt.Desktop; 
import java.io.File; 
import java.io.IOException; 

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 

@Path("myresource") 
public class MyResource { 

    @GET 
    @Produces(MediaType.TEXT_PLAIN) 
    public String getIt() throws Exception { 

     String url = "E:/this.html"; 
     File htmlFile = new File(url); 
     Desktop.getDesktop().browse(htmlFile.toURI()); 
     return "Got it!"; 
    } 
} 
+0

У вас есть реальный вопрос или проблема? – hooknc

+0

У меня вопрос, как открыть его на сервере tomcat. –

+0

Мой вопрос в том, что я пишу в URL-адресе. –

ответ

0

Эти ответы основаны на потенциальных вопросов в разделе комментариев вопроса.

Вопрос: Какую ссылку я разместил в вашем браузере, чтобы увидеть сообщение «Получил!»?

A: http://localhost:8080/myresource

Однако, это не может быть точным случаем для вас. Существует множество способов создания веб-контейнера (например, tomcat), и вам нужно будет проверить, на каком порту вы работаете, и каков ваш контекст сервлета. В приведенном выше ответе предполагается, что вы работаете на вашем локальном компьютере под портом 8080 (который, как правило, является стандартным для веб-серверов Java) и в контексте ROOT.

Более полный ответ был бы:

http://<host_name>:<port>:<context>/myresource

Q: Как я могу позволить конечному пользователю сказать, какой файл они хотят, чтобы загрузить?

A: Это опасный риск, связанный с безопасностью HUGE. Разрешить конечному пользователю вводить путь к файлу на сервере, просто не разумно. Без обид ...

Конечный пользователь может просто ввести {/ etc/passwd} и в зависимости от того, какой пользователь системы был использован для запуска вашего веб-контейнера, веб-контейнер будет обслуживать этот файл. Неплохая ситуация.

Вопрос: Хорошо, так как я могу разрешить пользователю загружать файл из моего веб-контейнера?

A: Существует несколько способов сделать это, и я не буду вдаваться в подробности, но вы можете позволить контейнеру напрямую обслуживать файлы. Поместите файлы внутри самого каталога /webapp. Затем ваш веб-контейнер будет обслуживать их автоматически.

Вы можете установить каталог в свой конструктор классов MyResource и обслуживать только запрошенные файлы из этого конкретного каталога. Вам нужно будет сделать серьезную проверку для ввода конечного пользователя, чтобы убедиться, что они не запрашивают такой файл: ../../../../etc/passwd

Вопрос: У меня есть, так что я сделаю проверку, ТЕПЕРЬ, как это сделать Я действительно обслуживаю файл для конечного пользователя? Я обещаю, что буду осторожен ...

Ну, это легко, просто пойти взглянуть на этот вопрос здесь: what's the correct way to send a file from REST web service to client?

Смежные вопросы