![](/img/trans.png)
[英]Java RESTfull web service with tomcat and eclipse gives 404
[英]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.