使用img标记找不到在servlet中显示的图像

时间:2012-01-03 01:24:03

标签: java servlets

我有一个网页(htm),它有一个文本框(要将其更改为下拉选项)。

我在那里写了一个图片名称(.png,.jpg,.gif)并点击提交按钮

调用servlet,我试图显示一个用户在网页中输入该名称的图像。

图像与servlet的.class文件存在于同一目录中, 但是当我尝试使用<img>标记(通过将其写入PrintWriter的流)从servlet显示它时,我得到的资源不可用。

我还手动尝试使用localhost:8080/webAppName/imgName找到少量图像,但仍未找到资源。

当我尝试使用exists()类的File方法时,我也会误解。

servlet运行正常,我已经显示了一些文本作为对客户端的响应,但无法找到图像。

Servlet被调用为HTTP GET。

这是servlet代码:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Expt16_3PassImg2Servlet extends HttpServlet
{
    String IPMsg;
    String imgName="";

public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException
{
    response.setContentType("text/html");
    PrintWriter pw = response.getWriter();
    imgName=request.getParameter("imgNameEntry");
    boolean imgExists=true;
    pw.println("<html>");
    pw.println("<body>");
    //if((new File("./"+imgName)).exists())
        pw.println("<img src=\""+imgName+"\">");
    //else
        //pw.println("<h1>Image doesnt exist</h1>");
    pw.println("</body>");
    pw.println("</html>");
    pw.println("<br>Sample Text");

}
}

我知道我们可以通过将内容类型设置为image / jpeg来显示图像,但我想使用img标签显示它。

顺便说一下,我正在将我的servlet扩展到HttpServlet。

2 个答案:

答案 0 :(得分:1)

图片应位于网络目录中 - 与放置任何其他可公开访问的资源的位置相同,例如HTML文件(但不在WEB-INF下)。

客户端对类路径资源没有任何线索。除非您将图像名称映射到类路径资源并流回字节,否则类路径上的图像对客户端是不可见的。


用户如何知道图片的名称是什么?

答案 1 :(得分:0)

您的网络应用程序名称或上下文名称为“MyWebApp”您的图像目录将类似于MyWebApp / allimages

然后是图像标记的样子

img src ='MyWebApp / allimages / imagename.png'id =''alt =''