====== 공통컴포넌트 커스터마이징 ====== ===== 사용자 IP 사용 관련 ===== 공통컴포넌트 중 일부는 사용자 IP를 사용합니다. (ex: 접속로그관리, 웹로그관리 등) 일부는 Presentation Layer를 통해 IP를 직접 얻을 수 있으나 일부는 Presentation Layer를 사용할 수 없는 경우 사용자 로그인 정보(SecurityContext)를 통해 IP를 활용합니다. 이때 사용자 IP에 대한 정보를 취득하기 위해서는 다음과 같은 Interceptor 등록이 필요합니다. package egovframework.com.cmm.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import egovframework.com.cmm.LoginVO; import egovframework.com.cmm.util.EgovUserDetailsHelper; public class IpObtainInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String clientIp = request.getRemoteAddr(); LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); if (loginVO != null) { loginVO.setIp(clientIp); } return true; } } 설정은 interceptor 등록을 위해 다음과 같인 설정이 추가됩니다. (ex: egov-com-servlet.xml) /**/*.do ===== 파일삭제 관련 ===== 공통컴포넌트에서 파일 삭제시 실제 물리적인 파일은 삭제되지 않으며, 또한 DB에서 COMTNFILE 테이블에 USE_YN 컬럼을 'N'으로 변경하고 있고, COMTNFILEDETAIL 테이블에 컬럼은 삭제되지 않는다. 실제 물리적인 파일 삭제를 하기 위해서는 EgovFileMngServiceImpl.java 파일을 수정하여야 한다. 1) 파일 하나 삭제시(예시) /** * 하나의 파일을 삭제한다. * * @see egovframework.com.cmm.service.EgovFileMngService#deleteFileInf(egovframework.com.cmm.service.FileVO) */ public void deleteFileInf(FileVO fvo) throws Exception { FileVO file = fileMngDAO.selectFileInf(fvo); fileMngDAO.deleteFileInf(fvo); // 실제 파일 삭제 File target = new File(file.getFileStreCours() + file.getStreFileNm()); target.delete(); } 2) 게시물 삭제시(예시) /** * 전체 파일을 삭제한다. * * @see egovframework.com.cmm.service.EgovFileMngService#deleteAllFileInf(egovframework.com.cmm.service.FileVO) */ public void deleteAllFileInf(FileVO fvo) throws Exception { List fvoList = fileMngDAO.selectFileInfs(fvo); fileMngDAO.deleteAllFileInf(fvo); // 실제 파일 삭제 Iterator iter = fvoList.iterator(); FileVO vo; while (iter.hasNext()) { vo = (FileVO)iter.next(); FileVO file = fileMngDAO.selectFileInf(vo); File target = new File(file.getFileStreCours() + file.getStreFileNm()); target.delete(); } }