"트리 메뉴 구성" 의뢰

Posted at 2014. 1. 23. 03:00 | Posted in Request Sample

Request


아래와 같은 트리 메뉴를 구성할 데이터가 들어있는 테이블이 있습니다.



path 칼럼에 상위 트리의 경로가 "/" 구분자로 들어 있습니다.


예를 들어 id가 7인 노드는 [루트 → 3 → 4 → 7] 의 경로를 가지게 됩니다.


이렇게 데이터가 들어있는 테이블을 조회해서 ul 과 li 태그의 조합으로 화면에 나타내고 싶습니다.


트리 깊이(depth)는 제한이 없습니다.


데이터베이스는 MySQL, 프레임워크는 Spring + iBatis를 사용합니다.




Response


재귀함수/재귀쿼리를 써야 한다.


MySQL 에는 기본적으로 재귀쿼리가 안된단다. -_-;


나 역시도 특정 데이터베이스에서만 있는 문법을 싫어하기 때문에 있어도 안쓸 생각이었다!


단순 select 쿼리로 아래 클래스에 만족하는 계층 클래스 구조를 만들었다.



iBatis는 MyBatis 처럼 <collection>에서 재귀 효과를 낼 수 없기 때문에 다른 곳(Service 영역)에서 이 역할을 해주었다.


아래 그림에서 PathTreeService 클래스의 findChildren() 메소드가 계속 재호출되는 부분이다.



또 이 재귀 부분이 쓰이는 부분은 화면에 <ul>과 <li>를 이용해서 출력하는 부분(JSTL Custom Tag)에서 쓰인다.


PathTreeTag 클래스의 printChildren() 메소드가 계속 재호출 되는 부분이다.



Spring + iBatis + HSQL 을 이용해 만든 샘플이다.


pathtree.war


↑ java 소스 포함 WAR 파일


pathtree.zip


↑ maven 프로젝트


아래와 같은 결과가 나오게 된다.




'Request Sample' 카테고리의 다른 글

"트리 메뉴 구성" 의뢰  (0) 2014.01.23

댓글 (Comment)

Name*

Password*

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

JSTL Custom Tag using Spring Beans

Posted at 2013. 12. 1. 17:37 | Posted in Java+/Example

Introduction


JSTL[각주:1] 태그를 만들어 사용할 때에 스프링 빈을 가져다 쓰는 방법이다.




Using Spring Beans


너무나도 간단하다. 


일반적으로 TagSupport 클래스를 상속 받아서 구현 하면 되는데, 스프링 빈을 사용하고 싶으면 RequestContextAwareTag 클래스를 상속 받아서 구현하면 된다.



사용법은 아래와 같다.


import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.servlet.tags.RequestContextAwareTag;

public class XXXTag extends RequestContextAwareTag {

	@Override
	protected int doStartTagInternal() throws Exception {
		// WebApplicationContext 를 얻는다.
		WebApplicationContext ctx = getRequestContext().getWebApplicationContext();
		// 빈을 가져와서 처리
		return SKIP_BODY;
	}

}




Example Source


WAR 파일 (소스 포함)


webapp.war


프로젝트 파일 (메이븐 구조)


webapp.zip




  1. 자바 서버 페이지 표준 태그 라이브러리(JavaServer Pages Standard Tag Library, 약칭 JSTL)은 Java EE 기반의 웹 애플리케이션 개발 플랫폼을 위한 컴포넌트 모음이다. [본문으로]

'Java+ > Example' 카테고리의 다른 글

LOGBack Configurator with JMX  (0) 2014.07.20
현지어로 언어명 보여주기  (0) 2014.02.09
2014년 도로명 주소 사용에 따른 우편번호 준비  (2) 2013.12.22
JSTL Custom Tag using Spring Beans  (0) 2013.12.01
Spring Message Source from Database  (1) 2013.03.03
Infinite Routing DataSource  (1) 2013.01.13
Mybatis Type Handler  (1) 2012.09.30
Using AUTO_INCREMENT keys  (0) 2011.03.01
tag: JSP, JSTL, Spring

댓글 (Comment)

Name*

Password*

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

게시판 1.0

Posted at 2010. 3. 11. 13:04 | Posted in Mini Project
2011.01.24 - 제목, 작성자에 html 태그 넣으면 이상하던거 수정 -_-

Introduction


http://antop.nerv.kr/board_v1/list.do

전에 php로 일할때는 게시판을 직접 만들어서 홈페이지를 만들었었는데

JAVA 로 갈아타면서 제대로된 게시판을 만들어보질 못했네요...

그래서 열심히 게시판을 하나 만들어 봤습니다.

아래의 기능들을 사용했습니다.

JSP Standard Tag Library (JSTL)
Strtus 1.3.10 (GA)
Hibernate 3.3.2 (GA)
json-taglib
json_parse.js
SWFUpload 2.2.0.1
SmartEditor Basic 0.3.17
Google Kaptcha 2.3
Lightbox JS 2.0

알고리즘은 반업데이트 방식을 사용했습니다.



알고있는 버그(에러) 몇개 있지만 차차 고치도록 하고.... 일단 개시!!!!!! ㄷㄷ;;

에러 많아 잡아주세용~






Version

1.0.0
 - 게시판 완성


1.5.0 (예정)
 - 다중 게시판으로 변경
 - 댓글(comment) 구현

2.0.0 (예정)
 - javascript 부분 jQuery로 교체
 - 게시판을 관리하는 관리자 구현
 - swfupload 개선

3.0.0 (예정)
 - jQuery를 이용한 풀 AJAX 구현



Table Structure





Flowchart

아주 아주 간략한 흐름을 그려봤습니다. 초큼 상세하게 할려고 했는데... 포기 ㅠ_ㅠ




'Mini Project' 카테고리의 다른 글

Proftpd Manager  (0) 2012.12.10
게시판 2.0  (5) 2011.07.27
Sudoku  (0) 2011.06.09
간단한 JAVA 실행기(?)  (1) 2011.03.21
Forecast Repository  (8) 2010.11.30
Sales History API  (2) 2010.05.27
Order Entry API  (0) 2010.05.13
Human Resources API  (0) 2010.05.10
게시판 1.0  (1) 2010.03.11
비밀번호 생성기(Generate Password)  (1) 2010.02.10
Weather History API  (2) 2010.01.18
  1. 형진
    ㅋㅋㅋ 잘만들었다!!!!!

댓글 (Comment)

Name*

Password*

Link (Your Website)

Comment

SECRET | 비밀글로 남기기