我有一个网页(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。
答案 0 :(得分:1)
图片应位于网络目录中 - 与放置任何其他可公开访问的资源的位置相同,例如HTML文件(但不在WEB-INF
下)。
客户端对类路径资源没有任何线索。除非您将图像名称映射到类路径资源并流回字节,否则类路径上的图像对客户端是不可见的。
用户如何知道图片的名称是什么?
答案 1 :(得分:0)
您的网络应用程序名称或上下文名称为“MyWebApp”您的图像目录将类似于MyWebApp / allimages
然后是图像标记的样子
img src ='MyWebApp / allimages / imagename.png'id =''alt =''