我有一个带有文本框的网页 (htm)(将其更改为下拉选项)。
我在那里写下图片名称(.png、.jpg、.gif)并点击提交按钮
调用了 servlet,并且我正在尝试显示具有用户在网页中输入的名称的图像。
图像与 servlet 的 .class 文件位于同一目录中,
但是当我尝试使用 <img>
显示它时从 servlet 标记(通过将其写入 PrintWriter 的流),我得到资源不可用。
我还尝试使用 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。
最佳答案
图像应位于 Web 目录中 - 与放置任何其他可公开访问的资源(例如 HTML 文件)的位置相同(但不在 WEB-INF
下)。
客户端对类路径资源的了解为零。除非您将图像名称映射到类路径资源并流回字节,否则类路径上的图像对客户端是不可见的。
<小时/>用户如何知道图像的名称是什么?
关于java - 未找到使用 img 标签在 servlet 中显示的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8706974/