在Restfull Web服务中打开Tomcat服务器上的html文件

时间:2016-05-09 19:09:26

标签: java html5 web-services tomcat

我有一个在tomcat服务器上运行的小型Web服务,我想在我的tomcat服务器上打开我的html文件。

我的网络服务是:

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!";
    }
}

1 个答案:

答案 0 :(得分:0)

这些答案基于问题评论部分中的潜在问题。

问:我在浏览器中添加哪个网址才能看到“知道了!”消息?

答:http://localhost:8080/myresource

但是,这可能不是您的确切情况。有很多方法可以设置Web容器(如tomcat),您必须验证运行的端口以及servlet上下文的内容。上面的答案假定您在本地计算机上运行,​​在端口8080下(这往往是java Web服务器的默认设置)并且在ROOT上下文中。

更完整的答案是:

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

问:如何让最终用户说出他们想要下载的文件?

答:这是巨大的安全风险。允许最终用户输入服务器上文件的路径并不聪明。没有冒犯......

最终用户只需输入{/ etc / passwd},并且根据用于启动Web容器的系统用户,Web容器将提供该文件。不太好。

问:好的,很好,我如何允许用户从我的网络容器中下载文件?

答:有几种方法可以做到这一点,我不会详细介绍,但是,您可以允许容器直接提供文件。意思是将文件放在/webapp目录本身内。然后您的Web容器将自动为它们提供服务。

您可以在MyResource类构造函数中设置目录,并仅提供该特定目录中的请求文件。您需要对最终用户输入进行一些认真的验证,以验证他们不是要求这样的文件:../../../../etc/passwd

问:很好,得到了,所以我会做验证,现在,我如何实际向最终用户提供文件?我保证我会小心......

嗯,这很简单,请点击此处查看此问题: what's the correct way to send a file from REST web service to client?

相关问题