热门文章 | 热门软件| 热门源码 | 热门电影 | 知识库 | 联系我们
软件 源码 教程 影视 健康 招聘
  HTML | JavaScript | ASP | PHP | JSP | NET | VB | VC | VF | Windows | Linux | Mysql | Mssql | Oracle | Struts 
当前位置: 创世纪计算机资源网 -> 文章频道 ->struts 
站内搜索:
Struts网站导航系统设计新思路探讨(4)
作者:佚名 来源:chinaitlab.com 整理日期:2007-3-8

  现在的问题是怎么样来区别上面1>、2>、3>中列出的各种情况,并调用对应的“getPreNextNaviStr”方法来产生正确的上一条、下一条的URL导航字符串呢?
  
  的答案是根据当前页面的封装导航字符串来确定,通过分析上面1>、2>、3>中列出的各种情况的导航字符串的特征码,然后在程序中通过检索特征码来确定当前页面的层次导航位置(对应于上面不同的几种情况),这是一个烦琐的过程,这里仅列举一二:
  
  例如:在检索目标的列表中的目标页面中的封装导航串一定会含有“ae”两个字符,且帖子类型为“目标”;在检索日记的列表中的日记页面中的封装导航串一定会含有“ad”两个字符,且帖子类型为“日记”。
  
  (2)、确定在哪几个Struts的Action中需要处理上一条、下一条导航:
  
  1)、首先,需要导航的地方有三种情况:
  
  1>、目标内容
  
  2>、日记内容
  
  3>、目标的日记列表
  
  2)、
  
  1>、1)的1>和2>需要放在DisGoalContentAction.java(/WEB-INF/src/com/learndiary/website/action/disgoal/DisGoalContentAction.java)中处理;
  
  2>、1)的3>需要分在几个地方处理,分别是:
  
  1>检索目标的日记列表,所有目标的日记列表,进行、完成、退出的日记列表:在DiaryAction.java(/WEB-INF/src/com/learndiary/website/action/disdiary/DiaryAction.java)中处理;
  
  2>进行、完成、退出的的日记列表:在MyDiaryAction.java(/WEB-INF/src/com/learndiary/website/action/mydiaries/MyDiaryAction.java)中处理;
  
  (3)、在页面上显示上一条、下一条导航的URL字符串;
  
  在需要上一条、下一条导航的页面上,把从request中获得的属性“preNextNavigation”显示在页面的右上部和右下部就行了。
  
  上一条、下一条导航完整的设计分析过程见上面提到的第二篇日记:“分析学习日记横向导航及开几个窗口的思路”(http://www.learndiary.com/disDiaryContentAction.do?searchDiaryID=&goalID=1167&naviStr=a10a2506ah1128 )。
  
  3、父帖与子帖列表的双向导航的实现过程:
  
  1)列出导航需求列表:
  
  (1)“目标<──>目标下的所有日记列表”的双向导航;
  
  (2)“目标<──>目标下的日记列表”的双向导航;
  
  2)分析实现双向导航所需的参数:
  
  只需要目标的ID或日记列表的目标ID和导航封装字符串;
  
  3)确定实现方法:
  
  直接在Action中得到当前目标的ID或日记列表的目标ID和导航封装字符串,附在“***Action.do?”的后面就行了。
  
  4)进行双向导航的设计:
  
  (1)、确定在哪几个Struts的Action中需要处理双向导航:
  
  1>、在“目标──>目标下的所有日记列表”和“目标──>目标下的日记列表”的导航,需要放在DisGoalContentAction.java(/WEB-INF/src/com/learndiary/website/action/disgoal/DisGoalContentAction.java)中处理;
  
  2>、在“目标下的所有日记列表──>目标”的导航,需要放在DiaryAction.java(/WEB-INF/src/com/learndiary/website/action/disdiary/DiaryAction.java)中处理;
  
  3>、在“目标下的的日记列表──>目标”的导航,需要放在在MyDiaryAction.java(/WEB-INF/src/com/learndiary/website/action/mydiaries/MyDiaryAction.java)中处理;
  
  (2)、在页面上显示双向导航的URL字符串:
  
  在需要“目标──>目标下的所有日记列表”和“目标──>目标下的日记列表”的导航的页面上,把从request中获得的属性“jumpToViewDiaries”显示在页面的右上部和右下部;在“目标下的所有日记列表──>目标”和“目标下的的日记列表──>目标”的导航中,把从request中获得的属性“jumpToViewGoal”显示在页面的右上部和右下部就行了。
  
  四、总结:
  
  1、心得:
  
  1)、编码前的分析设计是非常重要的,这一步工作做好了,编码就很容易了(但还做得不够,如下面的第3)条心得。可是,也许是的水平有限,有些应该放在设计时的工作不到编码的时候就是想不到,还望大家给予指点);
  
  2)、Struts框架把程序的逻辑实现代码和页面显示部分能比较好的分离,有利于功能模块的新增和程序的后期维护;
  
  3)、在进行类和类的方法的设计时(如前面提到的Pager类和PageDB类),没有先进行完整的高层设计,是采用边编码边设计的方式,致使类的设计不够面向对象,给后期的理解和维护会造成困难;
  
  4)、如果这种导航设计思路真的有用,有必要把它进行精心的设计,做成插件的形式,这样可以把它方便的应用于需要这种动态导航的各种java的web程序中;
  
  2、这种动态导航的优点:
  
  1)、能够极大的提高用户的浏览体验,使网站的导航更符合逻辑和人们的思维习惯;
  
  2)、能够无限的进行需要导航的页面的增加和减少,后期的维护代码少量增加就行了;
  
  3、这种动态导航的缺点:
  
  1)、实现过程较为复杂,牵涉的页面和逻辑代码较多,权衡实现的代价和收到的效果,真的值得吗?;
  
  2)、动态导航能被用户的使用习惯接受吗?这是一个未知数;
  
  3)、还有什么缺点呢?暂时还没有想出来,大家帮们想一想吧。
[1]  [2]  [3]  [4]  
相关文章
暂无