Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 链接不';当我通过本地主机访问它时,它无法工作_Java_Jakarta Ee_Tomcat_Servlets_Hyperlink - Fatal编程技术网

Java 链接不';当我通过本地主机访问它时,它无法工作

Java 链接不';当我通过本地主机访问它时,它无法工作,java,jakarta-ee,tomcat,servlets,hyperlink,Java,Jakarta Ee,Tomcat,Servlets,Hyperlink,下面的servlet创建了一个名为Shared的目录,然后将视频复制到此目录中。接下来,它提供了下载此视频的链接。但当我点击链接时,什么也没发生。为什么会这样 @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/

下面的servlet创建了一个名为Shared的目录,然后将视频复制到此目录中。接下来,它提供了下载此视频的链接。但当我点击链接时,什么也没发生。为什么会这样

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html");
    PrintWriter writer = response.getWriter();
    String path = request.getServletContext().getRealPath("/") + "Shared/" + "sweet-love-story-that-might-make-your-day[www.savevid.com].3gp";
    path = path.replace("\\","/");
    try {
        File f = new File(request.getServletContext().getRealPath("/") + "Shared/");
        if(!f.exists()) {
            f.mkdir();
            // now copy the animation to this directory
        } else {
            System.out.println("directory already made");               
        }
        writer.println("<html> <head> <title> </title> </head>");
        writer.println("<body>");
        writer.println("<a href=\"file:///" + path + "\"" + ">Click to download</a>");
        writer.println("</body>");
        writer.println("</html>");
    }catch(Exception exc) {
        exc.printStackTrace();
    }
}
@覆盖
受保护的void doGet(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
response.setContentType(“text/html”);
PrintWriter=response.getWriter();
String path=request.getServletContext().getRealPath(“/”+”共享/“+”甜蜜的爱情故事,可能会让你的一天变得美好[www.savevid.com].3gp”;
路径=路径。替换(“\\”,“/”;
试一试{
文件f=新文件(request.getServletContext().getRealPath(“/”+“Shared/”);
如果(!f.exists()){
f、 mkdir();
//现在将动画复制到此目录
}否则{
System.out.println(“已生成目录”);
}
writer.println(“”);
writer.println(“”);
writer.println(“”);
writer.println(“”);
writer.println(“”);
}捕获(异常exc){
exc.printStackTrace();
}
}
具有讽刺意味的是,当我编写一个与视频位于同一目录(共享)的html时,我能够下载/查看视频。当我通过
localhost
访问链接时,为什么链接不起作用

(我正在使用Tomcat)

**注意:语句
request.getServletContext().getRealPath(“/”)
打印W:\UnderTest\NetbeansCurrent\App-1\build\web**

以下是分别从本地主机和本地访问的html快照


您将文件写入部署文件夹的路径错误。您的具体问题与这里回答的理由相同:顺便说一下,还有另一个重大错误:
文件://
链接指向本地磁盘文件系统,当最终用户的本地磁盘文件系统上没有该文件时,这显然不起作用(当带有webbrowser的最终用户运行在与webserver物理上不同的机器上时,可能会发生这种情况,就像在现实世界中一样)。您需要(工作!)
http://
链接。@BalusC您能告诉我如何使用我创建的
http
访问共享目录,如:
(request.getServletContext().getRealPath)(“/”+“Shared”).mkdir()
。首先修复第一个错误:使用
getRealPath()
作为文件存储位置。请参阅第一条注释。@BalusC有疑问,让我澄清一下。首先,我应该在硬盘上的某个位置创建一个目录
Shared
,而不是使用
getRealPath()
。然后我应该在应用程序的
context.xml
中添加我用来保存文件的路径。是这样吗?