java - 在struts2中创建动态资源的友好url

标签 java struts2 friendly-url

我有一个 struts2 应用程序,它有一个页面,可以显示数据库中存储的多个值之一。该申请适用于一所拥有多个院系的学校,每个院系都有多个项目。使用这样的 url 访问部门页面

department.action?id=2

DepartmentAction 将加载 id = 2 的部门进行显示。如果用户只是浏览网站,这一切都很好,但如果我想提供报纸上工程部门的链接,就会感到不舒服。该链接必须为 www.myschooldomain.com/department.action?id=2。我发现这方面存在很多问题。

首先,它对用户不友好。其次,它很容易被破坏,因为部门是动态维护的,并且部门的 ID 可能会在没有警告的情况下发生变化,从而导致链接不稳定。

我更愿意打印这样的网址:www.myschooldomain.com/department/engineering 并以某种方式将其转到department.action?id=2。

到目前为止我的想法:创建一个操作,该操作将解析末尾部门名称的 url,然后按名称查找。也许我可以为每个部门在数据库中添加一个Friendlyurl 字段。

但问题是:在 struts2 中是否有更好的方法来做到这一点?

谢谢。

更新(2009 年 5 月):我只是偶然发现这个问题,并想我会说一下我是如何解决这个问题的。

我在 struts.xml 中创建了一个名为“departments”的新包。在此包中,只有一个操作映射到 *.因此它捕获对 mydomain.com/departments/anything.html 的所有请求。

在操作类中,我简单地解析 url 并查找 Departments/和 .html 之间的部分,这是部门的名称,这样我就可以在数据库中查找它。近 5 个月以来,该功能一直运行良好,并且我已将其应用于网站的其他区域。

最佳答案

您可以使用URL Rewrite filter

这避免了对任何额外 servlet 或 Java 代码的需要,但需要 XML 描述符。

关于java - 在struts2中创建动态资源的友好url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/226721/

相关文章:

java - 如何在 JMenu 中激活 ActionEvent 以在框架上显示新面板?(基本)

java - 如果您严格在构建目标中需要它们,那么用于输出资源的最常规文件夹是什么?

url - Google 看到了它不应该看到的东西。为什么?

seo - 为什么要在 URL 中使用页面标题?

java - 从 Broadcastreceiver 调用服务未按预期工作

java - 如何绕过取消时的 Struts 验证

javascript - 如何在 struts2 属性标签中提供 javascript 函数和 css 样式

java - 如何在 struts2 Action 中获取 ContextPath?

apache - 使用 ReWriteEngine 将用户个人资料页面重定向到物理页面

java - 在编译之前使用 Gradle 列出 SourceSet 中的所有 Java 包