【发布时间】:2016-04-11 13:23:11
【问题描述】:
我想重写基于 Struts2 的应用程序的 URL(目前在开发环境中)。我已经搜索过它并找到了关于 Tuckey URL Rewrite 并在我的项目中设置它。现在我希望我的登录 url 目前是 http://localhost:8080/MyProject/loadLogin.action(我在 Struts2 中使用通配符映射)看起来像 http://localhost:8080/login。
下面是我的配置代码:
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>
现在这里是 urlrewrite.xml 有规则,我不知道我是否正确配置了规则:
<?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>
【问题讨论】:
-
为什么要使用urlrewrite?要删除
/MyProject? -> 只需将您的应用程序部署到 root。要更改loadLogin.action? -> 只需重命名您的操作。 -
@AleksandrM 关于重命名操作的第二个建议,我正在使用通配符映射,其中 load() 是我的 LoginController 中显示登录页面的方法,那么我该如何重命名它以获得相同的名称结果。不过谢谢你的回复..
-
为什么要使用通配符?您还映射到登录控制器的什么?创建不带通配符的操作。
-
@hasan 我也有同样的问题,Alek 请帮忙
-
@RomanC 我希望我的网址不包含实际的项目和操作名称。他们必须蒙面。我在这里提到了其中一个链接:stackoverflow.com/questions/25256628/…,您建议您在其中使用 URL 重写技术。谢谢
标签: java url-rewriting struts2 tuckey-urlrewrite-filter