Tomcat 6.x web.xml Standard-und benutzerdefiniertes servlet-routing
Habe ich zwei servlets definiert web.xml Datei, nämlich der default2 und myservlet. Der default2 servlet wird verwendet, um anzeigen die statischen Dateien wie javascript und css. Die myservlet ist für immer dynamische Inhalte.
<servlet>
<servlet-name>default2</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>myservlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:my-servlet.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
Den servlet-mapping wie folgt definiert ist
<servlet-mapping>
<servlet-name>myservlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default2</servlet-name>
<url-pattern>/resources/*</url-pattern>
</servlet-mapping>
Wenn ich versuche, Zugriff auf alle Dateien unter /Ressourcen, bekomme ich ein 404. Irgendwelche Ideen, warum diese config nicht funktioniert oder ändern diese config machen, damit es funktioniert.
- Was hat Tomcat-Fehler sagen? Ferner, warum sind beide servlet geladen mit dem gleichen Wert
<load-on-startup>1</load-on-startup>
? - Es gibt keine tomcat-Fehler beim Start. Wenn wir Zugriff auf alle Dateien unter /Ressourcen es gibt eine Datei, die nicht gefunden Fehler.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tomcat default-servlet vor 6.0.30 dient eigentlich eine statische Ressource identifiziert
HttpServletRequest.getPathInfo()
, so dass/style.css
zurückgegeben werden, wenn die/resources/style.css
angefordert wird.Tomcat ' s Verhalten hat sich geändert ab version 6.0.30 ab. Also die ursprüngliche Konfiguration von der Frage, funktioniert in neueren Versionen von Tomcat. Siehe "Fünfzig tausend sechs und zwanzig: Hinzufügen von Unterstützung für das mapping das default-servlet-URLs zu anderen als /. (timw)" in der changelog.
Jettys Standard-servlet verwendet einen vollständigen Pfad.
Sollte es funktionieren. Sind diese Dateien in real sich auch in der
/resources
Ordner?Filter
hören auf/*
ist schlecht geschrieben und ist somit störenden alles).Ihre web.xml sieht richtig (es sei denn, ich würde ändern Sie Ihre
<load-on-startup>
Konstanten).Stellen Sie sicher, dass Ihre
/resources
existiert und ist ein öffentlich sichtbaren Ordner in Ihrem Projekt-Pfad und nicht unter /WEB-INF-Ordner.Versuchen Sie Ihr
url-pattern
fürmyservlet
zu/
und Optional hinzufügen<mvc:default-servlet-handler />
( siehe hier ), um Ihre Spring-Konfiguration.Entfernt falschen Teil der Antwort als pro @BalusC Kommentar.
Legen Sie einen Haltepunkt in Ihrem servlet und führen Sie eine debug-Sitzung. Suchen Sie nach dem Pfad, der dein servlet ist Kommissionierung bis diese Dateien an. Stellen Sie sicher, Sie entsprechen der Lage