繁体   English   中英

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

[英]Open html file on Tomcat server in Restfull web service

我拥有一个正在雄猫服务器上运行的小型Web服务,我想在雄猫服务器上打开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!";
    }
}

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

问:我应该在浏览器中输入哪个URL来查看消息“知道了!”?

答: http://localhost:8080/myresource

但是,对于您而言,这可能不是确切的情况。 设置Web容器的方式有很多(例如tomcat),您将必须验证正在运行的端口以及servlet上下文是什么。 上面的答案假定您正在本地计算机上,端口8080(通常是Java Web服务器的默认端口)和ROOT上下文下运行。

一个更完整的答案是:

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

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

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

最终用户只需输入{/ etc / passwd},然后根据使用哪个系统用户启动Web容器,Web容器将提供该文件。 情况不好。

问:很好,那么如何允许用户从Web容器下载文件?

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

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

问:好,知道了,所以我现在要进行验证,现在我该如何实际将文件提供给最终用户? 我保证会小心的...

好吧,这很容易,只需在这里看一下这个问题: 从REST Web服务向客户端发送文件的正确方法是什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM