BLOG main image
분류 전체보기 (313)
교육 (13)
NEIS (6)
Edufine (0)
Programmer (5)
Android Programming (1)
Internet W3 (18)
JAVA Programming (9)
JSP/Servlet (1)
Framework (7)
Spring For Beginner (4)
eGovFrame (10)
MEAN Stack (2)
NodeJS (5)
SublimeText (30)
SublimeText_Tips (18)
Eclipse (16)
JavaScript (8)
jQuery (12)
jQuery_tips (1)
Ajax (3)
DWR(Direct Web Remote) (4)
JSON(JS Object Notation) (4)
Oracle (2)
MySQL (28)
OS (16)
Download (3)
Life (10)
Favorit Site (1)
Books (2)
Healthy (1)
Stocks (1)
HTML5/CSS (1)
Python (4)
Security (7)
CISSP (0)
Ruby On Rails (5)
일기장 (0)
영어 교과서(중2) (3)
알고리즘 (0)
Go Lang (3)
VB 2010 (12)
C# (1)
정보보안기사(네트워크보안) (0)
업무 활용 엑셀 (11)
틈틈이 활용팁 (14)
하루 하루 살아가며 ……. (2)
기술 (1)
파이썬 & 데이터분석 (1)
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
2015. 7. 19. 20:15

** Model 1 vs. Model 2

- Model1 : reqeust, response 내보내는 것 모두 한놈(보통 JSP)이 한다.

 

- Model2 : Model, View, Controller로 나눠서 처리해 보자.

여기서 ISSUE는 Contrller(Servlet)와 View (JSP)간 데이터 공유가 문제다.

Struts에서는 request 객체를 이용해서 redirect로 처리했다.

** why FrontController DesignPattern and Command DesignPattern?

- 모든 요청 처리를 각각의 servlet이 관리하다 보니 공통적이 처리가 어렵다.

- 매번 servlet 만들려니 힘들다.

- 그래서 FrontController designPettern 사용한다. => 하나의 Servlet이 모든 요청 다 받는다.

- 이렇게 만들다 보니 FontController 역할을 하는 Servlet에 난리나게 많은 코드가 들어가게 된다.

- 되려 유지보수가 떨어진다. if/else, case문 난리나게 들어간다.

- 이런 if/else, case 문을 OOP 사상으로 예쁘게 정리하기 위해 사용한 pattern이 Commond pattern이다.

- commnad pattern은 어플리케이션의 명령을 추상화 시킨것이라 하는데..

- Controller 부분에 command pattern 적용

** SpringMVC 동작 메커니즘

① 사용자의 요청을 DispatcherServlet 이 받는다.
② 요청을 처리해야하는 Controller를 찾기 위해 DispatchServlet은 HandlerMapping에 대한 질의를 시작하고 HandlerMapping은 URL 패턴을 Controller 객체에 매핑하여 Controller를 찾아낸다.
③ DispatcherServlet은 찾은 Controller에게 요청을 전달하고 Controller는 서비스계층의 인터페이스를 호출하여 적절한 비즈니스 로직을 수행한다.
④ Controller는 비즈니스 로직의 수행결과로 받아낸 도메인모델 객체와 함께 뷰이름을 ModelAndView 객체에 저장하여 리턴한다.
⑤ DispatcherServlet은 응답할 View 객체를 찾기위해 ViewResolver에게 질의를 한다.
⑥ DispatcherServlet은 찾아낸 View 객체에 요청을 전달한다.
⑦ 뷰는 ModelAndView 객체에 있는 도메인모델 객체를 이용하여 화면을 구성한다.

** Context Loader

- 어머나 이건 몰랐다. Servlet spec 2.3에서는 <listner>로 당연하게 등록했는데 2.2에서는 안된다.

 

<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>

 

- 2.2에서는 servlet으로 등록해야 한다.

 

<servlet>
<servlet-name>context</servlet-name>
<servlet-class>
org.springframework.web.context.ContextLoaderServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

 

** Strtus vs. Spring MVC

- FormBean 비슷한 것 -> command 기능 : reqeust.getParameter() 자동으로 해주는거

** Controller

- AbstractController : 아주 단순한 Controller일 때 사용한다. Command 기능 사용하지 않는다.

- AbstractCommandController : Command 기능 필요한 경우

- MultiActionController : strtus의 dispatchAction이랑 같은데 parameter로 method 구분할 수도 있고 uri로 하는 것도 제공한다.

- SimpleFormController : Command기능과 Html 폼 연동을 합쳤다. 예를 들어 login기능 만들 때

사용자의 입력을 기다리는 loginPage 기능과 submit후에 로그인 처리를 해주는 두개의 request가 필요하다.

이것을 쌍으로 하나의 Controller에서 처리할 수 있다.

어떻게??? get 방식과 post 방식으로 구분해서..

get방식으로 오면 formView() method 실행해서 해당하는 jsp 화면을 보여주고,

post방식으로 오면 onSubmit() method에서 로그인 처리 로직을 수행할 수 있도록 해준다.

이런방식은 update/add 페이지에서 유용하다.

- AbstractWizardFormController : 마법사처럼 회원가입 시 여러페이지에서 데이터가 취합될 때 사용한다.

 
 
 
 
 
반응형