java面包屑导航制作

做了个简单的面包屑导航功能,比如页面上大家经常看到的这种导航: 
 
您所在的位置:音乐社区-->用户模块-->用户注册 
 
我做成了标签的形式,利用jom4j来解析xml文件:
 
核心类SiteMapTag.java: 


Java代码  
 

package com.market.common;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

/**
 * 站点导航标签的实现 
 * 

* Title: SiteMapTag.java *

*

* Description: *

*

* Copyright: Copyright (c) 2012 *

* * @author fjs * @version Sep 15, 2012 */ public class SiteMapTag extends TagSupport { private static final long serialVersionUID = -3531938467909884528L; private String currentFilePath; private Element target; @Override public int doStartTag() throws JspException { HttpServletRequest request = (HttpServletRequest) this.pageContext.getRequest(); currentFilePath = request.getRequestURI().replaceFirst(request.getContextPath(), ""); try { Element root = (Element)pageContext.getServletContext().getAttribute("webSiteMapSet"); if(root==null){ SAXReader reader = new SAXReader(); InputStream inputStream = SiteMapTag.class.getClassLoader().getResourceAsStream("sitemap.xml"); Document document = reader.read(inputStream); root = document.getRootElement(); pageContext.getServletContext().setAttribute("webSiteMapSet", root); } parseParent(root); StringBuffer content = new StringBuffer(""); List titles = new ArrayList(); List hrefs = new ArrayList(); while(target!=null){ Attribute attTitle = target.attribute("title"); if(attTitle!=null){ titles.add(attTitle.getText()); } Attribute attHref = target.attribute("href"); if(attHref!=null){ hrefs.add(attHref.getText()); }else{ hrefs.add(""); } target = target.getParent(); } for (int i = titles.size()-1; i >=0; i--) { String href = hrefs.get(i); if(href.equals("")){ content.append(titles.get(i)+" - "); }else{ content.append(""+titles.get(i)+" - "); } } if(content.length()>0){ this.pageContext.getOut().println(content.delete(content.length()-3, content.length())); } } catch (Exception e) { e.printStackTrace(); throw new JspException(e); } return super.doStartTag(); } private void parseParent(Element parent){ Iterator it = parent.elementIterator(); while(it.hasNext()){ Element temp = it.next(); Attribute attr = temp.attribute("path"); if(attr!=null){ if(attr.getText().equals(currentFilePath)){ target = temp; return; } } parseParent(temp); } } }



 sitemap.tld文件(存放在WEB-INF\tlds下):
Xml代码  
 





    站点导航标签
	myTaglib siteMap
	1.1    
    tagUtil
    http://tag.market.org/jsp/tagutil/sitemap

    
		面包屑标签
		siteMap
		com.market.common.SiteMapTag
		empty
    
    


 
 在项目的src下面添加sitemap.xml文件:
 
Xml代码 
  

 
  
      
          
   
 
  
  
 
要使用的jsp页面加入标签指令:

<%@taglib uri="http://tag.forever.org/jsp/tagutil/sitemap" prefix="tagUtil" %> 

 

如果运行报找不到 tld文件就在web.xml的web-app节点下加入


  
   /sitemap.tld
   /WEB-INF/tlds/sitemap.tld
  

 

那在jsp的标签指令需要改为  <%@taglib uri="/sitemap.tld" prefix="tagUtil" %>


 在想放的位置处加上标签:
 
您所在的位置: 就可以出现面包屑导航了。
 
 

你可能感兴趣的:(java博文)