🏛️ 홍익인간CMS 개발자 매뉴얼

Version 202506 | Updated 2025-06-12
🌐 언어 선택: 🇰🇷 한국어 🇲🇳 Монгол 🇺🇸 English

4-2. ⚡ 핵심 기능 고급기능

4.6 통계 및 로그

4.6.1 접속 통계(구글,옵션)

구글 Analytics(GA4)를 이용하여 사이트 방문자에 대한 다양한 통계 정보를 수집하고 분석하는 기능을 제공합니다.

주요 기능

통계 데이터 수집 방식

⚙️ 구글 Analytics 설정

관리자페이지를 통한 구글 Analytics 설정

📊 대시보드 시각화

대시보드를 통한 시각화

주요 클래스

구글 Analytics 설정 (실제 코드)

[코드 위치] /WEB-INF/jsp/theme/developers/layout/base_layout.jsp 페이지의 일부

<c:if test="${!empty curSiteVO.googleKey }">
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=${curSiteVO.googleKey}"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', '${curSiteVO.googleKey}');
</script>
</c:if>

4.6.2 메뉴 통계

사이트 메뉴에 대한 방문자수,페이지뷰 등 통계 정보를 제공합니다.

주요 기능

통계 데이터 수집 방식

📝 로그 기록

사용자 접속 시 로그 기록

⏰ 스케줄러 실행

통계 데이터 생성 스케줄러 실행

📊 시각화

메뉴 통계 메뉴 통한 시각화

주요 클래스

메뉴 통계 스케줄러 코드 일부 (실제 코드)

[코드 위치] humanframe.backoffice.scheduler.statsMenuSchedulerBatch

@Service("statsMenuScheduling")
public class statsMenuSchedulerBatch {

    @Resource(name="statsMenuService")
    private StatsMenuService statsMenuService;

    public void statsMenuMonth() throws Exception{
        
        String day = getYesterdayYmd();

        StatsMenuVO statsMenuVO = new StatsMenuVO();
        statsMenuVO.setStatsYyyy(day.substring(0,4));
        statsMenuVO.setStatsMm(day.substring(4,6));

        statsMenuService.deleteStatsMenuMonth(statsMenuVO);
        int result = statsMenuService.createStatsMenuMonth(statsMenuVO);
    }
}

4.6.3 로그 관리

시스템 로그 및 사용자 활동 로그를 관리하는 기능을 제공합니다.

주요 기능

주요 클래스

로그 기록 AOP 코드 (실제 코드)

[코드 위치] humanframe.backoffice.aop.aspect.admin.AdminLogAspect

@Aspect
@Order(2)
@Component
public class AdminLogAspect {

    @Resource(name = "mngLogService")
    private MngLogService mngLogService;

    // 관리자 권한 체크
    @Pointcut("execution(* humanframe.backoffice..Admin*Controller.form(..))"
            + "|| execution(* humanframe.backoffice..Admin*Controller.list(..))"
            + "|| execution(* humanframe.backoffice..Admin*Controller.view(..))"
            + "|| execution(* humanframe.backoffice..Admin*Controller.action(..))"
            + "|| execution(* humanframe.backoffice..Admin*Controller.logout(..))")
    private void checkAdminLog() {}

    @Before(value = "checkAdminLog()")
    private void beforecheckAdminLog(
            JoinPoint joinPoint)throws Exception {
        // ... 중간 생략 (로그 저장 로직) ...
    }
}

4.7 스케줄러

4.7.1 배치 작업 설정

주기적으로 실행되어야 하는 작업을 설정하고 관리하는 기능을 제공합니다.

주요 기능

스케줄러 설정 코드 일부 (실제 코드)

[코드 위치] humanframe/spring/context-scheduler.xml

<bean id="bbsCreateTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
    <property name="jobDetail" ref="bbsCreateJob" />
    <property name="cronExpression" value="0 */10 * * * ?" />
</bean>
<bean id="statsMenuYearTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
    <property name="jobDetail" ref="statsMenuYearCreateJob" />
    <property name="cronExpression" value="0 0 0 1 1 ?" />
</bean>
<bean id="statsMenuMonthTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
    <property name="jobDetail" ref="statsMenuMonthCreateJob" />
    <property name="cronExpression" value="0 0 0 1 * ?" />
</bean>

4.7.2 주기적 작업 관리

홍익인간CMS에서 기본적으로 제공하는 주기적 작업들을 관리합니다.

주요 작업

주요 클래스

스케줄러 코드 일부 (실제 코드)

[코드 위치] humanframe.backoffice.scheduler.BbsSchedulerBatch

public class BbsSchedulerBatch extends HumanAbstractController {

    @Resource(name="bbsMiniService")
    private BbsMiniService bbsMiniService;
    
    /**
     * 미니게시판 JSON 데이터 생성
     */
    public void bbsCreate() throws Exception {
        int result = 0;
        List<Map<String, Object>> bbsMiniAllList = bbsMiniService.selectMiniListAll();

        if(!bbsMiniAllList.isEmpty()) {
            // JSON 파일 생성
        }
        Map<String, Object> resultObjectMap = new HashMap<String, Object>();
        resultObjectMap.put("count", result);
        logger.info("##### Json " +result+ "건 생성 완료");
        logger.info("##### Json Create End");
    }
}

4.8 서버 환경 및 시스템 기능

4.8.1 개발 서버 환경

홍익인간CMS는 다음과 같은 서버 환경에서 동작합니다:

🌐

WAS

Apache Tomcat-9.0.80

JDK

OpenJDK-1.8.0.252

4.8.2 주요 시스템 기능

홍익인간CMS는 다음과 같은 주요 시스템 기능을 제공합니다:

🔐암호화

  • AES256, SHA-256 알고리즘 지원
  • 개인정보 및 비밀번호 암호화

스케줄링

  • Quartz 기반 스케줄러
  • context-scheduler.xml에서 설정

📧메일 기능

  • SMTP 기반 메일 발송
  • 템플릿 기반 메일 내용 구성

📊엑셀 업로드/다운로드

  • Apache POI 라이브러리 활용
  • 대용량 데이터 처리 지원
  • JSP Excel 다운로드 (HTML Table 방식) 혼용

📁파일 업로드/다운로드

  • 다중 파일 업로드
  • 파일 타입 및 크기 제한
  • 다운로드 권한 관리

✏️웹에디터

  • SMART, KUKUDOCS, EDITORPLUS 지원
  • 이미지 업로드 및 관리 기능

🎨레이아웃

  • Apache Tiles (버전 3.0.5) 기반 레이아웃 관리
  • 템플릿 기반 페이지 구성

4.9 유틸리티 클래스

홍익인간CMS는 다양한 유틸리티 클래스를 제공하여 개발 편의성을 높입니다.

주요 유틸리티 클래스

📁FileUtil

파일 쓰기/읽기 처리, 파일 확장자 검증

FileUtil 클래스 사용 예시
String fileString = FileUtil.readFile(filePath);

🔧HumanComUtil

공통 유틸리티, Bean 객체 직접 얻기

HumanBbsUtil 클래스 사용 예시
MngrSiteService mngrSiteService = (MngrSiteService)HumanComUtil.getBean("mngrSiteService");

🔐HumanCryptoUtil

암호화/복호화 기능, ARIA+Base64 알고리즘 지원

HumanCryptoUtil 클래스 사용 예시
String encryptedText = HumanCryptoUtil.encrypt(plainText);
String plainText = HumanCryptoUtil.decrypt(encryptedText);

🌐HumanHttpUtil

HTTP 요청/응답 처리, REST API 호출

HumanHttpUtil 클래스 사용 예시
String response = HumanHttpUtil.getHttpForm(url, paramMap);

📧HumanMailUtil

메일 발송 기능, 템플릿 기반 메일 내용 구성

HumanMailUtil 클래스 사용 예시
HumanMailUtil.sendMail(from, to, subject, content);

🔍HumanReqUtil

HTTP 요청 분석 유틸리티, 실제 클라이언트 IP 주소 추출

HumanReqUtil 클래스 사용 예시
String ip = HumanReqUtil.getIp(request);

📝HumanStringUtil

문자열 처리, 인코딩 변환

HumanStringUtil 클래스 사용 예시
String stringDate = HumanStringUtil.convertDateFormat(date, "yyyy-MM-dd" );

🔗HumanUriUtil

사이트정보/메뉴정보를 바탕으로 Uri 생성

HumanUriUtil 클래스 사용 예시
String formUri = HumanUriUtil.getCurrUri(curSite, curMenu);

👤LoginManager

로그인 세션 관리

LoginManager 클래스 사용 예시
LoginManager loginManager = LoginManager.getInstance();
loginManager.setSession(session, mngrVO.getMngrId());

4.10 Tag Library

홍익인간CMS는 다양한 태그 라이브러리를 제공하여 JSP 페이지 개발을 용이하게 합니다.

common/taglibs.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="f" %>
<%@ taglib uri="/WEB-INF/tld/double-submit" prefix="double-submit"  %>
<%@ taglib uri="/WEB-INF/tld/cms.tld" prefix="cms" 	 %>
<%@ taglib uri="/WEB-INF/tld/cms-function.tld" prefix="cmsFn" %>
<%@ taglib uri="/WEB-INF/tld/cms-button.tld" prefix="cmsBtn" %>
<%@ taglib uri="/WEB-INF/tld/cms-button2.tld" prefix="cmsBtn2" %>

주요 태그 라이브러리

🏷️cms.tld

기본 CMS 태그, 페이징, CCL 관련 태그

cms.tld 사용 예시
<cms:paging listVO="${listVO}"
                    firstIcon="<i class='fa fa-angle-double-left'></i>"
                    prevIcon="<i class='fa fa-angle-left'></i>"
                    nextIcon="<i class='fa fa-angle-right'></i>"
                    lastIcon="<i class='fa fa-angle-double-right'></i>"
                    cssClass="pagination pull-right"/>

🔘cms-button.tld

게시판 버튼 관련 태그, 권한에 따른 버튼 표시 제어

cms-button.tld 사용 예시
<cmsBtn:list admin="true" cssClass="btn btn-default">목록</cmsBtn:list>

🔘cms-button2.tld

관리자 일반 버튼 관련 태그, 권한에 따른 버튼 표시 제어

cms-button2.tld 사용 예시
<cmsBtn2:btn btnTy="save" path="${curPath}" mngrSession="${mngrSession }" >저장</cmsBtn2:btn>

⚙️cms-function.tld

유틸리티 함수, 문자열 처리, 날짜 처리 등

cms-function.tld 사용 예시
${cmsFn:convertDate(item.value, 'yyyy.MM.dd') }

🛡️double-submit.tld

중복 제출 방지 태그, 세션 기반 토큰 관리, CSRF 방지, 다중 폼 지원

double-submit.tld 사용 예시
<button type="submit" class="btn btn-primary hidden-xs">계정 신청</button>
<double-submit:preventer/>

4.11 관리자 페이지 주요 기능별 관련 소스

홍익인간CMS의 관리자 페이지는 다양한 기능을 제공하며, 각 기능별로 관련된 소스 코드를 이해하는 것이 중요합니다. 이 섹션에서는 관리자 페이지의 주요 기능별 관련 소스 코드 구조를 설명합니다.

4.11.1 로그인 및 인증 관련 소스

관리자 로그인 및 인증 관련 소스 코드는 다음과 같습니다.

주요 클래스

구분 클래스명 설명
컨트롤러 humanframe.backoffice.controller.login.AdminLoginController 로그인 컨트롤러
유틸 humanframe.backoffice.util.LoginManager 로그인 관리 유틸
인터셉터 humanframe.backoffice.interceptor.CMSAdminInterceptor 관리자 인터셉터
세션 humanframe.backoffice.session.MngrSession 관리자 세션

주요 JSP 파일

🔄

인증 처리 흐름

로그인 요청 → AdminLoginController → LoginManager → 인증 처리 → MngrSession 생성 → 메인 페이지 이동

4.11.2 메뉴 관리 관련 소스

관리자 메뉴 관리 기능 관련 소스 코드는 다음과 같습니다.

주요 클래스

구분 클래스명
컨트롤러 humanframe.backoffice.controller.mng.AdminMngMenuController
서비스 humanframe.backoffice.service.impl.MngMenuServiceImpl
DAO humanframe.backoffice.dao.MngMenuDAO
VO humanframe.backoffice.vo.MngMenuVO

주요 파일

4.11.3 게시판 관리 관련 소스

게시판 관리 기능 관련 소스 코드는 다음과 같습니다.

주요 컨트롤러

컨트롤러 설명
AdminBbsController 게시판 관리
AdminBbsSettingController 게시판 설정
AdminBbsType1Controller 일반형 게시판
AdminBbsType2Controller 답글형 게시판
AdminBbsType3Controller 이미지 게시판
AdminBbsType4Controller 동영상 게시판
AdminBbsType5Controller Q&A 게시판
AdminBbsType6Controller FAQ 게시판
AdminBbsType7Controller 일정형 게시판
AdminBbsType8Controller 링크형 게시판

주요 서비스 및 DAO

주요 파일

4.11.4 회원 관리 관련 소스

👥주요 클래스

  • 컨트롤러: humanframe.backoffice.controller.mber.AdminMberController
  • 서비스: humanframe.backoffice.service.impl.MberServiceImpl
  • DAO: humanframe.backoffice.dao.MberDAO
  • VO: humanframe.backoffice.vo.MberVO

주요 파일

  • JSP: /WEB-INF/jsp/admin/mber/list.jsp, form.jsp, view.jsp
  • SQL 매퍼: human-mber.xml

4.11.5 콘텐츠 관리 관련 소스

📄주요 클래스

  • 컨트롤러: humanframe.backoffice.controller.cntnts.AdminCntntsController
  • 서비스: humanframe.backoffice.service.impl.CntntsServiceImpl
  • DAO: humanframe.backoffice.dao.CntntsDAO
  • VO: humanframe.backoffice.vo.CntntsVO

주요 파일

  • JSP: /WEB-INF/jsp/admin/cntnts/list.jsp, form.jsp, view.jsp
  • SQL 매퍼: human-cntnts.xml, human-cntnts-hist.xml

4.11.6 배너 관리 관련 소스

🎯주요 클래스

  • 컨트롤러: humanframe.backoffice.controller.banner.AdminBannerController
  • 서비스: humanframe.backoffice.service.impl.BannerServiceImpl
  • DAO: humanframe.backoffice.dao.BannerDAO
  • VO: humanframe.backoffice.vo.BannerVO

주요 파일

  • JSP: /WEB-INF/jsp/admin/banner/list.jsp, form.jsp, view.jsp
  • SQL 매퍼: human-banner.xml

4.11.7 팝업 관리 관련 소스

🪟주요 클래스

  • 컨트롤러: humanframe.backoffice.controller.popup.AdminPopupController
  • 서비스: humanframe.backoffice.service.impl.PopupServiceImpl
  • DAO: humanframe.backoffice.dao.PopupDAO
  • VO: humanframe.backoffice.vo.PopupVO

주요 파일

  • JSP: /WEB-INF/jsp/admin/popup/list.jsp, form.jsp, view.jsp
  • SQL 매퍼: human-popup.xml

4.11.8 메뉴 통계 관리 관련 소스

📊주요 클래스

  • 컨트롤러: humanframe.backoffice.controller.stats.AdminStatsMenuController
  • 서비스: humanframe.backoffice.service.impl.StatsMenuServiceImpl
  • DAO: humanframe.backoffice.dao.StatsMenuDAO
  • VO: humanframe.backoffice.vo.StatsMenuVO
  • 스케줄러: humanframe.backoffice.scheduler.statsMenuSchedulerBatch

주요 파일

  • JSP: /WEB-INF/jsp/admin/stats/menu/list.jsp, excel.jsp
  • SQL 매퍼: human-stats_menu.xml

4.11.9 시스템 관리 관련 소스

시스템 관리 기능 관련 소스 코드는 다음과 같습니다.

주요 컨트롤러

컨트롤러 설명
AdminCodeController 코드 관리
AdminMngrController 관리자 관리
AdminMngAuthorController 권한 관리
AdminMngMenuController 시스템메뉴 관리

주요 서비스

주요 파일