gpt4 book ai didi

java - 在 Restful Web 服务中打开 Tomcat 服务器上的 html 文件

转载 作者:行者123 更新时间:2023-11-28 23:25:55 26 4
gpt4 key购买 nike

我有一个在 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!";
}
}

最佳答案

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

问:我应该在浏览器中输入哪个 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

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

好吧,这很简单,只需看一下这里的这个问题: what's the correct way to send a file from REST web service to client?

关于java - 在 Restful Web 服务中打开 Tomcat 服务器上的 html 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37123585/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com