web.xml und / oder Filter, um die Begrüßungsdatei zurückzugeben

7

Ich muss meine Tomcat WAR für bestimmte Funktionen konfigurieren und bin mir nicht sicher, ob dies alles über web.xml möglich ist, oder ob ich 1+ benutzerdefinierte Filter s implementieren muss oder eine andere Art von Hackerei.

Meine App packt als myapp.war . Wenn es also von einer lokalen Tomcat-Instanz bedient wird, kann ich darauf zugreifen, indem ich zu http://localhost:8080/myapp gehe.

Ganz einfach, ich habe ein welcome-file ( myapp.html ), das ich bedienen soll, wenn Tomcat die folgenden Anfragen erhält:

  • localhost: 8080 / myapp
  • localhost: 8080 / myapp /
  • localhost: 8080 / myapp / #
  • localhost: 8080 / myapp / # & lt; blah & gt;

... wobei <blah> eine beliebige Zeichenfolge / Regex nach dem Rautenzeichen (#) ist.

Wenn der Benutzer also zu http://localhost:8080/myapp geht, dann gib ihm myapp.html zurück. Wenn der Benutzer zu http://localhost:8080/myapp/#fjrifjri geht, dann rate mal was? Serve zurück myapp.html .

Aber Wenn der Benutzer zum Beispiel http://localhost:8080/myapp/fizz aufruft, möchte ich, dass die normale web.xml servlet-mapping -Logik einsetzt und ich möchte, dass Tomcat jedes Servlet zurückgibt, das auf% co_de abgebildet ist %, usw.

Momentan sieht mein /fizz wie folgt aus:

%Vor%

Wie kann ich das erreichen?

    
IAmYourFaja 27.12.2013, 21:54
quelle

9 Antworten

11

Wenn Sie sich mit URLs herumschlagen müssen, müssen Sie die Tags servlet und servlet-mapping verwenden:

%Vor%

wo Demo ist Ihr Paket und fizz Ihre fizz.java
Um URLs und Dateien zu ändern, die an die aktuelle URL angehängt sind, müssen Sie servlet-mapping -Tags verwenden, bei denen das Servlet mit dem Namen fizz / fizz

zugeordnet ist

Damit können Sie die gesuchten Einstellungen ändern.

Ich hoffe, es hilft ...

    
Andrew_Dublin 28.12.2013 16:34
quelle
2

Filter verwenden -

%Vor%     
Mukus 08.01.2014 04:41
quelle
2

Eine Möglichkeit, dies zu erreichen, ist die Verwendung von Filtern wie folgt:

  • Erstellen Sie einen Filter, der wie folgt auf root / in web.xml abgebildet wird

    %Vor%
  • und die Filterzuordnung wie folgt

%Vor%
  • Verwenden Sie in der doFilter() -Methode den folgenden Code.
%Vor%
    
Santosh 08.01.2014 15:41
quelle
1

Ich denke, was Sie versuchen, ist ein Standardverhalten. Ich weiß nicht, warum Sie einen Filter für diesen Zweck verwenden möchten. Die URL: http://localhost:8080/myapp/#fjrifjri  oder etwas ähnliches würde in myapp.html landen, wenn Sie myapp.html als Willkommensdatei in web.xml verwenden. Zum Öffnen eines bestimmten Servlets können Sie das von Andrew erwähnte Servlet-Tag verwenden.

    
explorer 03.01.2014 19:04
quelle
1

Sie können immer einen Javascript- oder JSP- oder Servlet-Code schreiben, in dem Sie die URL beurteilen und die Anfrage abhängig weiterleiten können.

    
Siva Tumma 04.01.2014 11:02
quelle
1

Ich hatte kürzlich das gleiche Problem wie Sie, zumindest in Bezug auf die ersten beiden Ihrer Anforderungen. So habe ich mein Problem gelöst:

Meine web.xml hat folgendes:

%Vor%

und mein Anwendungskontext (myapp-context.xml) hat folgendes:

%Vor%

Ich habe meine Indexdatei (index.jsp) in TOMCAT_HOME / webapps / appctx / WEB-INF / jsp abgelegt. Ich habe keine Willkommensliste in web.xml eingefügt, wie Sie oben sehen können.

Wenn ich den Browser auf zeige      http://localhost:8080/appctx oder http://localhost:8080/appctx/ Ich lande in der Indexdatei.

Ich habe Spring-framework-3.1.2 verwendet und starte die App in tomcat-7.0.27 unter Windows 7. (Es gibt nur zwei Apps in meinem tomcat dev Server - ROOT und appctx

Ich hoffe, das wird helfen. Viel Glück.

    
Dominique Morales 05.01.2014 13:31
quelle
1

Wie bereits erwähnt, müssen Sie nur Servlet-Mappings für /myapp ; Die Abbildungen nach # sind in der Tat redundant. Der Inhalt nach # , sowie der Hash selbst werden niemals gesendet zum Server sowieso .

    
mindas 06.01.2014 17:04
quelle
1

web.xml und Servlets erkennen '#' in URLs nicht, das ist ein reines Front-End-Konstrukt, es teilt dem Browser mit, welchen Link innerhalb der Seite, zu der Sie gehen möchten. Was Sie tun müssen, ist ein Mapping für die Homepage wie folgt einzurichten:

%Vor%

und machen Sie den Rest Ihrer Servlet-Mappings wie gewohnt.

    
SergeyB 07.01.2014 22:36
quelle
1

Sie müssen keinen Filter erstellen. Die einfache Lösung ist:

  1. Bearbeiten Sie web.xml

    %Vor%
  2. Benennen Sie myapp.html in index.html

  3. um
  4. Editiere index.html und lege dort ein Tag mit id="blah" -Attribut an. Dies ist zum Mach localhost:8080/myapp/#<blah> Arbeit.
Tantowi Mustofa 09.01.2014 07:32
quelle