【问题标题】:Personalized URL in Struts 2Struts 2 中的个性化 URL
【发布时间】:2013-03-31 14:42:24
【问题描述】:

我目前正在开发一个允许匿名使用的 Struts 2 Web 应用程序。我希望匿名用户的 URL 类似于:

http://localhost:8080/myapp

但用户登录后,URL会根据用户名进行个性化设置,例如:

http://localhost:8080/myapp/Cuong-Doan

请向我推荐一个可以帮助我实现它的插件/技术。

【问题讨论】:

  • 我可以知道为什么我的问题会被否决吗?

标签: java parameters struts2 url-rewriting wildcard-mapping


【解决方案1】:

您可以尝试使用 Tuckey 的 UrlRewriteFilter 来实现。登录后添加会话属性,例如loggedUsername=Cuong-Doan。然后使用condition元素的session-attribute参数分析UrlRewriteFilter rule中的这个属性。如果存在 -> 进行重定向,请使用 backreferences 将其添加到 URL。

【讨论】:

  • 感谢您的建议,我会尝试并反馈给您。
【解决方案2】:

个性化可以通过设置指定角色的参数来完成。查看问题中的 URL,我决定让您想象一下用于重现 SEO 优化 URL 的技术。这种技术称为"Parameters after action names"。例如,将您的角色映射到您可以使用的操作

@Action(value = "/*", params = {"person", "{1}"}) 

因此,映射该操作后,您将通过可在操作中使用的person 参数获取有关人员的信息。

【讨论】:

  • +1,@Doan 这就是答案,不需要插件。也请参阅我的相关答案:stackoverflow.com/questions/15855831/…
  • @DoanCuong 如果您有多个操作,那么您可以使用通配符
  • @Roman C 谢谢你的建议。我可以问一个问题吗?根据您的回答,我想在每个动作中都添加{"person", "{1}"} 以实现http://localhost:8080/myapp/Cuong-Doan/{action name},对吗? @AndreaLigios 谢谢你的建议。您介意将您的评论作为答案,以便我投票吗?
  • @DoanCuong 您可以使用动作名称作为第二个参数,依此类推。见stackoverflow.com/questions/14411736/…
  • @DoanCuong 由于模式匹配器是互斥的,因此无法再使用带有命名变量的通配符进行评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-29
  • 1970-01-01
  • 2011-04-28
  • 2014-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多