π™±πšŠπšŒπš”πšŽπš—πš/π™Ήπš‚π™Ώ

[JSP] <c:url> 경둜 였λ₯˜ λ°©μ§€ : μ˜¬λ°”λ₯Έ URL μƒμ„±ν•˜κΈ° 및 404μ—λŸ¬ ν•΄κ²°

ν•΄λ²„λ‹ˆ 2025. 3. 15. 18:49
λ°˜μ‘ν˜•

 

 

문제

 

<li>
    <input class="btn-cancel" type="button"
           onClick="window.location = '/auth/login.do'"
           value="<spring:message code='auth.register.cancel'/>" />
</li>

 

νšŒμ›κ°€μž… μ·¨μ†Œ λ²„νŠΌμ„ ν΄λ¦­ν•˜λ©΄ 둜그인 νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•˜λ„λ‘ κ΅¬ν˜„ν–ˆμ§€λ§Œ, 404였λ₯˜κ°€ λ°œμƒν–ˆλ‹€

window.location = '/auth/login.do' 둜, μ ˆλŒ€ 경둜λ₯Ό μ‚¬μš©ν•˜κ³  μžˆμ—ˆλ‹€.

μ‹€μ œ μ›ν•˜λŠ” κ²½λ‘œλŠ” 'http://location:8080/MyApp/auth/login.do' μ˜€μ§€λ§Œ, 'http://localhost:8080/auth/login.do'둜 잘λͺ» 맀핑이 되고 μžˆμ—ˆλ‹€.

 

 

 

ν•΄κ²° 방법 : <c:url> μ‚¬μš©ν•˜κΈ°

JSP의 <c:url> νƒœκ·Έλ₯Ό μ‚¬μš©ν•˜λ©΄ μžλ™μœΌλ‘œ μ»¨ν…μŠ€νŠΈ 경둜(Context Path)λ₯Ό ν¬ν•¨ν•˜μ—¬ μ˜¬λ°”λ₯Έ 경둜둜 이동할 수 μžˆλ‹€.

 

<li>
    <input class="btn-cancel" type="button"
           onClick="window.location = '<c:url value='/auth/login.do' />'"
           value="<spring:message code='auth.register.cancel'/>" />
</li>

 

μœ„ μ½”λ“œλŠ” 싀행될 λ•Œ window.location = '/MyApp/auth/login.do'둜 λ³€ν™˜λœλ‹€.

 

 

<c:url> νƒœκ·Έλž€?

<c:url>은 JSPμ—μ„œ 동적인 URL을 μƒμ„±ν•˜λŠ” νƒœκ·Έλ‘œ, ν˜„μž¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ»¨ν…μŠ€νŠΈ 경둜(Context Path)λ₯Ό μžλ™μœΌλ‘œ 포함해쀀닀.

이둜 인해 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 배포 μœ„μΉ˜κ°€ λ°”λ€Œλ”λΌλ„ URL이 μžλ™μœΌλ‘œ μ‘°μ •λ˜μ–΄, 잘λͺ»λœ 경둜둜 μ΄λ™ν•˜λŠ” 문제λ₯Ό λ°©μ§€ν•  수 μžˆλ‹€.

 

 

 

정리

μ„œλ²„μ˜ 메인 URL이 localhost:8080/MyApp/이기 λ•Œλ¬Έμ— /auth/login.do만 썼을 λ•Œ, /MyApp/ 뢀뢄이 λΉ μ Έμ„œ 404 였λ₯˜κ°€ λ°œμƒν•œ 것이닀.

<c:url>을 μ‚¬μš©ν•˜λ©΄ μžλ™μœΌλ‘œ /MyApp/을 λΆ™μ—¬μ€˜μ„œ μ •μƒμ μœΌλ‘œ κ²½λ‘œκ°€ 이동할 수 μžˆλ‹€.

 

λ°˜μ‘ν˜•