1. Spring MVC 컨트롤러 메서드 반환 타입
컨트롤러에서 요청을 처리한 후 응답을 보내는 방식에 따른 세 가지 주요 반환 타입 정리
- void: 요청 URL을 기반으로 JSP 파일을 자동 매핑함 (예: /board/list 요청 시 list.jsp 호출)
- String: 리턴값으로 논리적인 뷰 이름을 지정하여 ViewResolver가 해당 경로의 JSP를 호출하는 방식
- redirect: 특정 URL을 다시 호출하도록 브라우저에 명령함 (JSP 파일로 바로 가는 것이 아닌 URL 재요청)
2. Model 데이터 전달 방식 비교 (PRG 패턴 핵심)
데이터를 뷰로 넘길 때 사용 목적과 보안에 따라 addAttribute와 addFlashAttribute를 구분하여 사용함
| 구분 | addAttribute | addFlashAttribute |
| 데이터 위치 | URL 파라미터 (Query String) | 세션(Session)에 임시 저장 |
| URL 노출 | 노출됨 (?name=serena) | 노출되지 않음 |
| 유지 기간 | 페이지 새로고침 시에도 유지 | 리다이렉트 후 1회 사용 시 즉시 소멸 |
| 주요 용도 | 일반적인 데이터 검색 및 조회 | PRG 패턴 (등록/수정 후 메시지 전달) |
💡 PRG(Post-Redirect-Get) 패턴이란?
사용자가 폼 데이터를 제출(Post)한 후, 결과 화면으로 리다이렉트(Redirect)하여 최종적으로 조회(Get)하게 만드는 패턴임. 새로고침 시 발생하는 데이터 중복 등록 사고를 방지하는 데 필수적인 전략임
3. MyBatis 프레임워크 연동 및 설정
SQL 쿼리와 자바 코드를 분리하여 생산성을 높이는 SQL 매퍼(Mapper) 라이브러리 설정 과정
pom.xml 주요 의존성 추가
- MyBatis / MyBatis Spring: 핵심 매퍼 라이브러리
- Spring JDBC / TX: 데이터베이스 연결 및 트랜잭션 관리 지원
- HikariCP: 고성능 커넥션 풀링 시스템
SQL 매핑 방식 (두 가지)
- 애노테이션 방식: 인터페이스 메서드 위에 @Select, @Insert, @Update, @Delete를 직접 작성 (간단한 쿼리에 유리)
- XML 매퍼 방식: 별도의 .xml 파일에 SQL을 작성하고 인터페이스 메서드 ID와 매칭 (복잡한 쿼리 및 동적 SQL 관리에 유리)
4. 실습 환경 설정 및 메모
- Tomcat 경로 최적화: 서버 설정의 Web Modules에서 컨텍스트 패스(Path)를 /로 수정하여 URL 간소화
- 자동 매핑 조건: BoardVO의 변수명과 JSP 폼 요소의 name 속성값이 일치해야 데이터가 자동으로 바인딩됨
- MyBatis 연동 확인: TimeMapper 인터페이스를 통해 DB 시간 조회 테스트 및 JUnit을 활용한 단위 테스트 수행
✏️ 오늘의 핵심 요약
- 컨트롤러의 void 타입은 URL과 JSP 파일명을 일치시킬 때 사용함
- addFlashAttribute는 리다이렉트 시 보안성과 깔끔한 URL을 위해 사용하며 일회성임
- MyBatis는 애노테이션과 XML 방식 중 프로젝트 규모에 맞는 적절한 방식을 선택함
- 성공적인 마이그레이션을 위해 Maven의 pom.xml 의존성 버전 관리와 DB 계정 권한 확인이 필수적임
'⏳ Time Log > 1. One Day (Daily · TIL)' 카테고리의 다른 글
| Day 35 (12/5) – Apache Maven 표준 디렉터리 구조 (0) | 2026.02.20 |
|---|---|
| Day 34 (12/4) – Spring Legacy: 웹 애플리케이션 개발 (Part 2) (0) | 2026.02.20 |
| Day 32 (12/2) – Spring Legacy 프로젝트 환경 구축 (Day 1) (0) | 2026.02.20 |
| Day 31 (12/1) - Spring Boot 전환 및 React Router 동적 라우팅 실습 (0) | 2026.02.20 |
| Day 30 (11/28) - [React] Todo 앱 만들기 핵심 요약 및 트러블슈팅 (0) | 2026.02.20 |