MapleStory Finger Point

🟀 JAVA/🟀 Spring

[Spring] μŠ€ν”„λ§ MVC ν”„λ ˆμž„μ›Œν¬ ꡬ쑰

HYEJU01 2024. 8. 11. 21:08

πŸ’» μŠ€ν”„λ§ MVC ν”„λ ˆμž„μ›Œν¬ λ™μž‘κ΅¬μ‘°

 



1) μ‚¬μš©μžκ°€ μš”μ²­μ„ 보낸닀.

2) DispatcherServlet 이 μš”μ²­μ„ λ°›λŠ”λ‹€.

3) HandlerMapping 객체에 Controller 객체 검색을 μš”μ²­ν•œλ‹€.

=> λͺ¨λ“  Controller 객체λ₯Ό 검색 ν›„ DispatcherServlet 객체에 λ°˜ν™˜ν•œλ‹€.

4) DispatcherServlet  λŠ” λ‹€μ‹œ HandlerAdapter 객체에 μ‚¬μš©μžμ˜ μš”μ²­μ— λΆ€ν•©ν•˜λŠ” λ©”μ†Œλ“œ 검색을 μš”μ²­ν•œλ‹€.

=> HandlerAdpter κ°μ²΄λŠ” μš”μ²­μ— λΆ€ν•©ν•˜λŠ” λ©”μ†Œλ“œλ₯Ό μ°Ύμ•„μ„œ ν•΄λ‹Ή Controller 객체의 λ©”μ†Œλ“œλ₯Ό μ‹€ν–‰ν•œλ‹€.

5) Controller 객체의 λ©”μ†Œλ“œκ°€ μ‹€ν–‰λ˜λ©΄, HandlerAdapter 객체에 ModelAndView  객체λ₯Ό λ°˜ν™˜ν•œλ‹€.

6) ModelAndView κ°μ²΄μ—λŠ” μ‚¬μš©μž 응닡에 ν•„μš”ν•œ 데이터 정보와 λ·° 정보(jsp파일) κ°€ λ‹΄κ²¨μžˆλ‹€.

7) λ‹€μŒμœΌλ‘œ HandlerAdpter κ°μ²΄λŠ” ModelAndView 객체λ₯Ό λ‹€μ‹œ DispatcherServlet 객체에 λ°˜ν™˜ν•œλ‹€.

 

 

 

 

πŸ’» ν”„λ‘œμ νŠΈ 전체 ꡬ쑰 

 

 

 

πŸ’» web.xml 

web.xml 에 μ„œλΈ”λ¦Ώμ„ 맀핑해쀀닀. 

(μ„œλΈ”λ¦Ώ(μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μš”μ²­μ„ μ²˜λ¦¬ν•˜λŠ” 클래슀)을 νŠΉμ • URL νŒ¨ν„΄μ— λ§€ν•‘ν•˜μ—¬, μ‚¬μš©μžκ°€ νŠΉμ • URL에 μ ‘κ·Όν•  λ•Œ μ–΄λ–€ μ„œλΈ”λ¦Ώμ΄ ν˜ΈμΆœλ μ§€ μ •μ˜ν•¨)

 

졜초의 μ‚¬μš©μž μš”μ²­μ΄ λ°œμƒν•˜λ©΄

!!! κ°€μž₯ λ¨Όμ € [ DispatcherServlet ] 이 μ‚¬μš©μžμ˜ μš”μ²­μ„ λ°›μŒ !!!

즉, DispatcherServlet  을 μ„œλΈ”λ¦ΏμœΌλ‘œ λ“±λ‘ν•΄μ£ΌλŠ” 과정을 섀정해야함.

 

μ‚¬μš©μžμ˜ λͺ¨λ“  μš”μ²­μ„ λ°›κΈ° μœ„ν•΄μ„œλŠ” => μ„œλΈ”λ¦Ώ 맡핑 κ²½λ‘œλŠ” '/' 둜 μ„€μ •

 

 

 

πŸ’» μŠ€ν”„λ§ μ„€μ •νŒŒμΌμ΄λž€?  servlet-context.xml 

μŠ€ν”„λ§ μ„€μ •νŒŒμΌμ€ ν΄λž˜μŠ€λ‘œλΆ€ν„° 객체(bean) 을 μƒμ„±ν•˜κ³  μ‘°λ¦½ν•˜λŠ” 역할을 ν•œλ‹€ !

즉 servlet-context.xml 도 같은 역할을 ν•œλ‹€! (ν”„λ‘œμ νŠΈμ— ν•„μš”ν•œ 객체 생성, 쑰립)

 

 

 

πŸ’» servlet-context.xml 

web.xml 을 확인해보면 μ•„λž˜μ™€ 같은 μ„œλΈ”λ¦Ώμ„ λ³Ό 수 μžˆλ‹€.

contextConfigLocation -> μŠ€ν”„λ§ μ„€μ • νŒŒμΌμ„ λ‹€λ₯Έ μ΄λ¦„μœΌλ‘œ μ—¬λŸ¬κ°œ μƒμ„±ν•˜λ„λ‘ ν•΄μ€€λ‹€.

μŠ€ν”„λ§ μ„€μ • νŒŒμΌμ„ μ—¬λŸ¬κ°œ μƒμ„±ν•˜κ³  싢을 λ•Œμ—λŠ”, 파일 경둜λ₯Ό μ—¬λŸ¬κ°œ 적어주고, xml으둜 직접 μƒμ„±ν•΄μ£Όλ©΄λœλ‹€.

servlet-context.xml -> 파일이 μŠ€ν”„λ§ μ„€μ • 역할을 ν•˜λŠ” 파일이 λœλ‹€.

 

 

πŸ’» <annotation-driven /> μ΄λž€ ?

μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆ μ•ˆμ—λŠ” HandlerMapping , HandlerAdapter κ°€ μƒμ„±λ˜μ–΄μ•Όν•œλ‹€.

이 νƒœκ·ΈλŠ” HandlerMapping , HandlerAdapter λ₯Ό 객체둜 μƒμ„±ν•˜κ³ , μŠ€ν”„λ§ μ–΄λ…Έν…Œμ΄μ…˜μ„ μ‚¬μš©ν•  수 있게 ν•œλ‹€.

(λ°˜λ“œμ‹œ μ„ μ–Έλ˜μ–΄μ•Όν•œλ‹€.)

 

 

 

πŸ’» <resources mapping="/resources/**"location="/resources/" />  λž€?

- 정적 μžμ› 맡핑 

css, script νŒŒμΌλ“€μ„ μ‚¬μš©ν•˜κΈ° μœ„ν•œ 경둜 μ„€μ •

resources 폴더에 λ§Œλ“€μ–΄μ§€λŠ” νŒŒμΌλ“€μ„ ν•΄λ‹Ή 경둜둜 λ°”λ‘œ λ§΅ν•‘λ˜μ–΄ 보여진닀.

 

 

 

- λ·° 리쑸버 μ„€μ •

 

 

 

- λ·° 리쑸버

μ»¨νŠΈλ‘€λŸ¬μ—μ„œ 받은 View 정보에 /WEB-INF/views/이름.jsp μ΄λ¦„λ§ŒμœΌλ‘œ λ§΅ν•‘ν•˜κ²Œ ν•΄μ€€λ‹€.

 

πŸ’»<context:component -scan vase-package="com.myweb.xxxx" /> λž€?

μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆμ—κ²Œ μžλ°”νŒ¨ν‚€μ§€λ₯Ό μžλ™μœΌλ‘œ μŠ€μΊ”ν•΄μ„œ 객체(bean) 으둜 μƒμ„±ν•΄μ£ΌλΌλŠ” λœ»μ΄λ‹€.

 

πŸ’» Controller

 

πŸ’»View

 

 

πŸ’»μ˜ˆμ‹œ) home.xml 의 ꡬ동 κ³Όμ •

0. ν΄λΌμ΄μ–ΈνŠΈκ°€ μš”μ²­ν•œλ‹€.

1.. web.xml μ—μ„œ DispatcherServlet 이 μš”μ²­μ„ ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­μ„ 핸듀링해쀀닀.

2. servlet-context.xml 이 μš”μ²­μ— λŒ€ν•œ 컨트둀러λ₯Ό κ²€μƒ‰ν•œλ‹€.

3. HandlerMapping 으둜 Controller 검색 ν›„  μ»¨νŠΈλ‘€λŸ¬ μš”μ²­μ„ 처리 ν›„  home 리턴

4. View-Resolver κ°€ 받은 home 을 μ°Ύμ•„μ„œ μ²˜λ¦¬ν•œλ‹€.