在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