2016-04-10 4 views
-1

Ich benutze Struts 2.3 mit Tomcat 7. Wie arbeitet Tomcat mit Struts2 beim Filtern Anfrage?Struts Zuordnung zu Aktion namens mit der Erweiterung funktioniert nicht

Wenn ich Struts Aktionsname auf etwas mit einer Erweiterung festlegen, funktioniert es nicht.

<action name="login.html"> 
    <result>/WEB-INF/content/login.jsp</result> 
</action> 

Es ist keine statische Datei wie login.html, warum dann Kater würde Struts nicht zulassen, den Antrag behandeln.

Wenn ich auf die URL login.html zugreifen, gibt Tomcat 404-Seite zurück.

Wenn ich den Aktionsnamen in etwas ohne Erweiterung ändere, z. B. login, gibt tomcat die Ergebnisseite zurück.

Die web.xml ist wie folgt:

<filter> 
    <filter-name>struts2</filter-name> 
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>struts2</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

Ich habe nicht die Konstante struts.action.excludePattern gesetzt. Ich kann nicht herausfinden, wie Tomcat und Struts diese URL-Mapping-Sache machen.

Ich setze dies am Ende meiner struts.xml, um nicht zugeordnete URLs zu behandeln.

<action name="**"> 
    <result>/index.html</result> 
</action> 

Wenn statische Dateien gibt, würde tomcat die statischen Dateien als Antwort verwenden, anstatt lassen Struts die Anforderung an diese Dummy Wildcard Aktion zuordnen.

Ich nehme an, dass Tomcat den Struts-Filter nicht verwenden würde, wenn eine statische Datei vorhanden ist.

Aber es verwirrt mich immer noch, warum Struts nicht URL mit Erweiterungen behandelt, wenn keine statischen Dateien unter der URL sind.

Antwort

0

Struts behandelt URLs mit Aktionserweiterungen. Erweiterungen sind jedoch in der Konfigurationskonstante definiert

Sie können dort Ihre eigene Aktionserweiterung hinzufügen. Sie sollten den Aktionsnamen ohne Erweiterung verwenden, so dass es weniger verwechseln wird.

Der Standard-Mapper Aktion wird verwendet, um URL zu analysieren, und alles nach letzten Punkt ist eine Erweiterung. Wenn es mit den Erweiterungen der obigen Konfiguration übereinstimmt, wird der Aktionsname extrahiert. Der Name der Aktion ist nicht soll eine Erweiterung haben.

Verwandte Themen