我正在使用 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/