Programing_Java

[Frontend] JSP에서 데이터 불일치 처리: c:if와 c:choose의 차이점과 적절한 사용법 🚀 본문

Frontend_

[Frontend] JSP에서 데이터 불일치 처리: c:if와 c:choose의 차이점과 적절한 사용법 🚀

Joyfullyever 2025. 4. 6. 00:39

☑️ DB 작업을 하면서 자주 마주치는 문제 중 하나

• 조인을 사용했을 때 특정 조건에 따라 결과가 없는 경우, 데이터가 빈 값으로 반환되는 상황

• View 측면에서 데이터를 적절히 처리하지 않으면 오류 발생

• JSP에서 이를 처리하는 데에는 c:if 태그와 c:choose 태그 두 가지 방법이 주로 사용

 

1️⃣ c:if 태그

• c:if 태그는 조건이 참인 경우에만 내용을 포함시키는 간단한 조건 처리 방법

• 단일 조건에 초점을 맞추기 때문에 복잡한 조건이나 여러 상황을 다루기에는 한계

• 모델에서 조인을 사용해 값을 가져올 때 해당 데이터가 없으면 null이나 빈 값이 반환되는 경우

→ c:if 태그로 이를 처리하려 하면 예상치 못한 오류 발생 가능

→ c:if는 주로 존재하는 데이터의 조건을 검사하는 데 사용

→ 데이터 자체의 존재 여부를 확인하는 로직을 추가하지 않으면 NullPointerException 같은 예외를 발생시킬 위험있음

 

2️⃣ c:choose 태그

• c:choose 태그는 여러 조건을 효과적으로 처리할 수 있는 태그

• c:choose 내부에는 c:when과 c:otherwise를 사용하여 다양한 경우를 세분화하여 처리

• 데이터가 존재할 때와 존재하지 않을 때의 동작을 명확히 구분

→ 조인 결과가 빈 값인 경우 c:when을 통해 해당 조건을 검사,데이터가 없을 경우 c:otherwise에서 대체 텍스트나 다른 처리

• 서버로부터 전달받은 데이터의 무결성과 상황에 따른 유연한 대응

→ 사용자 경험을 개선하는 데 크게 기여

• 예외 상황을 명확히 핸들링 가능

→ 개발 중 발생할 수 있는 예외 처리를 효과적으로 감소시킴

 

3️⃣ 적용 예

<c:choose>
    <c:when test="${not empty userInfo}">
        사용자 이름: ${userInfo.name}
    </c:when>
    <c:otherwise>
        사용자 정보가 존재하지 않습니다.
    </c:otherwise>
</c:choose>

 

 

• userInfo 객체가 비어 있지 않을 경우 사용자의 이름을 표시

• 반대의 경우 "사용자 정보가 존재하지 않습니다."라는 메시지를 출력

→ c:choose를 사용하면 데이터의 존재 여부에 따른 다양한 시나리오를 한 곳에서 처리

 

✅서블릿과 JSP를 사용하여 웹 애플리케이션을 개발 시, 데이터 처리는 매우 중요한 부분

• 데이터가 없을 때의 처리를 어떻게 하느냐가 애플리케이션의 견고성을 좌우

• c:if와 c:choose는 이러한 문제를 해결할 수 있는 유용한 도구

→ 하지만, 각각의 사용법을 잘 이해하고 상황에 맞게 적용하는 것이 중요