我有一个带有单个页面的 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 中创建了一个名为部门的新包。在这个包中,只有一个动作映射到 *. 因此它会捕获对 mydomain.com/departments/anything.html 的所有请求。
在操作类中,我只是解析 url 并查找部门/ 和 .html 之间的部分,这是部门的名称,因此我可以在数据库中查找它。这已经运行了将近 5 个月,我已经在网站的其他区域实施了它。