使用Struts2 / Java EE将URL添加到现有URL以使其更具可读性

时间:2011-09-03 09:30:50

标签: url java-ee struts2

我想改变我看起来像这样丑陋的网址:

/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>

你知道如何实现我能够做到的事情吗?

4 个答案:

答案 0 :(得分:2)

您可以使用的一件事是struts2中的NamedVariablePatternMatcher。关于其功能的讨论可以在这里找到

NamedVariablePatternMatcher in Struts2

否则,您可以使用URL重写URL,通过它可以将其转换为用户友好且可读的格式。 tuckey URL是同一个

中使用最广泛的URL过滤器之一

URl-Rewriting

答案 1 :(得分:2)

你最好从一开始就创建干净,安静的URL,而不是试图在以后掩盖“丑陋”的URL。要扩展umesh提到的NamedVariablePatternMatcher方法,这里有一个示例,说明如何设置:

struts.xml中

<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域中使用

希望这有帮助