본문 바로가기
✨ Back-end/Spring-Boot

[Spring] 쇼핑몰 - 44 관리자 메뉴 목록 추가 Interceptor

by 환풍 2023. 4. 13.
728x90

관리자 계정으로 가서 관리 메뉴들을 다시 만들어보자.


header.html

header에서 관리자메뉴일때 메뉴이름 조회하는 곳을 찾아서 주소를 준다.

컨트롤러로 가기 전에, menuCode 데이터를 가지고 와줘야하며,

컨트롤러의 상세 주소는 데이터베이스에 SUB_MENU_URL로 만들어주었기 때문에, 데이터 값을 끌어 와주면 된다.

th:each로 반복시켜 준 ${menuList} 안에 menuUrl이 들어가 있으므로, 각 순서대로 뽑아준 것을 가지고 와준다.

 

adminMenu-mapper.xml

메뉴와 서브메뉴 쿼리는 interceptor에서 실행한다.

MENU_001 자리에는 002, 003도 추가되었으니, #{menuCode} 로 바꿔줄 수 있다.

 

Admin Service

쿼리문에서 매개변수로 menuCode를 받아왔으니,

서비스 인터페이스와 클래스도 모두 매개변수로 menuCode를 넣어주자.

MenuIntercepter 인터셉터

MenuInterceptor의 modelAndView에 메인메뉴리스트 조회와 서브메뉴리스트 조회  두 쿼리문이 담겨져있다.

여기까지가 메인메뉴에 상품관리가 선택되면 서브메뉴로 카테고리관리, 상품등록, 상품관리가 조회되는 것이다.

AdminController 컨트롤러

위 카테고리 html을 조회하는 컨트롤러에 model에 menuCode를 , MENU_001 데이터를 넘겨주었다.

MenuIntercepter 인터셉터

Map은 K value 값으로 받을 수 있기 때문에 컨트롤러에서 menuCode가 K, MENU_001이 value이다.

menuCode는 문자열이기 때문에, 문자열 데이터는 toString()으로 받아줄 수 있다.

만약 MemberVO가 넘어 왔다면,

MemberVO v = (MemberVO)data.get("member"); 와 같이 형변환 해서 들고와줄 수 있다.

 

IntercepterConfig 인터셉터

InterceptorConfig 에서 해당 메소드에 addPathPatterns에 컨트롤러 주소를 넣어주면 html에 가기 전에 실행되게된다.

 

 

 

AdminController 컨트롤러

커맨드 객체로 AdminSubMenuVO를 생성만 해줘도 html로 갈때 데이터를 가져갈 수 있다. 

model에 menuCoed이름으로 MENU_002, MENU_003을 각각 가져간다.

 

member_manage.html, order_manage.html

이렇게 DB에 저장된 MENU_002와 MENU_003 데이터 들이 각각 회원관리, 주문관리에 들어가 서브메뉴로 나타나 있는 것을 확인할 수 있다.


다음은 상품관리, 회원관리, 주문관리를 누를때마다 각각 서브메뉴를 바꿔보도록 해보자.

 

ConstVariable

util 패키지에서 ConstVariable 클래스안에 상수 변수를 만들어주었다.

AdminController 컨트롤러

만약 adminSubMenuVO에 데이터를 받아오지 않았다면 (null) 강제로 SUB_MENU_CODE를 넣어주었다.

 

 

이렇게 각 관리마다 서브메뉴까지 띄워보았다.

 

 

반응형

댓글