我想改变我看起来像这样丑陋的网址:
/search.action?category=1
到一个看起来像
的可读URL/my-first-category
我在Tomcat上使用Struts 2,Java EE。
我在这样的struts中尝试过URL配置:
<action name="my-first-category">
<result type="redirect">search.action?category=1</result>
</action>
哪个是重定向,一旦用户访问该页面,他们就会在地址栏中看到丑陋的URL,而不是可读的。
这种映射也会发生同样的事情:
<action name="12345">
<result type="redirectAction">
<param name="actionName">search</param>
<param name="category">1</param>
</result>
</action>
你知道如何实现我能够做到的事情吗?
答案 0 :(得分:2)
您可以使用的一件事是struts2中的NamedVariablePatternMatcher
。关于其功能的讨论可以在这里找到
NamedVariablePatternMatcher in Struts2
否则,您可以使用URL重写URL,通过它可以将其转换为用户友好且可读的格式。 tuckey URL是同一个
中使用最广泛的URL过滤器之一答案 1 :(得分:2)
你最好从一开始就创建干净,安静的URL,而不是试图在以后掩盖“丑陋”的URL。要扩展umesh提到的NamedVariablePatternMatcher方法,这里有一个示例,说明如何设置:
<struts>
<constant name="struts.enable.SlashesInActionNames" value="true"/>
<constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>
<constant name="struts.patternMatcher" value="namedVariable"/>
<package ...>
<action name="categories/{category}" ...>
...
</action>
</package>
</struts>
public class SearchAction extends ActionSupport {
private Integer category;
public void setCategory(Integer category) {
this.category = category;
}
}
这会产生如下网址:
/categories/1
/categories/2
/categories/3
答案 2 :(得分:0)
我建议查看Struts 2 Rest插件架构。
Apache Struts 2 Documentation REST Plugin
我开始将很多新项目转移到REST样式,因为它支持更友好的URL项目模型。
您可能也对以下帖子感兴趣:
Struts 2: parameters between Actions
这演示了如何通过struts.xml传递操作中的参数。您可以通过操作类设置参数,也可以通过在xml文件中对其进行硬编码来设置静态参数。
答案 3 :(得分:-2)
尝试使用非常常见的框架并在* .tk和* .co.cc域中使用
希望这有帮助