2012-01-03 84 views
0

我有一个网页(htm),它有一个文本框(将其更改为下拉选择)。使用img标记显示在servlet中的图像未找到

我写有图片的名称(巴纽,.JPG,.GIF),并打一个提交按钮

一个servlet调用,我想显示具有用户输入了该名称的图像在网页上。

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

我手动也试图找到使用localhost:8080/webAppName/imgName几个图像,但仍然找不到资源。

当我尝试使用File类的exists()方法时,我也得到了错误。

该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"); 

} 
} 

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

顺便说一句,我将我的servlet扩展到HttpServlet。

+0

请注意您的servlet不是线程安全的。 – BalusC 2012-01-03 13:48:47

+0

嗯感谢that..but thats只是一个示例虚拟代码.. 它不是真正的.. ..! – ritesht93 2012-01-04 02:17:59

回答

1

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

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


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

+0

嗯实际上将有一个下拉选择名称..名称将要告诉图像本身.. – ritesht93 2012-01-03 01:42:25

+0

和嘿谢谢..这样一个小傻喽..! 实际上,新的JAVA servlets ..我认为像前天开始....谢谢! – ritesht93 2012-01-03 01:42:43

+0

如果@Daves回复满足您,请给予奖励并将其标记为解决方案。 – 2012-01-03 06:16:17

0

你的Web应用程序的名称或上下文名称为 'MyWebApp' 你的图片目录会像MyWebApp/allimages

那么这里是如何你的形象标签的样子

IMG SRC ='MyWebApp/allimages/imagename .png'id =''alt =''