Ich verwende ein Servlet, nennen wir es BlaServlet, auf einem Tomcat-Server (Version 9.0.7), welches HTML ausliefert. Innerhalb des HTMLs möchte ich Bilder anzeigen, welche innerhalb von BlaServlet liegen.
Diese werden auch richtig ins war-File gepackt und landen dann nach dem autodeploy von Tomcat unter ...\apache-tomcat-9.0.7\webapps\Bla\resources\
.
Erzeugt in der HTML-Seite wird der Link auf die dort liegende Datei logo.png
so erzeugt:
<img src="/resources/logo.png"
alt="Logo"
width="800" height="144" />
Es wird nur der in alt
genannte Text angezeigt, nicht aber das Logo.
Ich habe es auch versucht mit
<!DOCTYPE html>
<html>
<head>
<title>Bild-Test</title>
</head>
<body>
<p>1</p>
<img src="/resources/logo.png" alt="Logo 1" />
<p>2</p>
<img src="/Bla/resources/logo.png" alt="Logo 2" />
<p>3</p>
<img src="Bla/resources/logo.png" alt="Logo 3" />
<p>4</p>
<img src="resources/logo.png" alt="Logo 4" />
<p>5</p>
<img src="<%=getServletContext().getContextPath()%>/resources/logo.png" alt="Logo 5" />
</body>
</html>
Nichts davon zeigt ein Bild an… nach Recherche im Netz kam mir der Verdacht, ob es an der Datei web.xml
und dem dortigen url-pattern
liegen könnte. Das sieht wie folgt aus, mit Anmerkungen, was ich ausprobiert habe:
<?xml version = "1.0" encoding = "UTF-8"?>
<web-app>
<servlet>
<servlet-name>BlaServlet</servlet-name>
<servlet-class>de.xyz.webservlet.webserver.BlaServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BlaServlet</servlet-name>
<!-- <url-pattern>/*</url-pattern> --> <!-- lädt das Servlet, aber keine Bilder -->
<!-- <url-pattern>/Bla</url-pattern> --> <!-- lädt das Servlet nicht -->
<url-pattern>/</url-pattern> <!-- lädt das Servlet, aber keine Bilder -->
</servlet-mapping>
</web-app>
Ich könnte natürlich einen Apache-Server aufsetzen, die Bilder dorthin legen und von dort anzeigen, aber eigentlich kann das ja nur ein Konfigurationsproblem von mir sein.
Hat jemand vielleicht eine Idee? Ich habe schon sehr viel gegoogelt, aber nichts von dem was ich fand hat das Problem gelöst.
Aufgerufen wird das im Browser mit
http://.../Bla/
was auch das erzeugte HTML anzeigt, aber eben das Bild darin nicht.