전자정부 프레임워크와 Spring MVC의 핵심 원리부터 실전 계층형 게시판 구현까지 학습한 내용을 정리한 프로젝트입니다.
- Framework: eGovFramework 3.10.0, Spring Framework 5.3.6
- Database: PostgreSQL (v42.3.8 Driver)
- ORM: MyBatis 3.5.6
- WAS: Apache Tomcat
- Build: Maven
이 프로젝트는 다음의 단계별 학습 내용을 포함하고 있습니다.
- 프로젝트 구조:
src/main/java,src/main/resources,src/main/webapp등 표준 디렉토리 구조 이해. - Spring MVC 동작 원리: DispatcherServlet, HandlerMapping, Controller, ViewResolver의 흐름.
- 데이터 전달:
- Controller -> JSP:
Model객체 사용. - JSP -> Controller: Command Object (VO) 사용.
- Controller -> JSP:
- PostgreSQL 연동:
context-datasource.xml,context-mapper.xml설정. - Layered Architecture: Controller -> Service -> DAO -> Mapper -> DB 흐름 구현.
- 로그인/로그아웃: HttpSession을 이용한 로그인 상태 관리.
- 저장 프로시저: MyBatis에서 PostgreSQL 함수 호출 방법.
- Logging (Log4j2):
log4j2.xml설정 및slf4j를 이용한 로그 레벨 관리 (DEBUG, INFO, ERROR). - AOP (관점 지향 프로그래밍):
- 핵심 로직과 공통 기능(로그, 트랜잭션 등) 분리.
@Aspect어노테이션을 이용한 AOP 구현.
- DB 설계:
GROUP_NUM,GROUP_ORDER,GROUP_TAB컬럼을 이용한 계층 구조 설계. - 답글 로직:
- 부모 글의 정보를 바탕으로 자리 확보(
UPDATE) 후 삽입(INSERT).
- 부모 글의 정보를 바탕으로 자리 확보(
- 수정 및 삭제: 작성자 본인 확인 및 논리적 삭제(
UPDATE) 구현. - 페이징:
LIMIT,OFFSET을 이용한 효율적인 페이징 처리.
- 파일 업로드:
MultipartResolver및 UUID를 이용한 파일 저장. - 트랜잭션:
@Transactional및 AOP 설정을 통한 데이터 무결성 보장. - Ajax:
- JSON:
@ResponseBody와 Jackson 라이브러리 활용. - XML: JDOM을 이용한 XML 응답 생성 및 파싱.
- JSON:
- 비밀번호 암호화: BCrypt를 이용한 안전한 비밀번호 저장 및 검증.
- 세션 보안:
- 세션 고정 공격(Session Fixation) 방어.
- 인터셉터를 통한 로그인 체크 자동화.
- XSS 방어:
<c:out>태그 및 Lucy XSS Filter 적용. - SQL Injection 방어: MyBatis
#{}vs${}차이 및 안전한 쿼리 작성법. - 파일 업로드 보안:
- 화이트리스트 기반 확장자 검증.
- Path Traversal 공격 방어.
- 웹쉘 업로드 차단.
- CSRF 방어: Spring Security CSRF 토큰 적용.
- 실무 체크리스트: 배포 전 필수 확인 항목.
- JUnit 5: 단위 테스트 프레임워크 기초 및 어노테이션(
@Test,@BeforeEach). - Mockito: Service 계층 테스트를 위한 Mock 객체 활용 (DAO 가짜 객체 주입).
- MockMvc: Controller 테스트를 위한 가짜 브라우저 요청 및 검증.
- TDD: 테스트 주도 개발 방법론 소개.
- IntelliJ Debugger: 브레이크포인트, Step Over/Into, 변수 값 변경(Evaluate Expression) 활용법.
- 로그 추적: Stack Trace 분석(Caused by 찾기) 및 로그 레벨 활용.
- 자주 겪는 에러: 404, 500, BeanCreationException 등 대표 에러 원인 및 해결책.