¿Cómo consigue la acción de struts que urlrewrite reescriba la URL?
Para eliminar el sufijo struts2, puede configurar el filtro de esta manera: 1. lt; filtergt;
2. lt; filter-namegt;/filter-namegt; /p >
3.lt;filter-classgt;org.texturemedia.smarturls.SmartURLsFilterlt;/filter-classgt; 4.lt;/filtergt;5 Utilice este filtro para reemplazar el filtro principal FilterDispatcher de struts2, no es necesario. preocuparse más por struts2 Ya no funciona porque este filtro hereda de FilterDispatcher. Al mismo tiempo, agregue struts.action.extension= en struts.properties y no establezca ningún valor.
Luego configure UrlRewriteFilter, como se muestra a continuación 1. lt; filtergt;
2. lt; urlRewriteFilterlt;/filter-namegt; lt; filter-classgt; org.tuckey.web.filters.urlrewrite.UrlRewriteFilterlt; /filter-classgt;
4. lt /filtergt; configurarse primero. Luego está la reescritura de urlrewritefilter. Consulte la documentación para saber cómo usarlo, así que no entraré en detalles aquí. Al utilizar la reescritura, filterChain descubrió que solo había un urlrewritefilter y los recursos solicitados no se enviaron a través de smartUrls. El resultado fue, naturalmente, un error 404. Entonces verifiqué el código fuente de urlrewritefilter y descubrí que si la URL se reescribe correctamente, llamará al método de reenvío de RequestDispatcher para reenviar el recurso, y si la reescritura no tiene éxito o no se reescribe, se llamará a filterChain.dofilter. Por lo tanto, el mapeo de filtros de struts2 debe configurarse así: 1.lt; filter-mappinggt;
2.lt; filter-namegt;/filter-namegt;
3.lt; url-patterngt;/*lt;/url-patterngt;
4.lt;dispatchergt;FORWARDlt;/dispatchergt;
5.lt;/filter- mappinggt;
Eso es
Entonces está bien.