网站导航路径实现


说明:在开发系统或者其他网站的过程中,常常需要在页面中添加路径导航信息,如下图所示:

网站导航路径实现

如果每次在请求的action中写,很麻烦,这里我将它封装成一个bean,提供一个方法,只需提供一些参数,便完成自动封装,然后将这个bean放到session中,这样路径信息可以得以保存,然后哪里需要用的话直接从session中取出来便可。

设计的BeanDIirectUrlBean,其关键属性如下:

urlPath:拼接好的完整的url路径,传入jsp就会如图显示并且可点击。

partListurlPath的模块集合。这里的模块是指一级一级的链接,比如图中的模块数为3,指urlPath中有3块链接。每次将每个模块的url片段拼接好后,就放入该list,最后一一取出list中的片段拼接成完整的导航路径。这样做而不是只接将urlPath拼好的原因是,这样可以实现方便的管理list中的模块数,比如修改或者删除等。其代码如下:

1DirectUrlBean

package com.bbs.bean;

 

import java.util.ArrayList;

import java.util.List;

import com.bbs.utils.MyException;

 

 

public class DirectUrlBean {

         private String showText= "";

         private String actionName = "";

         private String urlPath = "";

         private List partList = new ArrayList();

        

        

        

         public void init(int level,String actionName,String showText,String[] paramsList) throws MyException{

                   this.showText = showText;

                   this.actionName = actionName;

                   //如果路径中的模块信息已经存在至少一个,则根据点击的节点位置,截取之前的木块,之后的丢掉

                   if(level > 1 && partList.size() >= level-1){

                            Listtemp = new ArrayList();

                            for(int i=0;i< level-1;i++){

                                     temp.add(partList.get(i));

                            }

                            partList = temp;

                   //如果还没有模块,则新添加一个

                   }else{

                            partList.clear();

                   }

                   //拼接一个完整的url

                   StringBuffer strBf = new StringBuffer();

                   if(partList.size()>0){

                            strBf.append(">>");

                   }

                   if(paramsList != null){

                            if(paramsList.length%2 != 0){

                                     throw new MyException("请求参数的个数不符合要求!");

                            }

                            int n = paramsList.length/2;

                            strBf.append("").append(showText).append("");

                   }else{

                            strBf.append("").append(showText).append("");

                   }

                   //将拼接好的url存放到模块记录中

                   partList.add(strBf.toString());

        

         }

 

         public static void main(String[] args) throws MyException {

         }

        

         public String getShowText() {

                   return showText;

         }

         public void setShowText(String showText) {

                   this.showText = showText;

         }

         public String getUrlPath() {

                   return urlPath;

         }

         public void setUrlPath(String urlPath) {

                   this.urlPath = urlPath;

         }

         public List getPartList() {

                   return partList;

         }

         public void setPartList(List partList) {

                   this.partList = partList;

         }

 

 

         public String getActionName() {

                   return actionName;

         }

 

 

         public void setActionName(String actionName) {

                   this.actionName = actionName;

         }

        

}2、包装成工具方法:SimpleToolUtil

   

    public static String formatUrlPath(HttpSession session,int level, String actionName,

           String showText, String[] paramsList) {

        DirectUrlBean dbn;

       String urlPath = "";

       //如果session中没有这个bean则初始化bean,有则取出。

       if(session.getAttribute("dirUrlBean")!= null){

           dbn = (DirectUrlBean)session.getAttribute("dirUrlBean");

           session.removeAttribute("dirUrlBean");

       }else{

           dbn = newDirectUrlBean();

       }

       try {

           dbn.init(level,actionName, showText, paramsList);

           //拼接urlPath,不重复拼接相同的路径

           for(String str : dbn.getPartList()){

              if(!urlPath.contains(showText))

                  urlPath += str;

           }

           dbn.setUrlPath(urlPath);

       } catch (MyException e) {

           e.printStackTrace();

       }

       session.setAttribute("dirUrlBean",dbn);

       return urlPath;

    }

action中应用:

@SuppressWarnings("unchecked")

    public String listTopics() throws MyException{

       int pageNoVal;

       int totalRows;

       initContext();

       topicList = newArrayList();

       try {

           int forumId = Integer.parseInt(forumIdStr.trim());

           ForumBean frm = new ForumBean();

           frm.setId(forumId);

           forum = forumService.getOneForum(frm);

          

           //分页处理:所有的分页实现需使用PagePageService

           //查询条件

           String sql = "from TopicBean as tp where tp.forumName = '"

                  + forum.getForumName() + "'";

           //查询符合条件的记录总数

           totalRows = pageService.getAllListNum(sql);

           //查询所有主题数和今日新主题数

           forum.setForumTotalTopics(totalRows);

           forum

           .setForumNewTopics(topicService

                  .getNewTopicsNum(forum.getForumName(),

                         SimpleToolUtil

                                .getUniqueDate(SimpleToolUtil.TODAY_START),

                         SimpleToolUtil

                                .getUniqueDate(SimpleToolUtil.TODAY_END)));

           //获取页面传来的页面值

           if(pageNo != null){

              if(!pageNo.trim().equals(""))

                  pageNoVal = Integer.parseInt(pageNo);

              else

                  pageNoVal = 1;

           } else {

              pageNoVal = 1;

           }

 

           page = new Page();

           page.init(20, totalRows);

           page.execute(pageNoVal);

           topicList = pageService.getPageList(page.getStartRow(), page

                  .getPageSize(), sql);

       } catch (Exception e) {

           e.printStackTrace();

           throw new MyException("在列出该板块的帖子信息的时候不小心出错了~");

       }

      

       SimpleToolUtil.formatUrlPath(request.getSession(),

              1, "forum.action", "逝水流年", null);

       this.naviUrl = SimpleToolUtil.formatUrlPath(request.getSession(),

              2, "topicService.action", forum.getForumName(), new String[] {

                     "forumIdStr", forum.getId() + "" });

       return SUCCESS;

    }

 

Action中将工具方法返回的完整的urlPath路径复制给action的一个成员变量naviUrl,在jsp中显示。

这里只是部分代码,详细的代码参加bbs项目。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值