====== 웹로그조회 ======
===== 개요 =====
**웹로그조회**는 사용자의 웹페이지 접근시 발생하는 각종 로그를 검색, 조회하는 기능을 제공한다.
===== 설명 =====
* **웹로그조회**는 웹로그의 **등록, 조회, 목록, 삭제, 요약**의 기능을 수반한다.
① 웹로그등록 : 웹로그정보를 등록한다. - Interceptor 기능을 이용
② 웹로그조회 : 웹로그정보의 상세내용을 조회한다.
③ 웹로그목록 : 웹로그정보의 목록을 검색, 조회한다.
④ 웹로그삭제 : 웹로그정보를 삭제한다. - 실행환경의 Scheduling 기능을 이용
⑤ 웹로그요약 : 웹로그정보를 요약하여 Summary를 생성한다. - 실행환경의 Scheduling 기능을 이용
===== 관련 리소스 =====
=== 클래스 ===
^유형^대상소스명^비고^
|Controller|egovframework.com.sym.log.web.EgovLogManageController.java|웹로그 관리를 위한 컨트롤러 클래스|
|Service|egovframework.com.sym.log.service.EgovLogManageService.java|웹로그 관리를 위한 서비스 인터페이스|
|ServiceImpl|egovframework.com.sym.log.service.impl.EgovLogManageServiceImpl.java|웹로그 관리를 위한 서비스 구현 클래스|
|DAO|egovframework.com.sym.log.service.impl.LogManageDAO.java|웹로그 관리를 위한 데이터처리 클래스|
|VO|egovframework.com.sym.log.service.WebLogVO.java|웹로그 관리를 위한 VO 클래스|
|Interceptor|egovframework.com.sym.log.web.EgovWebLogInterceptor.java|웹로그 등록을 위한 Interceptor 클래스|
|Scheduler|egovframework.com.sym.log.service.EgovLogManageScheduling.java|웹로그 삭제, 요약을 위한 Scheduling 클래스|
|JSP|/WEB-INF/jsp/egovframework/cmm/sym/log/EgovWebLogList.jsp|웹로그 목록을 위한 jsp페이지|
|JSP|/WEB-INF/jsp/egovframework/cmm/sym/log/EgovWebLogInqire.jsp|웹로그 조회를 위한 jsp페이지|
=== 클래스 다이어그램 ===
{{:egovframework:com:sym:log:cdd_웹로그관리.gif|}}
=== 테이블 ===
^테이블명^테이블명(영문)^비고^
|웹로그|COMTNWEBLOG|웹로그 정보를 관리|
|웹로그요약|COMTSWEBLOGSUMMARY|웹로그 요약정보를 관리|
=== ID Generation ===
== context-idgen.xml ==
* ID Generation Service를 활용하기 위해서 Sequence 저장테이블인 COMTECOPSEQ에 **WEBLOG_ID** 항목을 추가한다.
INSERT INTO COMTECOPSEQ VALUES('WEBLOG_ID','0');
=== Interceptor ===
== egov-com-interceptor.xml ==
웹로그 등록 기능구현을 위하여 [[egovframework:rte:ptl:handlermapping|Interceptor]]를 설정한다.
* 웹로그 등록 기능구현을 위하여 EgovWebLogInterceptor 클래스를 생성한다.
package egovframework.com.sym.log.web;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import egovframework.com.sec.ram.security.userdetails.util.EgovUserDetailsHelper;
import egovframework.com.sym.log.service.EgovLogManageService;
import egovframework.com.sym.log.service.WebLog;
import egovframework.com.uat.uia.service.LoginVO;
public class EgovWebLogInterceptor extends HandlerInterceptorAdapter {
@Resource(name="EgovLogManageService")
private EgovLogManageService logManageService;
/**
* 웹 로그정보를 생성한다.
*
* @param HttpServletRequest request, HttpServletResponse response, Object handler
* @return
* @throws Exception
*/
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler, ModelAndView modeAndView) throws Exception {
WebLog webLog = new WebLog();
String reqURL = request.getRequestURI();
String uniqId = "";
/* Authenticated */
Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
if(isAuthenticated.booleanValue()) {
LoginVO user = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
uniqId = user.getUniqId();
}
webLog.setUrl(reqURL);
webLog.setRqesterId(uniqId);
webLog.setRqesterIp(request.getRemoteAddr());
logManageService.logInsertWebLog(webLog);
}
}
=== Scheduling ===
== context-scheduling.xml ==
웹로그 삭제, 요약 기능구현을 위하여 [[egovframework:rte:fdl:scheduling|Scheduling]]을 설정한다.
* 웹로그 삭제, 요약 기능구현을 위하여 EgovLogManageScheduling 클래스를 생성한다.
@Service("egovLogManageScheduling")
public class EgovLogManageScheduling {
@Resource(name="EgovLogManageService")
private EgovLogManageService logManageService;
/**
* 웹 로그정보를 요약한다.
* 전날의 로그를 요약하여 입력하고, 일주일전의 로그를 삭제한다.
*
* @param
* @return
* @throws Exception
*/
public void webLogSummary() throws Exception {
logManageService.logInsertWebLogSummary();
}
===== 관련화면 및 수행메뉴얼 =====
=== 웹로그 목록조회 ===
^Action^URL^Controller method^QueryID^
|목록조회|/cmm/sym/log/SelectWebLogList.do|selectWebLogInf|"LogManageDAO.selectWebLogInf"|
| | | |"LogManageDAO.selectWebLogInfCnt"|
웹로그 목록은 페이지 당 10건씩 조회되며 페이징은 10페이지씩 이루어진다.
검색조건은 발생일자와 URL에 대해서 수행된다.
{{:egovframework:com::sym:log:EgovWebLogList.jpg|}}
웹로그 상세조회 기능을 수행하기 위해서는 **상세보기** 버튼을 클릭한다.
----
=== 웹로그 상세조회 ===
^Action^URL^Controller method^QueryID^
|상세조회|/cmm/sym/log/InqireWebLog.do|selectWebLog|"LogManageDAO.selectWebLog"|
웹로그 상세조회는 팝업창으로 구성되며, **닫기** 버튼을 클릭하면 창을 닫는다.
{{:egovframework:com::sym:log:EgovWebLogInqire.jpg|}}
----
===== 참고자료 =====
* 실행환경 참조 : [[egovframework:rte:ptl:handlermapping|Interceptor]]
* 실행환경 참조 : [[egovframework:rte:fdl:scheduling|Scheduling]]
* 실행환경 참조 : [[egovframework:rte:fdl:id_generation|ID Generation]]