공통컴포넌트 커스터마이징

사용자 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)

	<!-- IP 정보 기록 -->
	<bean id="IpObtainInterceptor" class="egovframework.com.cmm.interceptor.IpObtainInterceptor" />
 
	<bean id="selectAnnotaionMapper" class="egovframework.rte.ptl.mvc.handler.SimpleUrlAnnotationHandlerMapping" p:order="1">
		<property name="interceptors">
			<list>
				<ref local="IpObtainInterceptor" />
			</list>
		</property>
		<property name="urls">
			<set>
				<value>/**/*.do</value>
			</set>
		</property>
	</bean>

파일삭제 관련

공통컴포넌트에서 파일 삭제시 실제 물리적인 파일은 삭제되지 않으며,

또한 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<FileVO> 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();
		}
    }
 
egovframework/com/v2/init_customizing.txt · 마지막 수정: 2023/12/21 05:21 (외부 편집기)
 
이 위키의 내용은 다음의 라이센스에 따릅니다 :CC Attribution-Noncommercial-Share Alike 3.0 Unported
전자정부 표준프레임워크 라이센스(바로가기)

전자정부 표준프레임워크 활용의 안정성 보장을 위해 위험성을 지속적으로 모니터링하고 있으나, 오픈소스의 특성상 문제가 발생할 수 있습니다.
전자정부 표준프레임워크는 Apache 2.0 라이선스를 따르고 있는 오픈소스 프로그램입니다. Apache 2.0 라이선스에 따라 표준프레임워크를 활용하여 발생된 업무중단, 컴퓨터 고장 또는 오동작으로 인한 손해 등에 대해서 책임이 없습니다.
Recent changes RSS feed CC Attribution-Noncommercial-Share Alike 3.0 Unported Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki