Ich möchte die URL für meine Struts2-basierte Anwendung (derzeit in der Entwicklungsumgebung) neu schreiben. Ich habe danach gesucht und über Tuckey URL Rewrite gefunden und in meinem Projekt eingerichtet. Jetzt möchte ich meine Login-URL, die derzeit http://localhost:8080/MyProject/loadLogin.action
(ich verwende Wildcard-Mapping in Struts2), wie http://localhost:8080/login
aussehen. Unten ist mein Konfigurationscode:Brauchen Sie Hilfe in URL Rewrite mit Tuckey URL Rewrite in Struts2
struts.xml:
<action name="*Login" method="{1}" class="com.myproject.controller.LoginController">
<result name="login" type="tiles">mylogin</result>
</action>
web.xml:
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
<init-param>
<param-name>logLevel</param-name>
<param-value>DEBUG</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
<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>
Jetzt ist hier die urlrewrite.xml, die die Regel hat, und ich weiß nicht, ob ich habe die Regel korrekt konfiguriert:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN"
"http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">
<!--
Configuration file for UrlRewriteFilter
http://www.tuckey.org/urlrewrite/
-->
<urlrewrite>
<rule>
<from>^/*</from>
<to type="redirect">/login</to>
</rule>
</urlrewrite>
Warum wollen Sie UrlRewrite benutzen? Um '/ MyProject' zu entfernen? -> Stellen Sie Ihre App einfach auf root. Um 'loadLogin.action' zu ändern? -> Benenne einfach deine Aktion um. –
@AleksandrM Über Ihren zweiten Vorschlag der Umbenennung der Aktion verwende ich Wildcard-Mapping wo Load() ist die Methode in meinem LoginController, die die Login-Seite anzeigt, so wie kann ich es umbenennen, um das gleiche Ergebnis zu erhalten. Danke für Ihre Antwort. –
Warum Wildcard? Was sonst noch meldest du dem Login-Controller? Erstellen Sie eine Aktion ohne Platzhalter. –