관리 메뉴

Partially Committed

JSP MVC νŒ¨ν„΄ λ³Έλ¬Έ

πŸ’» Study !/Spring

JSP MVC νŒ¨ν„΄

WonderJay 2023. 5. 14. 23:00
728x90
λ°˜μ‘ν˜•
SMALL

λ­”κ°€ λͺ…ν™•ν•˜μ§€ μ•Šμ•˜λ˜ λ‚΄μš©μ— λŒ€ν•΄μ„œ μ •λ¦¬ν•΄λ³΄μž..

 

1. WEB-INF ν΄λ”λž€?

  WEB-INF ν΄λ”λŠ” λΈŒλΌμš°μ €μ—μ„œ URL 을 톡해 직접 μ ‘κ·Όν•  수 μ—†κ³ (ν•˜λ €κ³  ν•˜λ©΄ 404 ERROR λ°œμƒ) μ„œλ²„ λ‚΄μ—μ„œλ§Œ μ ‘κ·Ό κ°€λŠ₯ν•˜λ―€λ‘œ Web 정보에 κ΄€ν•œ μ€‘μš”ν•œ νŒŒμΌλ“€μ€ WEB-INF(Web Information) 폴더에 λ„£λŠ”λ‹€. κ·ΈλŸ¬λ―€λ‘œ λ³΄μ•ˆμ„±μ„ κ°•ν™”ν•  수 μžˆλ‹€λŠ” 것이 μž₯μ μ΄μ§€λ§Œ, λΈŒλΌμš°μ €μ˜ 직접 접근이 μ œν•œλ˜λ―€λ‘œ Controller 을 λ°˜λ“œμ‹œ κ±°μ³μ„œ μ΄λ™ν•΄μ•Όλ§Œ ν•œλ‹€.

  일반적으둜 jsp νŒŒμΌμ€ WEB-INF 폴더에 λ„£κ³ , css, img, jQuery 와 같은 정적 νŒŒμΌμ€ WEB-INF 폴더에 넣지 μ•ŠλŠ”λ‹€κ³  ν•œλ‹€. jsp νŒŒμΌμ„ WEB-INF 폴더에 λ„£μ–΄μ„œ κ΄€λ¦¬ν•˜λŠ” μ΄μœ κ°€ λ¬΄μ—‡μΌκΉŒ? λΈŒλΌμš°μ €λ₯Ό ν†΅ν•΄μ„œ jsp νŒŒμΌμ— 직접 μ ‘κ·Όκ°€λŠ₯ν•˜λ„λ‘ ν•˜λ©΄, μ„œλΈ”λ¦Ώμ„ ν†΅κ³Όν•˜μ§€ μ•ŠμœΌλ―€λ‘œ 'λ°˜λ“œμ‹œ μˆ˜ν–‰λ˜λ„λ‘ κ΅¬ν˜„ν•œ κΈ°λŠ₯' μ΄ μ‹€ν–‰λ˜μ§€ μ•Šκ³  ν•΄λ‹Ή jsp νŽ˜μ΄μ§€μ— μ ‘κ·Όν•˜κ²Œ λ˜λŠ” 일이 λ°œμƒν•  수 μžˆλ‹€. (μ ‘κ·Ό μ‹œκ°„, IP 등이 db 에 μ €μž₯λ˜μ–΄μ•Ό ν•˜λŠ”λ° μ €μž₯이 λ˜μ§€ μ•ŠλŠ” λ“±)

  μ΄λŸ¬ν•œ 상황을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ jsp νŒŒμΌμ€ WEB-INF 폴더 내에 λ„£μ–΄μ„œ λΈŒλΌμš°μ €μ—μ„œ 직접 μš”μ²­ν•˜μ§€ λͺ»ν•˜λ„둝 λ°©μ§€ν•˜λŠ” 것이닀. λͺ¨λ“  μ‚¬μš©μžλ“€μ€ jsp 화면을 보기 μœ„ν•΄ μ„œλΈ”λ¦Ώ(Controller)을 λ°˜λ“œμ‹œ 거쳐야 ν•œλ‹€.

 

1. Model 1

μ›Ή λΈŒλΌμš°μ €μ˜ μš”μ²­μ΄ JSP 둜 λ°”λ‘œ μ „λ‹¬λ˜κ³ 

JSP νŒŒμΌμ—μ„œ Controller, View κΈ°λŠ₯을 λͺ¨λ‘ μ²˜λ¦¬ν•œ 뒀에 κ·Έ κ²°κ³Όλ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ— λ°˜ν™˜ν•œλ‹€.

이λ₯Ό μœ„ν•΄ JSP 파일 내에 μžλ°” μ½”λ“œμ™€ λ§ˆν¬μ—… κ΄€λ ¨ μ½”λ“œλ“€μ΄ ν˜Όμš©λ˜λ―€λ‘œ μœ μ§€λ³΄μˆ˜ / 디버깅이 μ–΄λ €μ›Œμ§„λ‹€. κ·ΈλŸ¬λ―€λ‘œ λŒ€κ·œλͺ¨ μ‹œμŠ€ν…œμ—μ„œλŠ” μ ν•©ν•˜μ§€ μ•Šμ€ ꡬ쑰라고 ν•  수 μžˆλ‹€.

 

2. Model 2 (MVC)

 

  Model 1 의 단점을 κ°œμ„ ν•˜κΈ° μœ„ν•΄ Controller(Servlet) 을 λ„μž…ν•˜μ˜€λ‹€. μ›Ή λΈŒλΌμš°μ €μ˜ μš”μ²­μ€ 이 Controller(Servlet) 이 λ°›κ³ , μ μ ˆν•œ 처리λ₯Ό μˆ˜ν–‰ν•œ λ’€ jsp νŽ˜μ΄μ§€λ‘œ forward ν•œλ‹€. 그러고 λ‚˜λ©΄ JSP νŽ˜μ΄μ§€(view) μ—μ„œλŠ” κ²°κ³Ό 화면을 Client 에 μ „μ†‘ν•œλ‹€. Model, View, Controller 으둜 μ—­ν• κ³Ό κΈ°λŠ₯을 λͺ…ν™•νžˆ λ‚˜λˆ„μ–΄ 개발, μœ μ§€λ³΄μˆ˜κ°€ νŽΈλ¦¬ν•˜λ‹€.

 

  Model: λΉ„μ§€λ‹ˆμŠ€ μ˜μ—­μ˜ μƒνƒœ 정보λ₯Ό 처리

  View : λΉ„μ§€λ‹ˆμŠ€ μ˜μ—­μ— λŒ€ν•œ μ‚¬μš©μžκ°€ 보게 될 κ²°κ³Ό 화면을 λ‹΄λ‹Ή

  Controller : μ‚¬μš©μžμ˜ μž…λ ₯ 및 흐름 μ œμ–΄λ₯Ό λ‹΄λ‹Ή

 

  MVC νŒ¨ν„΄μœΌλ‘œ κ°œλ°œν•˜λ©΄ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 흐름 μ œμ–΄, μ‚¬μš©μž 처리 μš”μ²­μ€ Controller μ—μ„œ λ‹΄λ‹Ήν•˜κ²Œ 되고, λΉ„μ§€λ‹ˆμŠ€ λ‘œμ§μ„ μ²˜λ¦¬ν•˜λŠ” λͺ¨λΈκ³Ό 화면을 λ³΄μ—¬μ£ΌλŠ” View λŠ” μ² μ €ν•˜κ²Œ λΆ„λ¦¬λœλ‹€.

 

3. μŠ€ν”„λ§ MVC

 

ν΄λΌμ΄μ–ΈνŠΈλ‘œλΆ€ν„° HTTP μš”μ²­μ„ DispatcherServlet 이 λ°›λŠ”λ‹€.

→ DispatcherServlet 은 HandlerMapping 을 톡해, μš”μ²­λ°›μ€ 것을 μ²˜λ¦¬ν•  Controller 을 κ²€μƒ‰ν•œλ‹€.

→ μ μ ˆν•œ Controller 을 μ°Ύμ•˜μœΌλ©΄, κ·Έ Controller 을 μ‹€ν–‰ν•˜μ—¬ μš”μ²­μ„ μ²˜λ¦¬ν•œλ‹€.

→  Controller λŠ” λΉ„λ‹ˆμ§€μŠ€ 둜직의 μˆ˜ν–‰ 결과둜 μ–»μ–΄ λ‚Έ Model 정보와 Model 을 보여쀄 View 정보λ₯Ό ModelAndView 객체에 μ €μž₯ν•œ λ’€ λ°˜ν™˜ν•œλ‹€.

→ DispatcherServlet 은 ModelAndView λ‘œλΆ€ν„° View 정보λ₯Ό μΆ”μΆœν•˜κ³ , ViewResolver 을 μ΄μš©ν•΄ μ‘λ‹΅μœΌλ‘œ μ‚¬μš©ν•  view λ₯Ό μ–»λŠ”λ‹€.

→ κ·Έ View λ₯Ό DispatcherServlet 이 μ‹€ν–‰ν•˜μ—¬ 응닡을 μ „μ†‘ν•œλ‹€.


μ°Έκ³ ν•œ κΈ€

1. JSP MVCνŒ¨ν„΄(study3) (tistory.com)

 

JSP MVCνŒ¨ν„΄(study3)

WEB-INF폴더 WEB-INFλŠ” Web Information의 μ•½μžλ‘œ web에 κ΄€λ ¨λœ 정보λ₯Ό μ˜λ―Έν•œλ‹€. Web 정보에 κ΄€ν•œ μ€‘μš”ν•œ νŒŒμΌλ“€μ€ WEB-INF폴더에 λ„£κ²Œλœλ‹€. 예λ₯Ό λ“€μ–΄web.xml, lib폴더, java파일(/WEB-INF/classes) 등이 μžˆλ‹€. 이런

brilliantdevelop.tistory.com

2. [Spring MVC]Model1, Model2 그리고 μŠ€ν”„λ§ MVC ꡬ쑰 :: Dev History (tistory.com)

 

[Spring MVC]Model1, Model2 그리고 μŠ€ν”„λ§ MVC ꡬ쑰

Model 1 - JSP νŒŒμΌμ—μ„œ Controller와 View κΈ°λŠ₯을 λͺ¨λ‘ μ²˜λ¦¬ν•œλ‹€. - JSP νŒŒμΌμ— μžλ°” μ½”λ“œμ™€ λ§ˆν¬μ—… κ΄€λ ¨ μ½”λ“œλ“€μ΄ μ„žμ—¬μžˆμ–΄ 디버깅과 μœ μ§€λ³΄μˆ˜κ°€ μ–΄λ ΅λ‹€. - λŒ€κ·œλͺ¨ μ‹œμŠ€ν…œ κ°œλ°œμ— μ‚¬μš©ν•˜κΈ°λŠ” λΆ€μ ν•©ν•œ

code-overflow.tistory.com

 

728x90
λ°˜μ‘ν˜•
LIST
Comments