当使用 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 的图像,因此您可以将其分类。
为了便于查找,以下是我在评论或其他地方发布的所有内容:
创建一个 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 输出的方式上。
sample 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) + "]");
}