day35 πŸŒ•

μž₯λ―ΈΒ·2022λ…„ 7μ›” 18일
0

였늘의 μ„±κ³Ό

λͺ©λ‘ 보기
35/129
post-thumbnail

μŠ€ν”„λ§ MVC 1편 - λ°±μ—”λ“œ μ›Ήκ°œλ°œ ν•΅μ‹¬κΈ°μˆ  μ„Ήμ…˜ 4 μˆ˜κ°•

μ„Ήμ…˜ 4. MVC ν”„λ ˆμž„μ›Œν¬ λ§Œλ“€κΈ° μˆ˜κ°• μ™„λ£Œ!!
무렀 2μ‹œκ°„ λ°˜μ— 걸친 κ°•μ˜... μˆ˜κ°• μ™„λ£Œ... κΈΈμ—ˆλ‹€...

FrontController νŒ¨ν„΄ νŠΉμ§•

  • ν”„λ‘ νŠΈ 컨트둀러 μ„œλΈ”λ¦Ώ ν•˜λ‚˜λ‘œ ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ„ λ°›λŠ”λ‹€.
  • ν”„λ‘ νŠΈ μ»¨νŠΈλ‘€λŸ¬κ°€ μš”μ²­μ— λ§žλŠ” 컨트둀러λ₯Ό μ°Ύμ•„μ„œ ν˜ΈμΆœν•œλ‹€.
  • ν”„λ‘ νŠΈ 컨트둀러λ₯Ό μ œμ™Έν•œ λ‚˜λ¨Έμ§€ μ»¨νŠΈλ‘€λŸ¬λŠ” μ„œλΈ”λ¦Ώμ„ μ‚¬μš©ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.

➑️ μŠ€ν”„λ§ μ›Ή MVC의 DispatcherServlet이 FrontController νŒ¨ν„΄μœΌλ‘œ κ΅¬ν˜„λ˜μ–΄ μžˆλ‹€.


ControllerV1

public interface ControllerV1 {
	void process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException;
}

μ„œλΈ”λ¦Ώκ³Ό λΉ„μŠ·ν•œ λͺ¨μ–‘μ˜ 컨트둀러 μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ„μž…ν•œλ‹€.
각 μ»¨νŠΈλ‘€λŸ¬λ“€μ€ 이 μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•˜λ©΄ λœλ‹€.
ν”„λ‘ νŠΈ μ»¨νŠΈλ‘€λŸ¬λŠ” 이 μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν˜ΈμΆœν•΄μ„œ κ΅¬ν˜„κ³Ό 관계없이 둜직의 일관성을 κ°€μ Έκ°ˆ 수 μžˆλ‹€.


ControllerV2

public interface ControllerV2 {
	MyView process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException;
}

μ»¨νŠΈλ‘€λŸ¬κ°€ λ·°λ₯Ό λ°˜ν™˜ν•˜λŠ” νŠΉμ§•μ΄ μžˆλ‹€.
각 μ»¨νŠΈλ‘€λŸ¬λŠ” λ‹¨μˆœνžˆ MyView 객체λ₯Ό μƒμ„±ν•˜κ³  λ·° μ΄λ¦„λ§Œ λ„£κ³  λ°˜ν™˜ν•˜λ©΄ λœλ‹€.
return new MyView("/WEB-INF/views/new-form.jsp");


ControllerV3

μ„œλΈ”λ¦Ώ 쒅속성 제거 및 λ·° 이름 쀑볡 제거

public interface ControllerV3 {
	ModelView process(Map<String, String> paramMap);
}

HttpServletRequestκ°€ μ œκ³΅ν•˜λŠ” νŒŒλΌλ―Έν„°λŠ” ν”„λ‘ νŠΈ μ»¨νŠΈλ‘€λŸ¬κ°€ paramMap에 λ‹΄μ•„μ„œ ν˜ΈμΆœν•΄μ£Όλ©΄ λœλ‹€.
응닡 결과둜 λ·° 이름과 뷰에 전달할 Model 데이터λ₯Ό ν¬ν•¨ν•˜λŠ” ModelView 객체λ₯Ό λ°˜ν™˜ν•˜λ©΄ λœλ‹€.


ControllerV4

public interface ControllerV4 {
	/**
	* @param paramMap
	* @param model
	* @return viewName
	*/
	String process(Map<String, String> paramMap, Map<String, Object> model);
}

μΈν„°νŽ˜μ΄μŠ€μ— ModelViewκ°€ μ—†λ‹€.
model κ°μ²΄λŠ” νŒŒλΌλ―Έν„°λ‘œ μ „λ‹¬λ˜κΈ° λ•Œλ¬Έμ— 결과둜 뷰의 μ΄λ¦„λ§Œ λ°˜ν™˜ν•΄μ£Όλ©΄ λœλ‹€.


ControllerV5

μ–΄λŒ‘ν„° νŒ¨ν„΄μ„ μ‚¬μš©ν•΄μ„œ ν”„λ‘ νŠΈ μ»¨νŠΈλ‘€λŸ¬κ°€ λ‹€μ–‘ν•œ λ°©μ‹μ˜ 컨트둀러λ₯Ό μ²˜λ¦¬ν•  수 μžˆλ„λ‘ λ³€κ²½ν•΄λ³΄μž.

⬇️ μ–΄λŒ‘ν„°μš© μΈν„°νŽ˜μ΄μŠ€

public interface MyHandlerAdapter {
	boolean supports(Object handler); //μ–΄λŒ‘ν„°κ°€ ν•΄λ‹Ή 컨트둀러λ₯Ό μ²˜λ¦¬ν•  수 μžˆλŠ”μ§€ νŒλ‹¨
	ModelView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException;
}

κ·Έλ™μ•ˆ λ°€λ¦° κ±° 끝내기!!!!

βœ”οΈ JPA Entity Manager & JPA Dirty Checking - day34 πŸŒ• 에 μΆ”κ°€ μ™„λ£Œ!
βœ”οΈ 22. 07. 20. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ sqlλ¬Έ (IS NULL) - day34 πŸŒ• 에 μΆ”κ°€ μ™„λ£Œ!
βœ”οΈ 22. 07. 21. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ½”ν…Œ 1문제 (λ¬Έμžμ—΄ 닀루기 κΈ°λ³Έ) - day34 πŸŒ• 에 μΆ”κ°€ μ™„λ£Œ!

profile
김뉴비

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보