Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse中的Servlet-将静态内容放在何处_Java_Html_Eclipse_Tomcat_Servlets - Fatal编程技术网

Java Eclipse中的Servlet-将静态内容放在何处

Java Eclipse中的Servlet-将静态内容放在何处,java,html,eclipse,tomcat,servlets,Java,Html,Eclipse,Tomcat,Servlets,在使用Eclipse编写servlet时,我应该将静态内容(图像、CSS等)放在哪里,这样我就可以将HTML链接到它(例如)。我曾尝试将其放入WebContent目录,但没有成功(或者我不知道如何链接到它,我尝试了,也尝试了) 我附上了我的项目浏览器的图片,所以你可以对它进行排序。 为了便于查找,以下是我在评论或其他地方发布的所有内容: 项目的web.xml: 我的Servlet代码: 我的HTML模板之一:http:pastebin.com/6KALf0Bw 试试看 <img sr

在使用Eclipse编写servlet时,我应该将静态内容(图像、CSS等)放在哪里,这样我就可以将HTML链接到它(例如
)。我曾尝试将其放入WebContent目录,但没有成功(或者我不知道如何链接到它,我尝试了
,也尝试了

我附上了我的项目浏览器的图片,所以你可以对它进行排序。


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

  • 项目的web.xml:
  • 我的Servlet代码:
  • 我的HTML模板之一:http:pastebin.com/6KALf0Bw
试试看

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


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

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

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


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

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

<html>
 <head>
  <title>Test WebContent</title>
 </head>
 <body>
  <img src="images/test.png" />
 </body>
</html>
您的
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>");


这完全取决于您如何部署应用程序。此外,您不应该使用绝对URI,除非您使用某种CDN:如果您的应用程序未部署在
http://localhost:8080
?@fge当你说依赖于我如何部署它时,当我只想让它在Eclipse中工作时,我该如何继续?另外,主机和上下文不是硬编码的,我通过
request.getContextPath()
获得它们@ŁukaszLech据我所知,您链接的帖子希望从应用服务器之外的某个地方加载静态内容,而我希望从服务器目录/WAR中加载静态内容。您的案例的简短答案是WebContent中的某个地方,而不是WEB-INF或META-INF中,因为这些文件夹的内容无法直接访问。根据我目前收集的信息,问题似乎是,我根本无法访问文件/文件夹,因为URL的文件/文件夹规范部分(例如/images/image.png)被解释为get参数。tomcat是否有任何配置设置可能导致这种行为?顺便说一句,当回复某人时,请使用
@username
(而不是
username
写入实际的用户名),因此会通知该用户。除非评论是针对答案或问题的作者(就像我写这篇评论给你——问题的作者,所以在这种情况下,你将自动得到通知,而无需
@RikuXan
)。在这里读:我试过你写的方式,但没用。我将该文件放在Eclipse的WebContent文件夹中,并将我的图像链接到
“/Blog/image.png”
,但它仍然没有显示。您是否有可能使用任何类型的url重写过滤器?我只不过是在Eclipse中创建了servlet,我认为Eclipse自己不会这样做。主机和上下文不是硬编码的,我通过
request.getRequestURL()
获取它们。另外,您的代码对我来说似乎不是纯Java,我不知道如何将其包含到我的代码中。另外,图片中没有包含任何图像,因为我不想让人困惑,我只是为了截图而删除了它。我还直接添加了vai Eclipse。@RikuXan代码完全正确。唯一的问题是,只有当您的页面是,而不是纯HTML时,它才会工作。他在上面的例子中使用的东西叫做。对于JSP页面,您还可以使用来自的
标记。这里有一个例子:遗憾的是,我不能使用JSP,只能使用纯Java/Servlet代码。@RikuXan作为旁注:实际上JSP文件被编译成Servlet。如果可以使用servlet,那么就可以使用JSP。因为Servlet容器(如apachetomcat、Jetty等)和full(如GlassFish、JBoss、WebSphere、WebLogic等)可以处理JavaServer页面(JSP),“不能”更像是“我不允许”。这是一个大学项目,有不同的团队,他们应该用不同的语言解决这个问题(还有PHP和JSP,我希望我是其中的一个)。当我将浏览器指向
http://localhost:8080/Blog/test.html
,它只是打开了我的普通页面,我正在为其编写servlet。我假设它使用“/test.html”作为servlet的GET参数。一般来说,我是否配置了一些严重错误的东西,因为从您的帖子的声音来看,我不能访问任何文件是不正常的。发布您的web.xml以及Servlet代码。web.xml来自Eclipse,我在这里没有做任何更改。关于servlet,完全发布它可能有点过火,因为它是一个标准的Eclipse servlet,我实现了init、destroy doGet和doPost方法,基本上我所做的就是读取文本文件,从MySQL数据库获取数据并组装我的HTTP响应字符串。web.xml中没有配置servlet,这意味着您的服务器没有对您可能尝试过的任何url执行任何servlet代码。这就引出了一个问题,你说“test.html,它只是打开了我的普通页面”是什么意思?你到底看到了什么?哇,它成功了,我终于可以在我的浏览器中打开test.html了,它显示了清晰的图像。我甚至可以将@WebServlet标记设置回“/”,现在它仍然可以工作。我觉得Eclipse和tomcat在一起的方式中有一个bug,但似乎这个简单的更改已经修复了它。非常感谢你的帮助:)有什么地方我可以给你买啤酒吗?
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>");
PrintWriter out = response.getWriter();
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
    String param = (String) parameterNames.nextElement();
    out.println(param + " = [" + request.getParameter(param) + "]");
}