2010-12-07 2 views
26

Ich habe ein Problem im Zusammenhang mit der Servlet-Zuordnung. Ich habe nach dem in web.xml:Servlet-Zuordnung: URL-Muster für URLs mit Schrägstrich

<servlet> 
    <servlet-name>HelloWorldServlet</servlet-name> 
    <servlet-class>test.HelloWorldServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>HelloWorldServlet</servlet-name> 
    <url-pattern>/HelloWorld</url-pattern> 
</servlet-mapping> 

Wenn ich http://localhost:<port>/MyApp/HelloWorld Zugriff des Servlet HelloWorldServlet genannt wird.

Ich möchte auch mein Servelet auf http://localhost:<port>/MyApp/HelloWorld/ reagieren. Wie kann ich diesen Effekt erzielen? Ich entwickle mit NetBeans, aber es erlaubt mir nicht, ein Muster zu setzen, das mit / beendet wird.

+0

Funktioniert es nicht schon? – thejh

+1

Was passiert, wenn Sie das nachgestellte "/" einfügen? – darioo

+0

Wenn ich die XML-Datei ohne das Netbeans-Frontend bearbeite und das Projekt implementiere, werden Bilder, CSS und JS nicht geladen. –

Antwort

29

Nachdem Sie Ihre Wildcard hinzugefügt haben auf Ihrem <url-pattern>

<url-pattern>/HelloWorld/*</url-pattern> 

Sie können den zusätzlichen Pfad mit der URL assoziiert erhalten, indem HttpServletRequest.getPathInfo() verwenden.

z.

Returns jede zusätzliche Pfadinformationen im Zusammenhang mit der URL den Client gesendet, wenn es diese Anfrage gemacht:

http://localhost:<port>/MyApp/HelloWorld/one/

Das Ergebnis

/one/ 

Vom JavaDoc sein wird. Die zusätzlichen Pfadinformationen folgen dem Servletpfad , gehen jedoch der Abfrage string voraus und beginnen mit einem Zeichen "/" .

7

Verwenden Sie einen Platzhalter. Sie können den gesamten Verkehr, der zu einer bestimmten URL führt, an dasselbe Servlet umleiten.

<servlet-mapping> 
    <servlet-name>HelloWorldServlet</servlet-name> 
    <url-pattern>/HelloWorld/*</url-pattern> 
</servlet-mapping> 

Dies wird leiten Sie die URL mit einem Schrägstrich zu Ihrem ursprünglichen Servlet: Zum Beispiel, können Sie Folgendes hinzufügen.

Ein Gedanke - das würde alles zu diesem URL-Muster an das Servlet umleiten. Wenn Sie andere URLs hinter dieser URL haben möchten, sollten Sie ein Servlet erstellen, das auf die richtige URL umleitet (indem Sie die angegebene URL betrachten). Alternativ können Sie ein Framework verwenden, das Mapping für Sie bereitstellt.

Verwandte Themen