如何使用struts 2将url重定向到特定页面

时间:2012-08-23 06:28:58

标签: java jsp redirect struts2

我有很多目的地(比如150+),每个目的地有两种不同的变种:

  • A

我为每个变体生成了一个html。例如:

  • 纽约-A.html
  • 纽约-B.html
  • SanFrancisco的-A.html
  • SanFrancisco的-B.html
  • LasVegas-A.html
  • LasVegas-B.html ...

通用格式:

  • 目的地-A.html
  • 目的地-B.html

这些文件中的每一个都写入/seo/Destination/

如何将给定的URL映射到struts 2中的这些文件:

www.mysite.com/NewYork-Tourism => www.mysite.com/seo/Destinations/NewYork-A.html AND www.mysite.com/NewYork-Travel =>的 www.mysite.com/seo/Destinations/NewYork-B.html

通用:

www.mysite.com/Destination-Tourism => www.mysite.com/seo/Destinations/Destination-A.html

www.mysite.com/Destination-Travel =>的 www.mysite.com/seo/Destinations/Destination-B.html


我能想到的一种方法是生成与(destination * variant_types)一样多的动作,然后将每个动作的结果映射到正确的html文件。像这样:

<action name="NewYork-Tourism">
    <result name="success">/seo//Destination/NewYork-A.html</result>
</action>
<action name="NewYork-Travel">
    <result name="success">/seo//Destination/NewYork-B.html</result>
</action>

..等等

还有其他(更好)的方法吗?

2 个答案:

答案 0 :(得分:3)

在我看来,一种qquick方式是使用通配符映射,Struts2有一种方式即Wildcard,它似乎更适合你。

  

随着应用程序的大小增加,动作映射的数量也会增加。通配符可用于将类似的映射组合成一个更通用的映射。

类似

<action name="List*s" class="actions.List{1}s">
  <result>list{1}s.jsp</result>
</action>

有关详细信息,请参阅文档

答案 1 :(得分:0)

它也可以用另一种方式,在你的动作类上的方法public String execute()上,否则你将嵌套。例如,第一个if语句是针对纽约而用户选择了Tourism,您将返回一个值“New-York-Tourism”

我们的struts.xml中的情况

<action name="Destinations" method="execute" class="Your Class Location">
<result name="New-York-Tourism">/seo//Destination/NewYork-Tourism.html</result>
<result name="New-York-Travel">/seo//Destination/NewYork-Travel.html</result>
. . . . . .