자바 빵 부스러기 내 비게 이 션 제작

간단 한 빵 부스러기 네 비게 이 션 기능 을 만 들 었 다. 예 를 들 어 페이지 에서 흔히 볼 수 있 는 이런 네 비게 이 션 이다.
 
위치: 음악 동네 --> 사용자 모듈 --> 사용자 등록
 
나 는 태그 형식 으로 jom4j 를 이용 하여 xml 파일 을 분석 했다.
핵심 클래스 SiteMapTag:
package org.forever.tag;

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;

/**
 *          
 * @author Administrator
 *
 */
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<String> titles = new ArrayList<String>();
			List<String> hrefs = new ArrayList<String>();
			
			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)+"--&gt;");
				}else{
					content.append("<a href='"+href+"'>"+titles.get(i)+"</a>--&gt;");
				}
				
			}
			if(content.length()>0){
				this.pageContext.getOut().println(content.delete(content.length()-6, content.length()));
			}
			

		} catch (Exception e) {
			e.printStackTrace();
			throw new JspException(e);
		}
		
		
		return super.doStartTag();
	}

	private void parseParent(Element parent){
		Iterator<Element> 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 파일:
<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
    version="2.1">
    
    <description>      </description>
	<display-name>myTaglib siteMap</display-name>
	<tlib-version>1.1</tlib-version>    
    <short-name>tagUtil</short-name>
    <uri>http://tag.forever.org/jsp/tagutil/sitemap</uri>

    <tag>
		<description>     </description>
		<name>siteMap</name>
		<tag-class>org.forever.tag.SiteMapTag</tag-class>
		<body-content>empty</body-content>
    </tag>
    
</taglib>

 프로젝트 의 src 아래 sitemap. xml 파일 을 추가 합 니 다:
<?xml version="1.0" encoding="UTF-8"?>

<!--       , sitemap   ,title         ,
	href    ,path           
-->
<sitemap title="    " href="index.action">
	<node  title="    ">
		<node path="/WEB-INF/pages/user/register_view.jsp" href="user/registerView.action"
			title="    " />
	</node>
</sitemap>

 
사용 할 jsp 태그 추가 명령:
<%@taglib uri="http://tag.forever.org/jsp/tagutil/sitemap" prefix="tagUtil" %>

 놓 고 싶 은 위치 에 라벨 붙 이기:
당신 이 있 는 위치: < tagUtil: sitemap/> 이면 됩 니 다.
sitemap. jar 원본 코드.사용 할 때 jom4j 의 지원 을 추가 하 는 것 을 잊 지 마 세 요.

좋은 웹페이지 즐겨찾기