我有一个带有单个页面的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.
到目前为止我的想法:创建一个动作,在最后解析部门名称的网址,然后按名称查找。也许我可以为每个部门的数据库添加一个friendlyurl字段。
但问题是:在struts2中有更好的方法吗?
感谢。
更新(2009年5月):我刚刚碰巧绊倒了这个问题,并认为我会说我做了什么来解决它。
我在struts.xml中创建了一个名为departments的新包。在此包中,只有一个操作映射到*。因此它会捕获所有请求到mydomain.com/departments/anything.html。
在动作类中,我只需解析url并查找departments /和.html之间的部分,这就是部门的名称,这样我就可以在数据库中查找它。这已经工作了近5个月了,我已经在网站的其他区域实施了它。