关于tomcat项目在web文件夹添加新的文件夹碰到的问题(idea)

今天学习文件下载的时候在web下新建了img文件夹,里面加了几个图片文件
在这里插入图片描述
然后写网页,写代码。。。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<a href="/test_01_war_exploded/img/white.jpeg">图片资源</a><hr/>
<!--/test_01_war_exploded为虚拟路径-->
<a href="/test_01_war_exploded/demo3?filename=white.jpeg">图片资源</a>
</body>
</html>
package com.company;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException;

@WebServlet("/demo3")
public class servletContext_03 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        /*文件下载*/
        /* 设置header content-disposition:attachment;filename=xxx */
        /*获取文件名称*/
        String filename = req.getParameter("filename");
        /*字节流加载文件进内存*/
        ServletContext con1 = this.getServletContext();
        String path = con1.getRealPath("/img/"+filename);
        //System.out.println("```filename="+filename);
        //System.out.println(path);

        /*设置response响应头*/
        String mime =con1.getMimeType(filename);
        //System.out.println(mime);
        resp.setContentType(mime);
        /*设置响应头打开方式*/
        resp.setHeader("content-disposition","attachment;filename="+filename);
        /*输入流写入输出流*/
        FileInputStream in = new FileInputStream(path);
        ServletOutputStream out = resp.getOutputStream();
        byte[] buff= new byte[1024*8];
        int len=0;
        while((len = in.read(buff))!=-1){
            out.write(buff,0,len);
        }
        in.close();
    }
}

然后运行发现网页报错404,两个超链接都不能使用。
原因是idea实际处理的文件是out文件夹,编译后会生成out文件夹,
里面放置配置文件和.class文件,虽然在web文件夹中创建了img文件,但是out中的文件没有更新,仍然找不到图片

在这里插入图片描述
解决方法 把img文件夹复制一份放在out的对应位置上面。web文件夹对应虚拟目录/test_01_war_exploded,所以直接把img放在这个文件夹就可以。

发布了23 篇原创文章 · 获赞 4 · 访问量 781

猜你喜欢

转载自blog.csdn.net/qq_43656529/article/details/104108652
今日推荐