1

我正在使用Eclipse,我刚刚构建了一个 servlet,它将接收一个文件名和一个来自表单的文件,并在我的 eclipse 目录中使用用户提供的文件名创建一个新文件。因此,如果用户对文件名说 firstImage 并从他们的桌面获取了一个名为的图像,stackoverflow.png那么我的 servlet 将在我的目录中创建一个firstImage.png文件并将其内容stackoverflow.png放入其中。

问题是假设我填写表格并写入文件gmustudent/images/firstImage.png。如果我去那个网址http://localhost:8086/gmustudent/images/firstImage.png什么都不会出现。但是一旦我在eclipse中进入gmustudent项目,右键单击它并单击Refresh然后firstImage.png在目录中弹出并且url现在可以使用。

这显然是一个问题 b/c 我不想每次使用此表单时都刷新我的项目。所以谁能告诉我如何在每次运行 servlet 时刷新项目的 servlet 末尾添加一些代码。谢谢你。

4

1 回答 1

0

最好的方法是使用 servlet 并流回图像。流式处理是我们有一个 servlet,它正在读取服务器中的文件,并将字节发送回响应中。

public class ImageServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {

        response.setContentType("image/jpeg");

        String pathToWeb = getServletContext().getRealPath(File.separator);
        File f = new File(pathToWeb + "avajavalogo.jpg");
        BufferedImage bi = ImageIO.read(f);
        OutputStream out = response.getOutputStream();
        ImageIO.write(bi, "jpg", out);
        out.close();

    }

}

web.xml。_

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="tomcat-demo" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <servlet>
        <servlet-name>ImageServlet</servlet-name>
        <servlet-class>test.ImageServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ImageServlet</servlet-name>
        <url-pattern>/image</url-pattern>
    </servlet-mapping>

</web-app>

您的网址链接不起作用的原因是您可能没有在web.xml文件中映射目录。最佳实践是使用像上面这样的单独 servlet 流回图像。也参考这个问题

于 2012-12-06T00:51:09.177 回答