Eclipse中的Servlet - 静态内容的放置位置

时间:2013-05-23 17:00:00

标签: java html eclipse tomcat servlets

使用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">)。

我附上了Project Explorer的图片,因此您可以对其进行排序。 http://i.imgur.com/CwtCQVO.png


为了便于查找,以下是我在评论或其他地方发布的所有内容:

3 个答案:

答案 0 :(得分:2)

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

<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) + "]");
}

答案 1 :(得分:0)

尝试

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

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

答案 2 :(得分:0)

首先,不要在链接中对您的上下文进行硬编码,如果您的上下文路径发生更改,将很难在以后更改链接。相反,使用EL来制作相对路径:

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

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