java - 刷新 Java 项目的代码

标签 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 就会在目录中弹出,并且该 url 现在可以使用。

这显然是一个问题,因为我不想每次使用此表单时都必须刷​​新我的项目。那么谁能告诉我如何在 servlet 的末尾添加一些代码,以便在每次运行 servlet 时刷新项目。谢谢。

最佳答案

最好的方法是使用 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 来流回图像。引用这个question也是如此。

关于java - 刷新 Java 项目的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13735081/

相关文章:

java - 通过接口(interface)打破 Python 中的循环依赖

java - 使用 Oauth Consumer key 、 secret 、访问 token 和 token secret 进行基于 java 的 Rest 调用

java - 通用方法仅使用一个参数进行编译

java - 解析 postgres 对象文字

java - 将方法传递给变量

java - 直接调用ArrayList的最后一个Item

java - 热切/惰性加载成员始终为空,且具有 JPA 一对多关系

java - HashMap 的构建器

java - Netbeans 应用程序中的 hibernate

java - 有没有更好的方法来计算 Map 中的值?