+) 22. 08. 13. μ 리 μΆκ°!
μΉμ 8. μμΈ μ²λ¦¬μ μ€λ₯ νμ΄μ§ μκ° μλ£!!
μλΈλ¦Ώμ λ€μ λ κ°μ§ λ°©μμΌλ‘ μμΈ μ²λ¦¬λ₯Ό μ§μνλ€.
μλ° μ§μ μ€ν
μλ°μ λ©μΈ λ©μλλ₯Ό μ§μ μ€ννλ κ²½μ° mainμ΄λΌλ μ΄λ¦μ μ€λ λκ° μ€νλλ€.
μ€ν λμ€μ μμΈλ₯Ό μ‘μ§ λͺ»νκ³ μ²μ μ€νν main() λ©μλλ₯Ό λμ΄μ μμΈκ° λμ Έμ§λ©΄ μμΈ μ 보λ₯Ό λ¨κΈ°κ³ ν΄λΉ μ€λ λλ μ’
λ£λλ€.
μΉ μ ν리μΌμ΄μ
μΉ μ ν리μΌμ΄μ
μ μ¬μ©μ μμ²λ³λ‘ λ³λμ μ€λ λκ° ν λΉλκ³ , μλΈλ¦Ώ 컨ν
μ΄λ μμμ μ€νλλ€.
μ ν리μΌμ΄μ
μμ μμΈκ° λ°μνμ λ, try-catchλ‘ μμΈλ₯Ό μ²λ¦¬νλ©΄ μλ¬΄λ° λ¬Έμ κ° μλ€. νμ§λ§ μ ν리μΌμ΄μ
μμ μμΈλ₯Ό μ‘μ§ λͺ»νκ³ , μλΈλ¦Ώ λ°κΉμ§ μμΈκ° μ λ¬λλ©΄ μ΄λ»κ² λμν κΉ?
WAS(μ¬κΈ°κΉμ§ μ ν) β¬ οΈ νν° β¬ οΈ μλΈλ¦Ώ β¬ οΈ μΈν°μ ν° β¬ οΈ μ»¨νΈλ‘€λ¬(μμΈ λ°μ)
κ²°κ΅ ν°μΊ£ κ°μ WASκΉμ§ μμΈκ° μ λ¬λλ€.
μ€λ₯κ° λ°μνμ λ HttpServletResponse
κ° μ 곡νλ sendError
λΌλ λ©μλλ₯Ό μ¬μ©ν΄λ λλ€. μλΈλ¦Ώ 컨ν
μ΄λμκ² μ€λ₯κ° λ°μνλ€λ κ²μ μ λ¬ν μ μλ€.
μ΄ λ©μλλ₯Ό μ¬μ©νλ©΄ HTTP μν μ½λμ μ€λ₯ λ©μμ§λ μΆκ°ν μ μλ€.
@GetMapping("/error-404")
public void error404(HttpServletResponse response) throws IOException {
response.sendError(404, "404 μ€λ₯");
}
sendError νλ¦
WAS(sendError νΈμΆ κΈ°λ‘ νμΈ) β¬ οΈ νν° β¬ οΈ μλΈλ¦Ώ β¬ οΈ μΈν°μ ν° β¬ οΈ μ»¨νΈλ‘€λ¬
(response.sendError())
response.sendError()
λ₯Ό νΈμΆνλ©΄ response λ΄λΆμ μ€λ₯κ° λ°μνλ€λ μνλ₯Ό μ μ₯ν΄λλ€. κ·Έλ¦¬κ³ μλΈλ¦Ώ 컨ν
μ΄λλ κ³ κ°μκ² μλ΅ μ responseμ sendError()κ° νΈμΆλμλμ§ νμΈνλ€. νΈμΆλμλ€λ©΄ μ€μ ν μ€λ₯ μ½λμ λ§μΆ° κΈ°λ³Έ μ€λ₯ νμ΄μ§λ₯Ό 보μ¬μ€λ€.
μλΈλ¦Ώμ μμΈκ° λ°μν΄μ μλΈλ¦Ώ λ°μΌλ‘ μ λ¬λκ±°λ νΉμ response.sendError()κ° νΈμΆλμμ λ κ°κ°μ μν©μ λ§μΆ μ€λ₯ μ²λ¦¬ κΈ°λ₯μ μ 곡νλ€.
κ³Όκ±°μλ web.xmlμ΄λΌλ νμΌμ μ€λ₯ νλ©΄μ λ±λ‘νλ€. μ§κΈμ μ€νλ§ λΆνΈλ₯Ό ν΅ν΄ μλΈλ¦Ώ 컨ν
μ΄λλ₯Ό μ€ννκΈ° λλ¬Έμ, μ€νλ§ λΆνΈκ° μ 곡νλ κΈ°λ₯μ μ¬μ©ν΄μ μλΈλ¦Ώ μ€λ₯ νμ΄μ§λ₯Ό λ±λ‘νλ©΄ λλ€.
μμΈ λ°μκ³Ό μ€λ₯ νμ΄μ§ μμ² νλ¦
- WAS(μ¬κΈ°κΉμ§ μ ν) β¬ οΈ νν° β¬ οΈ μλΈλ¦Ώ β¬ οΈ μΈν°μ ν° β¬ οΈ μ»¨νΈλ‘€λ¬(μμΈ λ°μ)
- WAS '/error-page/500' λ€μ μμ² β‘οΈ νν° β‘οΈ μλΈλ¦Ώ β‘οΈ μΈν°μ ν° β‘οΈ μ»¨νΈλ‘€λ¬(/error-page/500) β‘οΈ View
WASλ μ€λ₯ νμ΄μ§λ₯Ό λ¨μν μ¬μμ²νλ κ²μ΄ μλλΌ, μ€λ₯ μ 보λ₯Ό requestμ attributeμ μΆκ°ν΄μ λ겨μ€λ€.
μλΈλ¦Ώ μ€νμ μ€μ κ³ κ°μ΄ μμ²ν κ²μΈμ§, μλ²κ° λ΄λΆμμ μ€λ₯ νμ΄μ§λ₯Ό μμ²νλ κ²μΈμ§ DispatcherTypeμΌλ‘ ꡬλΆν μ μλ λ°©λ²μ μ 곡νλ€.
κ³ κ°μ΄ μ²μ μμ²νλ©΄ dispatcherType=REQUEST
μ΄λ€.
νν°λ νν°λ₯Ό λ±λ‘ν λ DispatcherTypeμΈ κ²½μ°, νν°λ₯Ό μ μ©ν μ§ μ νν μ μμλ€.
λ°λ©΄ μΈν°μ
ν°λ μλΈλ¦Ώμ΄ μ 곡νλ κΈ°λ₯μ΄ μλκ³ , μ€νλ§μ΄ μ 곡νλ κΈ°λ₯μ΄κΈ° λλ¬Έμ DispatcherTypeκ³Ό 무κ΄νκ² νμ νΈμΆλλ€.
λμ μΈν°μ
ν°λ excludePathPatterns
λ₯Ό μ¬μ©ν΄ μ€λ₯ νμ΄μ§ κ²½λ‘λ₯Ό μ μΈν΄μ£Όλ©΄ λλ€. (μ€λ³΅ νΈμΆ μ κ±°)
/error-ex μ€λ₯ μμ² νλ¦ μ 리
- WAS(/error-ex, dispatchType=REQUEST) β‘οΈ νν° β‘οΈ μλΈλ¦Ώ β‘οΈ μΈν°μ ν° β‘οΈ μ»¨νΈλ‘€λ¬
- WAS(μ¬κΈ°κΉμ§ μ ν) β¬ οΈ νν° β¬ οΈ μλΈλ¦Ώ β¬ οΈ μΈν°μ ν° β¬ οΈ μ»¨νΈλ‘€λ¬(μμΈ λ°μ)
- WAS μ€λ₯ νμ΄μ§ νμΈ
- WAS(/error-page/500, dispatchType=ERROR) β‘οΈ νν°(X) β‘οΈ μλΈλ¦Ώ β‘οΈ μΈν°μ ν°(X) β‘οΈ μ»¨νΈλ‘€λ¬(/error-page/500) β‘οΈ View
BasicErrorController
λ κΈ°λ³Έμ μΈ λ‘μ§μ΄ λͺ¨λ κ°λ°λμ΄ μλ€.
κ°λ°μλ μ€λ₯ νμ΄μ§ νλ©΄λ§ BasicErrorController
κ° μ 곡νλ λ£°κ³Ό μ°μ μμμ λ°λΌμ λ±λ‘νλ©΄ λλ€.
λ·° ν νλ¦Ώμ΄ μ μ 리μμ€λ³΄λ€ μ°μ μμκ° λκ³ , 404, 500μ²λΌ ꡬ체μ μΈ κ²μ΄ 5xxμ²λΌ λ ꡬ체μ μΈ κ²λ³΄λ€ μ°μ μμκ° λλ€.