λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

λͺ©λ‘μ΄ μ—†μŠ΅λ‹ˆλ‹€.

[JSP] μ—λŸ¬νŽ˜μ΄μ§€

πŸ—£ Language/JSP
    λ°˜μ‘ν˜•



    μ—λŸ¬νŽ˜μ΄μ§€(Error page)


    μ˜€λŠ˜μ€ JSPμ—μ„œ μ—λŸ¬νŽ˜μ΄μ§€μ— λŒ€ν•΄ μ •λ¦¬ν•˜λ €κ³  ν•œλ‹€.

    일단 μ—λŸ¬νŽ˜μ΄μ§€λ₯Ό μ™œ μ„€μ •ν• κΉŒ? μ—λŸ¬νŽ˜μ΄μ§€λ₯Ό μ„€μ •ν•˜μ§€ μ•Šκ³  JSP νŽ˜μ΄μ§€μ—μ„œ μ˜ˆμ™Έκ°€ λ°œμƒν–ˆμ„ λ•Œμ˜ 화면을 μ›Ή 개발자라면 λ‹€λ“€ ν•œ λ²ˆμ―€μ€ κ²½ν—˜ν–ˆμ„ 것이닀. 이것을 μ‚¬μš©μžκ°€ λ³Έλ‹€λ©΄? λ‹Ήμ—°νžˆ κ·Έ μ›Ή νŽ˜μ΄μ§€λ₯Ό λ‹€μ‹œ λ“€μ–΄κ°ˆ ν™•λ₯ μ€ μ €μ‘°ν•˜λ‹€. μ‚¬μš©μžκ΄€μ μ—μ„œλŠ” μ•ˆλ“€μ–΄κ°€κ³  λ§μ§€λ§Œ 웹에 λŒ€ν•œ 지식이 μžˆλŠ” λ‹€λ₯Έ 개발자의 κ΄€μ μ—μ„œ 보면 ν˜Ήμ€ ν•΄μ»€μ˜ κ΄€μ μ—μ„œ 보면 μ—λŸ¬κ°€ 났을 λ•Œ μ–΄λŠ λΌμΈμ—μ„œ μ˜ˆμ™Έκ°€ λ°œμƒν–ˆμœΌλ©° μ–΄λ–€ μ˜ˆμ™Έκ°€ λ°œμƒν–ˆλŠ”μ§€μ— λŒ€ν•œ 정보듀이 λ‹€ λ‚˜μ˜€κΈ° λ•Œλ¬Έμ— 해킹에 λŒ€ν•œ μœ„ν—˜λ„ 크닀.


    κ·Έλ ‡κΈ° λ•Œλ¬Έμ— μ˜ˆμ™Έμ— λŒ€ν•œ μ—λŸ¬νŽ˜μ΄μ§€λ₯Ό μ„€μ •ν•΄μ€˜μ•Ό ν•œλ‹€. κ·Έλ ‡λ‹€λ©΄ μ–΄λ–»κ²Œ μ„€μ •ν•˜λŠ”μ§€ 보자.



    ν˜•νƒœ


    <%@ page errorPage="νŽ˜μ΄μ§€URL" %>


    jspνŽ˜μ΄μ§€μ˜ 상단에 μ €λ ‡κ²Œ 지정해주면 ν•΄λ‹Ή νŽ˜μ΄μ§€μ—μ„œ 였λ₯˜κ°€ 났을 경우 μ§€μ •ν•œ URL의 νŽ˜μ΄μ§€λ‘œ λ„˜μ–΄κ°„λ‹€.


    그리고 λ„˜μ–΄κ°„ νŽ˜μ΄μ§€λŠ” μ—λŸ¬ νŽ˜μ΄μ§€λ₯Ό λͺ…μ‹œν•˜κΈ° μœ„ν•΄μ„œ λ‹€μŒκ³Ό 같이 상단에 지정해쀀닀.

    <%@ page isErrorPage = "true" %>


    μ΄λ ‡κ²Œ ν•˜κ³  보여쀄 νŽ˜μ΄μ§€λ₯Ό λ§Œλ“€μ–΄μ£Όλ©΄ λœλ‹€.



    JSPκ°€ HTTP ν”„λ‘œν† μ½œμ„ ν†΅ν•΄μ„œ μš”μ²­κ³Ό 응닡을 μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈκ°€ μ£Όκ³  λ°›λŠ”λ° 이 λ•Œ μ£Όκ³ λ°›μ•˜μ„ λ•Œ 응닡 μƒνƒœμ— 따라 ν•΄λ‹Ήν•˜λŠ” μ½”λ“œκ°€ λ‹€ μ •ν•΄μ Έ μžˆλ‹€. λŒ€ν‘œμ μœΌλ‘œ 주둜 많이 λ‚˜μ˜€λŠ” κ²ƒλ“€λ§Œ 보면 λ‹€μŒκ³Ό κ°™λ‹€.

    200 : μš”μ²­ μ •μƒμ μœΌλ‘œ 처리

    307 : μž„μ‹œλ‘œ νŽ˜μ΄μ§€ λ¦¬λ‹€μ΄λ ‰νŠΈ

    400 : μš”μ²­μ΄ 잘λͺ»λ¨

    401 : μžμ›μ— μ ‘κ·Ό ν—ˆμš© μ•ˆλ¨

    403 : κΆŒν•œμ΄ ν—ˆμš©λ˜μ§€ μ•ŠμŒ (μ„œλ²„μ—μ„œ κ±°λΆ€ . μ‚¬μš©μžκ°€ μ„œλ²„μ˜ μžμ›μ— μ ‘κ·Όν•  κΆŒν•œμ΄ μ—†λŠ” 경우)

    404 : μš”μ²­ν•œ μžμ›μ΄ μ‘΄μž¬ν•˜μ§€ μ•ŠμŒ

    500 : μ„œλ²„ λ‚΄λΆ€ μ—λŸ¬ (JSPνŽ˜μ΄μ§€μ—μ„œ 에외가 λ°œμƒν•œ 경우)

    503 : μ„œλ²„κ°€ μΌμ‹œμ μœΌλ‘œ μ„œλΉ„μŠ€ 제곡 λΆˆκ°€ μƒνƒœ (μ„œλ²„κ°€ νŠΈλž˜ν”½μ΄ λͺ°λ €μ„œ λ»—μ—ˆκ±°λ‚˜ μ‹€μ œλ‘œ μ„œλΉ„μŠ€ 점검쀑인 경우)

    이 외에도 λ§Žμ€ μ½”λ“œκ°€ μžˆμ§€λ§Œ ν”νžˆ λ‚˜μ˜€λŠ” μƒνƒœμ½”λ“œκ°€ μ•„λ‹ˆκΈ° λ•Œλ¬Έμ— λ‚˜μ˜¬ λ•Œλ§ˆλ‹€ μ°Ύμ•„λ³΄λŠ”κ²ƒμ΄ 정신건강상 더 μ’‹λ‹€.



    νŽ˜μ΄μ§€ λ§ˆλ‹€ μ—λŸ¬νŽ˜μ΄μ§€λ₯Ό μ§€μ •ν•΄μ£ΌλŠ” 방법도 μžˆμ§€λ§Œ web.xmlνŒŒμΌμ„ ν†΅ν•΄μ„œ 응닡 μƒνƒœ μ½”λ“œμ— 따라 μ—λŸ¬νŽ˜μ΄μ§€λ₯Ό μ§€μ •ν•˜λŠ” 방법이 μžˆλ‹€. 


    <error-page>

    <error-code>404</error-code>

    <location>404μ½”λ“œ μ—λŸ¬νŽ˜μ΄μ§€URL</location>

    </error-page>


    <error-page>

    <error-code>500</error-code>

    <location>500μ½”λ“œ μ—λŸ¬νŽ˜μ΄μ§€URL</location>

    </error-page>


    <error-page>

    <exception-type>java.lang.NullPointerException</exception-type>

    <location>NullPointerException μ—λŸ¬νŽ˜μ΄μ§€URL</location>

    </error-page>



    μ΄λŸ°μ‹μœΌλ‘œ 지정해주면 ν•΄λ‹Ή 응닡 μƒνƒœ μ½”λ“œκ°€ λ°œμƒν•˜λ©΄ ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μ΅μˆ™ν•œ 화면이 λ‚˜μ˜€μ§€ μ•Šκ³  웹에 λŒ€ν•œ 지식이 μ—†λŠ” μ‚¬μš©μžκ°€ μ‹κ²ν•˜μ§€ μ•Šμ„ 화면이 좜λ ₯λœλ‹€.


    κ·Έλ ‡λ‹€λ©΄ μ—λŸ¬ νŽ˜μ΄μ§€λ₯Ό μ§€μ •ν•˜λŠ” 방법이 λ‹€μ–‘ν•œλ° 이 μ€‘μ—μ„œ μ–΄λ–€ 방법이 더 μš°μ„ μˆœμœ„κ°€ μžˆλŠ”μ§€κ°€ κΆκΈˆν•΄μ§„λ‹€.


    μš°μ„ μˆœμœ„λŠ” λ‹€μŒκ³Ό κ°™λ‹€.

    1) page λ””λ ‰ν‹°λΈŒμ˜ errorPage 속성에 μ§€μ •ν•œ μ—λŸ¬νŽ˜μ΄μ§€


    2) λ°œμƒν•œ μ˜ˆμ™Έμ˜ νƒ€μž…μ΄ web.xmlμ—μ„œ <exception-type>κ³Ό 같은 νƒ€μž…μ΄λ©΄ 지정해둔 μ—λŸ¬νŽ˜μ΄μ§€


    3) <error-code>μ—μ„œ μ§€μ •ν•œ μ—λŸ¬μ½”λ“œμ™€ 같은 경우 μ§€μ •ν•œ μ—λŸ¬νŽ˜μ΄μ§€


    4) ν†°μΊ£ ν˜Ήμ€ μ›Ήλ‘œμ§ 같은 μ›Ή μ»¨ν…Œμ΄λ„ˆ(μ‹€ν–‰ν™˜κ²½)듀이 μ œκ³΅ν•˜λŠ” κΈ°λ³Έ μ—λŸ¬ νŽ˜μ΄μ§€




    이상 JSP μ—λŸ¬νŽ˜μ΄μ§€μ— λŒ€ν•΄μ„œ 정리λ₯Ό ν•΄λ΄€λ‹€.

    λ°˜μ‘ν˜•