提纲: 一、背境;
二、需求分析:
1、学习日记网站的主要功能页面结构;
2、需要进行动态导航的主要模块;
3、需求的提出:
1)、层次导航的需求;
2)、同一列表中帖子间的导航(即上一条,下一条类似的导航);
3)、父帖与子帖列表的双向导航;
三、具体实现过程:
1、层次导航的实现过程:
1)列出导航功能需求列表,看都有哪些导航路径;
2)分析定位特定类型的页面所需的参数;
3)确定层次导航的实现方法;
4)进行层次导航系统的设计:
(1)、进行页面节点导航封装字符串格式的设计;
(2)、页面完整导航字符串的设计;
(3)、将封装的导航字符串还原为显示在页面上的URL地址导航条;
(4)、在页面上显示层次导航的URL字符串;
2、同一列表中帖子间的导航(即上一条,下一条类似的导航)的实现过程:
1)列出导航需求列表;
2)分析实现上一条、下一条导航所需的参数;
3)确定实现上一条、下一条导航的实现方法;
4)进行上一条、下一条导航的设计:
(1)、根据层次导航的导航字符串确定上一条、下一条导航所在的层次导航位置;
(2)、确定在哪几个Struts的Action中需要处理上一条、下一条导航;
(3)、在页面上显示上一条、下一条导航的URL字符串;
3、父帖与子帖列表的双向导航的实现过程:
1)列出导航需求列表;
2)分析实现双向导航所需的参数;
3)确定实现方法;
4)进行双向导航的设计:
(1)、确定在哪几个Struts的Action中需要处理双向导航;
(2)、在页面上显示双向导航的URL字符串;
四、总结:
1、心得;
2、优点;
3、缺点;
关键词:学习日记 Struts 动态导航 学习日记动态导航技术(简称:LDDN技术 ) 学习日记开发小组(简称:LDDG )
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
正文
一、背境: 学习日记(http://www.learndiary.com )网站是采用Struts框架的开源项目learndiary(http://develop.learndiary.com )的实际运行示范站点。目前由学习日记开发小组进行开发,致力于以JAVA技术构建一个普遍适用的开源网络学习交流平台。为了改善用户的浏览体验,故提出导航系统的改善计划。已经包含了这个导航系统的的最新版本为learndiaryV0.9.0.4。本文所提到的程序均可以在本站的下载菜单中获取:http://www.learndiary.com/download/download.html 。本文希望起到一个抛砖引玉的作用,引发一场关于
java技术构建的web系统的导航系统设计的讨论。
二、基本思路: 1、学习日记网站的主要功能页面结构:
核心为:目标列表-》目标内容及评论-》目标下的日记列表-》日记内容及评论
(示意图:http://
java.chinaitlab.com/UploadFiles_8734/200511/20051128145635335.gif )
2、需要进行动态导航的主要模块:
需要进行动态导航的主要模块有3个,见学习日记网站的菜单栏:
1)、所有目标:http://www.learndiary.com/indexAction.do?pageNum=1&naviStr=a10 (显示学友提出的所有学习目标列表 )
2)、检索:http://www.learndiary.com/toSearchAction.do?naviStr=a10ac0 (检索本站的所有学习目标和学习日记 )
3)、您的目标:http://www.learndiary.com/processGoalAction.do?currentGoalState=1&pageNum=1&naviStr=a10a60 (学友自己的学习目标归类:包括:进行中的目标、退出的目标、已完成的目标 )
3、需求的提出:
1)、层次导航的需求:
我们想建成一个导航系统,它可以跟踪用户在系统中浏览页面的过程,每浏览到一个新的页面,就在导航条中加入这个页面的URL,于是,当用户浏览到别的页面,可以点击返回系统导航条中的前面浏览过的页面;当浏览一个页面是与导航条中已经存在的页面类型一致时,就截去导航条中此类型页面后面的导航URL。
征对这个需求,
我大概看了一下动网的实现方式和phpWind论坛的实现方式,他们用的导航基本上是静态的,也就是说,一种页面上的导航条是固定的,例如:显示一条帖子的内容,他们的方式是:论坛首页-》论坛版块-》主题内容。
而
我们的需求是,例如:显示一篇日记的内容:
在所有目标模块中,导航条为:所有目标>>日记列表>>日记内容;(图例:http://
java.chinaitlab.com/UploadFiles_8734/200511/20051128145637393.gif )
在检索模块中,导航条为:所有目标>>检索>>检索日记列表>>日记内容;(图例:http://
java.chinaitlab.com/UploadFiles_8734/200511/20051128145638825.gif )
在您的目标中,导航条为:所有目标>>
我进行中的目标>>本目标
我的日记列表>>日记内容;(图例:http://
java.chinaitlab.com/UploadFiles_8734/200511/20051128145639738.gif )
2)、同一列表中帖子间的导航(即上一条,下一条类似的导航 ):
另外,除了上面层次导航的需求,同一列表中帖子间的导航(即上一条,下一条类似的导航 ),
我们也想在网上一般的导航系统的基础有所改良。例如:在一般的导航系统中,如果你在检索结果的列表中点击查看一篇帖子,然后,你再点击这篇帖子的上一条和下一条链接,新点开的页面不是检索结果列表中的上一篇或下一篇帖子,而是这条帖子所有的版块的上一条和下一条帖子。
我们需要在检索结果列表中,点击检索到的一篇日记中的“上一条”和“下一条”链接时,显示的是检索结果列表中本日记的上一条和下一条日记。
例如,
我们以“中文显示”为关键字检索日记得到一个检索结果列表:(图例:http://
java.chinaitlab.com/UploadFiles_8734/200511/20051128145641532.gif )
当
我点击查看“解决:
jsp页面中文显示问题”这篇日记中的下一条链接时,
我们需要打开检索结果列表的下一篇日记:“问题:
jsp中文显示,<c:set>的值可否是对象?me ”:(图例:http://
java.chinaitlab.com/UploadFiles_8734/200511/20051128145642728.gif ),而不是“解决:
jsp页面中文显示问题”这篇日记所在的目标中的下一篇日记。
在“您的目标”这个模块中的“上一条”和“下一条”的导航同样存在在检索页面中点击“上一条”和“下一条”链接的问题。
3)、父帖与子帖列表的双向导航:
学习日记征对自身的功能结构特点,还需要实现:“目标<──>目标下的所有日记列表”的双向导航和“目标<──>目标下
我的日记列表”的双向导航:显示目标内容(图例:http://
java.chinaitlab.com/UploadFiles_8734/200511/20051128145649587.gif ),您可以看到页面右边中上有两个链接分别是:“查看所有日记”和“查看
我的日记”,点击“查看所有日记”链接出现的是页面(图例:http://
java.chinaitlab.com/UploadFiles_8734/200511/20051128145650721.gif ),点击“查看
我的日记”链接出现的是页面(图例:http://
java.chinaitlab.com/UploadFiles_8734/200511/20051128145653404.gif );后面这两个页面的右中上部又都有到日记所在的目标中的链接:“查看目标内容”。
以上总结了学习日记需要实现的导航系统的三个方面的需求,征对这个需求,
我看了一些论坛,均没有现存的东西可以参考,于是,
我们决定探索一种能够实现上面动态导航需求的方法。因为
我们实现的导航系统是动态变化的,故把这种实现的方法称之为“学习日记动态导航技术”(简称:LDDN技术 )。下面把
我们的具体设计过程总结一下。