2012-01-03 41 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 =''

相關問題