代码刷新Java项目

时间:2012-12-06 00:35:19

标签: java

我正在使用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,网址现在可以正常工作。

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

1 个答案:

答案 0 :(得分:0)

最好的方法是使用servlet并流回图像。 Streaming是我们有一个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来流式传输图像。请参阅此question