4-2. β‘ Core Features Advanced Features
4.6 Statistics and Logs
4.6.1 Access Statistics (Google, Optional)
Provides functionality to collect and analyze various statistical information about site visitors using Google Analytics (GA4).
Main Features
- Visitor statistics by day/month/day of week/time zone
- Visit statistics by site/menu
- Browser/OS statistics
Statistical Data Collection Method
βοΈ Google Analytics Setup
Google Analytics setup through admin page
π Dashboard Visualization
Visualization through dashboard
Main Classes
humanframe.backoffice.controller.stats.AdminStatsController: Google statistics management controllerhumanframe.core.service.GoogleAnalyticsService: Google statistics management service
[Code Location] Part of /WEB-INF/jsp/theme/developers/layout/base_layout.jsp page
<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 Menu Statistics
Provides statistical information such as visitor count and page views for site menus.
Main Features
- Menu visit statistics by year/month/day periods
- Graph and Excel download
Statistical Data Collection Method
π Log Recording
Log recording when users access
β° Scheduler Execution
Execute statistics data generation scheduler
π Visualization
Visualization through menu statistics menu
Main Classes
humanframe.backoffice.controller.stats.AdminStatsMenuController: Menu statistics management controllerhumanframe.backoffice.service.StatsMenuService: Menu statistics management servicehumanframe.backoffice.dao.StatsMenuDAO: Menu statistics management DAOhumanframe.backoffice.scheduler.statsMenuSchedulerBatch: Menu statistics data generation scheduler
[Code Location] 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 Log Management
Provides functionality to manage system logs and user activity logs.
Main Features
- System log management
- User activity log management
- Error log management
- Security log management
- Log search and filtering
Main Classes
humanframe.backoffice.aop.aspect.admin.AdminLogAspect: Log recording AOPhumanframe.backoffice.controller.mng.AdminMngrController: Log management controllerhumanframe.backoffice.service.MngLogService: Log management servicehumanframe.backoffice.dao.MngLogDAO: Log management DAO
[Code Location] humanframe.backoffice.aop.aspect.admin.AdminLogAspect
@Aspect
@Order(2)
@Component
public class AdminLogAspect {
@Resource(name = "mngLogService")
private MngLogService mngLogService;
// Admin permission check
@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 {
// ... Omitted (log storage logic) ...
}
}
4.7 Scheduler
4.7.1 Batch Job Configuration
Provides functionality to configure and manage jobs that need to be executed periodically.
Main Features
- Batch job registration/modification/deletion
- Execution cycle configuration
- Job status monitoring
- Job history management
[Code Location] 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 Periodic Task Management
Manages periodic tasks provided by default in HONGIKINGAN CMS.
Main Tasks
- Menu statistics data generation
- Mini board JSON data generation
Main Classes
humanframe.backoffice.scheduler.statsMenuSchedulerBatch: Menu statistics generationhumanframe.backoffice.scheduler.BbsSchedulerBatch: Mini board related batch jobs
[Code Location] humanframe.backoffice.scheduler.BbsSchedulerBatch
public class BbsSchedulerBatch extends HumanAbstractController {
@Resource(name="bbsMiniService")
private BbsMiniService bbsMiniService;
/**
* Mini board JSON data generation
*/
public void bbsCreate() throws Exception {
int result = 0;
List<Map<String, Object>> bbsMiniAllList = bbsMiniService.selectMiniListAll();
if(!bbsMiniAllList.isEmpty()) {
// JSON file generation
}
Map<String, Object> resultObjectMap = new HashMap<String, Object>();
resultObjectMap.put("count", result);
logger.info("##### Json " +result+ " items generated successfully");
logger.info("##### Json Create End");
}
}
4.8 Server Environment and System Features
4.8.1 Development Server Environment
HONGIKINGAN CMS operates in the following server environment:
WAS
Apache Tomcat-9.0.80
JDK
OpenJDK-1.8.0.252
4.8.2 Main System Features
HONGIKINGAN CMS provides the following main system features:
Encryption
- AES256, SHA-256 algorithm support
- Personal information and password encryption
Scheduling
- Quartz-based scheduler
- Configuration in context-scheduler.xml
Mail Function
- SMTP-based mail sending
- Template-based mail content composition
Excel Upload/Download
- Utilizing Apache POI library
- Large data processing support
- Mixed use of JSP Excel download (HTML Table method)
File Upload/Download
- Multiple file upload
- File type and size restrictions
- Download permission management
Web Editor
- SMART, KUKUDOCS, EDITORPLUS support
- Image upload and management features
Layout
- Apache Tiles (version 3.0.5) based layout management
- Template-based page composition
4.9 Utility Classes
HONGIKINGAN CMS provides various utility classes to enhance development convenience.
Main Utility Classes
FileUtil
File write/read processing, file extension validation
String fileString = FileUtil.readFile(filePath);
HumanComUtil
Common utility, direct Bean object retrieval
MngrSiteService mngrSiteService = (MngrSiteService)HumanComUtil.getBean("mngrSiteService");
HumanCryptoUtil
Encryption/decryption functionality, ARIA+Base64 algorithm support
String encryptedText = HumanCryptoUtil.encrypt(plainText);
String plainText = HumanCryptoUtil.decrypt(encryptedText);
HumanHttpUtil
HTTP request/response processing, REST API calls
String response = HumanHttpUtil.getHttpForm(url, paramMap);
HumanMailUtil
Mail sending functionality, template-based mail content composition
HumanMailUtil.sendMail(from, to, subject, content);
HumanReqUtil
HTTP request analysis utility, real client IP address extraction
String ip = HumanReqUtil.getIp(request);
HumanStringUtil
String processing, encoding conversion
String stringDate = HumanStringUtil.convertDateFormat(date, "yyyy-MM-dd" );
HumanUriUtil
URI generation based on site information/menu information
String formUri = HumanUriUtil.getCurrUri(curSite, curMenu);
LoginManager
Login session management
LoginManager loginManager = LoginManager.getInstance();
loginManager.setSession(session, mngrVO.getMngrId());
4.10 Tag Library
HONGIKINGAN CMS provides various tag libraries to facilitate JSP page development.
<%@ 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" %>
Main Tag Libraries
cms.tld
Basic CMS tags, paging, CCL related tags
<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
Board button related tags, button display control according to permissions
<cmsBtn:list admin="true" cssClass="btn btn-default">List</cmsBtn:list>
cms-button2.tld
Admin general button related tags, button display control according to permissions
<cmsBtn2:btn btnTy="save" path="${curPath}" mngrSession="${mngrSession }" >Save</cmsBtn2:btn>
cms-function.tld
Utility functions, string processing, date processing, etc.
${cmsFn:convertDate(item.value, 'yyyy.MM.dd') }
double-submit.tld
Duplicate submission prevention tag, session-based token management, CSRF prevention, multi-form support
<button type="submit" class="btn btn-primary hidden-xs">Apply Account</button>
<double-submit:preventer/>
4.11 Admin Page Main Function-Related Sources
The admin page of HONGIKINGAN CMS provides various functions, and it is important to understand the source code related to each function. This section explains the source code structure related to the main functions of the admin page.
4.11.1 Login and Authentication Related Sources
The source code related to admin login and authentication is as follows.
Main Classes
| Category | Class Name | Description |
|---|---|---|
| Controller | humanframe.backoffice.controller.login.AdminLoginController |
Login controller |
| Utility | humanframe.backoffice.util.LoginManager |
Login management utility |
| Interceptor | humanframe.backoffice.interceptor.CMSAdminInterceptor |
Admin interceptor |
| Session | humanframe.backoffice.session.MngrSession |
Admin session |
Main JSP Files
/WEB-INF/jsp/admin/login/login.jsp: Login page/WEB-INF/jsp/admin/login/mngrReqForm.jsp: Admin account application page
Authentication Processing Flow
Login request β AdminLoginController β LoginManager β Authentication processing β MngrSession creation β Main page navigation
4.11.2 Menu Management Related Sources
The source code related to admin menu management functionality is as follows.
Main Classes
| Category | Class Name |
|---|---|
| Controller | humanframe.backoffice.controller.mng.AdminMngMenuController |
| Service | humanframe.backoffice.service.impl.MngMenuServiceImpl |
| DAO | humanframe.backoffice.dao.MngMenuDAO |
| VO | humanframe.backoffice.vo.MngMenuVO |
Main Files
- JSP:
/WEB-INF/jsp/admin/site/menu/form.jsp(Menu registration/modification form) - JSP:
/WEB-INF/jsp/admin/site/menu/popup(Menu-related popup directory) - SQL Mapper:
human-mng-menu.xml
4.11.3 Board Management Related Sources
The source code related to board management functionality is as follows.
Main Controllers
| Controller | Description |
|---|---|
AdminBbsController |
Board management |
AdminBbsSettingController |
Board settings |
AdminBbsType1Controller |
General board |
AdminBbsType2Controller |
Reply board |
AdminBbsType3Controller |
Image board |
AdminBbsType4Controller |
Video board |
AdminBbsType5Controller |
Q&A board |
AdminBbsType6Controller |
FAQ board |
AdminBbsType7Controller |
Schedule board |
AdminBbsType8Controller |
Link board |
Main Services and DAOs
- Service:
BbsSettingServiceImpl,BbsTypeServiceImpl - DAO:
BbsSettingDAO,BbsTypeDAO - VO:
BbsSettingVO,BbsTypeVO,BbsType1VO
Main Files
- JSP:
/WEB-INF/jsp/admin/bbs/list.jsp(Board list) - JSP:
/WEB-INF/jsp/admin/bbs/setting_form.jsp(Board registration/modification form) - JSP:
/WEB-INF/jsp/admin/bbs/type1/list.jsp(General board list) - SQL Mapper:
human-bbs-st.xml,human-bbs-type.xml,human-bbs-type1.xml
4.11.4 Member Management Related Sources
Main Classes
- Controller:
humanframe.backoffice.controller.mber.AdminMberController - Service:
humanframe.backoffice.service.impl.MberServiceImpl - DAO:
humanframe.backoffice.dao.MberDAO - VO:
humanframe.backoffice.vo.MberVO
Main Files
- JSP:
/WEB-INF/jsp/admin/mber/list.jsp,form.jsp,view.jsp - SQL Mapper:
human-mber.xml
4.11.5 Content Management Related Sources
Main Classes
- Controller:
humanframe.backoffice.controller.cntnts.AdminCntntsController - Service:
humanframe.backoffice.service.impl.CntntsServiceImpl - DAO:
humanframe.backoffice.dao.CntntsDAO - VO:
humanframe.backoffice.vo.CntntsVO
Main Files
- JSP:
/WEB-INF/jsp/admin/cntnts/list.jsp,form.jsp,view.jsp - SQL Mapper:
human-cntnts.xml,human-cntnts-hist.xml
4.11.6 Banner Management Related Sources
Main Classes
- Controller:
humanframe.backoffice.controller.banner.AdminBannerController - Service:
humanframe.backoffice.service.impl.BannerServiceImpl - DAO:
humanframe.backoffice.dao.BannerDAO - VO:
humanframe.backoffice.vo.BannerVO
Main Files
- JSP:
/WEB-INF/jsp/admin/banner/list.jsp,form.jsp,view.jsp - SQL Mapper:
human-banner.xml
4.11.7 Popup Management Related Sources
Main Classes
- Controller:
humanframe.backoffice.controller.popup.AdminPopupController - Service:
humanframe.backoffice.service.impl.PopupServiceImpl - DAO:
humanframe.backoffice.dao.PopupDAO - VO:
humanframe.backoffice.vo.PopupVO
Main Files
- JSP:
/WEB-INF/jsp/admin/popup/list.jsp,form.jsp,view.jsp - SQL Mapper:
human-popup.xml
4.11.8 Menu Statistics Management Related Sources
Main Classes
- Controller:
humanframe.backoffice.controller.stats.AdminStatsMenuController - Service:
humanframe.backoffice.service.impl.StatsMenuServiceImpl - DAO:
humanframe.backoffice.dao.StatsMenuDAO - VO:
humanframe.backoffice.vo.StatsMenuVO - Scheduler:
humanframe.backoffice.scheduler.statsMenuSchedulerBatch
Main Files
- JSP:
/WEB-INF/jsp/admin/stats/menu/list.jsp,excel.jsp - SQL Mapper:
human-stats_menu.xml
4.11.9 System Management Related Sources
The source code related to system management functionality is as follows.
Main Controllers
| Controller | Description |
|---|---|
AdminCodeController |
Code management |
AdminMngrController |
Admin management |
AdminMngAuthorController |
Permission management |
AdminMngMenuController |
System menu management |
Main Services
CodeServiceImpl: Code management serviceMngrServiceImpl: Admin management serviceMngAuthorServiceImpl: Permission management serviceMngMenuServiceImpl: System menu management service
Main Files
- JSP:
/WEB-INF/jsp/admin/mng/code/form.jsp(Code management) - JSP:
/WEB-INF/jsp/admin/mng/mngr/list.jsp(Admin list) - JSP:
/WEB-INF/jsp/admin/mng/author/list.jsp(Permission list) - JSP:
/WEB-INF/jsp/admin/mng/menu/form.jsp(System menu list) - SQL Mapper:
human-code.xml,human-mngr.xml,human-mng-author.xml,human-mng-menu.xml