我正在使用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时都会刷新项目。谢谢。
答案 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。