在Struts2中使用Tuckey URL Rewrite在URL Rewrite中需要帮助

我想重写基于Struts2的应用程序的URL(目前在开发环境中)。 我搜索过它,发现了Tuckey URL Rewrite并在我的项目中进行了设置。 现在我想要我的登录URL,当前http://localhost:8080/MyProject/loadLogin.action (我在Struts2中使用通配符映射)看起来像http://localhost:8080/login 。 以下是我的配置代码:

struts.xml中:

  mylogin  

web.xml中:

   UrlRewriteFilter org.tuckey.web.filters.urlrewrite.UrlRewriteFilter  logLevel DEBUG    UrlRewriteFilter /* REQUEST FORWARD   struts2  org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter    struts2 /*  

现在这里是urlrewrite.xml,它有规则,我不知道我是否正确配置了规则:

      ^/* /login   

要重写到此URL http://localhost:8080/login您必须将urlrewritefilter部署到根上下文。 但是应用程序正在/MyProject上下文中运行。 您不能将同一应用程序中的两个filter部署到同一上下文中以执行所需的操作。

重写URL的工作原理:首先访问要显示的URL,然后urlrewrite filter搜索规则,如果找到匹配项,则执行规则并将请求转发(默认情况下)到为用户隐藏的新URL 。

如果您在标记中使用type="redirect" ,则会显示新的url,因为这意味着

匹配此规则的“条件”和“来自”的请求将被HTTP重定向。 这是一样的做法: HttpServletResponse.sendRedirect([to value]))

要重写URL,您应该使用在根上下文中部署到应用程序的此规则

  ^/login$ /MyProject/loadLogin.action