Ich verwende Tomcat 5.5.4 und lasse ein Servlet ohne Probleme laufen. Ich möchte jedoch ein Mapping einrichten, um das Servlet nur zu starten, wenn eine URL mit einer bestimmten Abfragezeichenfolge übergeben wird.Wie gebe ich eine Abfragezeichenfolge in Tomcat <Servlet-Mapping><url-pattern>?
Gerade jetzt in web.xml habe ich: <servlet-mapping>
<servlet-name>MyServer</servlet-name>
<url-pattern>/go/*</url-pattern>
</servlet-mapping>
Wenn ein Browser http://localhost/MyServer/go?P=123 macht die Servlet gestartet wird und alles ist gut. Allerdings möchte ich dieses Servlet nur starten, wenn die URL genau so ist, wie sie gerade angezeigt wird. Leider wird im Moment, wenn die URL http://localhost/MyServer/go?P=AnyDarnThing ist, das Servlet noch gestartet. Ich habe versucht, folgendes einzurichten: <url-pattern>/go?P=123</url-pattern>
, aber dies führt zu Die angeforderte Ressource (/ MyServer/go) ist nicht verfügbar.
Ich habe zahlreiche Variationen (Zitat der Zeichenfolge, ...) auf dem obigen URL-Muster versucht, aber ich bekomme immer den obigen Fehler. Ich merke das, wenn ich (zu Debugging-Zwecken) das "?" wie in <url-pattern>/goP=123</url-pattern>
Ich bekomme nicht mehr die Fehlermeldung und der Server startet (aber natürlich reagiert es nicht auf die "Query String", weil es nicht richtig gebildet ist.) Dies deutet darauf hin, dass das "?" verursacht ein Problem beim Mapping. Ich habe versucht, es durch sein URL-Sonderzeichen zu ersetzen, das wie folgt äquivalent ist: <url-pattern>/go%3FP=123</url-pattern>
aber das gibt das selbe Ergebnis gerade oben beschrieben, als ich versuchte, das "?" insgesamt.
Ich realisiere, dass ich das Servlet starten lassen kann, wenn ein beliebiger Abfrage-String übergeben wird, und dann die Anfrage für alle außer dem, den ich interessiere, "ignoriere", aber es gibt einen Grund, warum ich das Servlet nicht gestartet haben möchte anfangen mit. Also, meine Frage ist, wie kann ich das Servlet so konfigurieren, dass es nur gestartet wird, wenn eine bestimmte Abfragezeichenfolge enthalten ist?
Vielen Dank.
Siehe auch [Ungültige URL-Muster Servletzuordnung in Tomcat 6.0] (http://StackOverflow.com/Questions/26732) – McDowell