使用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的图片,因此您可以对其进行排序。
为了便于查找,以下是我在评论或其他地方发布的所有内容:
答案 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