4

当用 Eclipse 编写一个 servlet 时,我在哪里放置我的静态内容(图像、CSS 等),以便我可以将我的 HTML 链接到它(例如<img src="http://localhost:8080/context/image.png>)。我试过把它放到 WebContent 目录中,但是没有用(或者我不知道如何链接到它,我<img src="image.png">也试过了<img src="http://localhost:8080/context/image.png">)。

我附上了我的项目资源管理器的图像,所以你可以对其进行排序。 http://i.imgur.com/CwtCQVO.png


为了更容易找到,这里是我在评论或其他地方发布的所有内容:

4

3 回答 3

3

创建一个test.html文件并将其放置/Blog/WebContent/test.html在您的 Eclipse 项目中。

<html>
 <head>
  <title>Test WebContent</title>
 </head>
 <body>
  <img src="images/test.png" />
 </body>
</html>

还要test.png在文件夹中放置一个图像文件/Blog/WebContent/images

现在,将浏览器指向http://localhost:8080/<your-web-app-name>/test.html并检查是否test.png被渲染。如果是,那么问题出在您从 servlet 编写 HTML 输出的方式上。

ImgServlet对于配置为的示例

<servlet>
    <servlet-name>ImgServlet</servlet-name>
    <servlet-class>pkg.path.to.ImgServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>ImgServlet</servlet-name>
    <url-pattern>/ImgServlet</url-pattern>
</servlet-mapping>

您的doGet()方法应将 HTML 输出为

response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html><head><title>Test WebContent</title></head>" +
            "<body><img src=\"images/test.png\" /></body></html>");

编辑:要打印您的 servlet 收到的所有请求参数,请在您的方法调用之前添加以下内容handleRequest()(您也可以将其注释掉以进行测试)

PrintWriter out = response.getWriter();
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
    String param = (String) parameterNames.nextElement();
    out.println(param + " = [" + request.getParameter(param) + "]");
}
于 2013-05-23T19:15:38.020 回答
0

首先,不要在链接中硬编码你的上下文,如果你的上下文路径改变了,你以后很难改变链接。相反,使用 EL 创建相对路径:

<img src="${pageContext.request.contextPath}/img/abc.png" />

其次,我在您的 WebContent 中没有看到任何图像,如果您将图像手动放入 window 文件夹中,则需要刷新 eclipse 项目才能让 eclipse 检测到所有添加的文件。右键单击您的项目Project Explorer并选择Refresh

于 2013-05-23T17:09:52.580 回答
0

尝试

<img src="/context/image.png">

但这确实取决于您如何部署应用程序。无论如何,像图像这样的文件必须在 WebContent 文件夹中。

于 2013-05-23T17:04:23.127 回答