티스토리 뷰
JSP 설계 모델에는 2가지 모델이 있다. 모델1방식과 모델2방식.
데이터 입력, 데이터 처리, 데이터 출력 각각을 어느 곳에서 처리하느냐에 따라서 모델1과 모델2방식이 구분된다.
모델1 |
|
모델1 방식은 JSP가 데이터 입력과 출력을 담당하고, 자바빈이 데이터 처리를 담당한다.
여기서 사용되는 자바빈은 데이터를 담는 역할 뿐만 아니라, 로직을 처리하기도 하기 때문에 데이터 빈+ 서비스 빈의 역할을 동시에 하고 있는 자바빈이다. 즉, JSP 혼자서 거의 모든 업무를 처리한다.
모델1방식은, 매우 빠르게 개발해야 하며 유지보수가 필요하지 않은 경우에 사용하는것이 좋다. 즉, 남들과 코드를 공유 할일이 없고 나만 그 코드를 보는 경우에는 모델1을 사용해도 상관없다. JSP가 더러워도 나는 그 코드를 알아 볼 수 있기 때문이다.
모델2 |
이에 반해서 모델2방식은 서블릿이 데이터 입력과 데이터 처리를 담당하고, 그 처리된 데이터를 자바빈(데이터빈)에 담아서, JSP에게 전달한다. JSP는 데이터의 출력만을 담당한다. 서블릿이 거의 모든 업무를 처리하는 셈이다. MVC패턴에서의 컨트롤러가 서블릿의 역할중 일부를 하고 있는 것이다.(서블릿은 데이터 처리까지 하지만, 컨트롤러는 데이터 처리를 하지 않음)
즉 모델2는 핵심 컴포넌트가 2개(서블릿과 JSP), 모델1은 핵심 컴포넌트가 1개(JSP) 이런식으로 기억하면 까먹지 않을것 같다.
모델1 VS 모델2? |
모델1은 비교적 간단한 웹 앱 개발에 사용되는 모델이며, 모델2는 조금 더 복잡한 개발에 사용되는 모델이라고 하지만, 요즘은 간단한 웹앱개발시에도 모델2방식을 사용한다고 한다. 모델1방식에 비하여 모델2방식은 유지보수 및 협업에 확실한 강점을 갖고 있기 때문이다. 왜냐면 모델1에서는 JSP가 데이터의 입출력을 모두 담당했기 때문에 디자이너가 HTML을 분석하기 굉장히 어렵다. 하지만 모델2방식에서는 JSP가 데이터의 출력만을 담당하기 때문에 디자이너들이 쉽게 HTML을 작성 할 수 있다.
또한, 모델1은 JSP파일이 너무 커지고 복잡해지기때문에 유지보수 하기도 힘들다. 모델2방식에서는 모든 로직이 서블릿에 집중 되어 있기 때문에 유지보수하기가 편리하다.
모델2방식은 모델1방식에 비하여 이러한 장점들이 있기 때문에 요즘에는 거의 모델2방식으로 웹 앱을 설계 한다고 한다.
MVC패턴 |
MVC패턴은 모델2 방식과 상당히 유사하다. 모델2방식이 MVC패턴을 따른 모델이라고 한다고 하니, MVC가 좀 더 큰 개념인 것 같다.
Controller : 데이터를 입력받고 모델과 뷰를 호출한다.
Model : 데이터 처리 로직을 구현한다.
View : 실행 결과를 출력한다.
이런식으로 역할을 분담한다. 이것도 역시 마찬가지로 데이터의 입력,처리,출력을 기준으로 컴포넌트를 나눈것이다.
이런식으로 컴포넌트를 분리시켜놓으면 나중에 유지보수하기에 굉장히 편하기 때문에 이런 방식을 사용하는것이다.
MVC패턴에서 나오는 DTO,DAO에 해당하는 객체들이 모두 모델에 속한다. (데이터를 담거나 처리 하기 때문에)
모델은 데이터를 저장하는것을 담당한다. 데이터를 객체에 저장할수도 있고(DTO) 데이터베이스에 저장할수도있다.(DAO) 그렇기 때문에 DAO와 DTO가 모두 모델로 불리는것이다.
'컴퓨터 공학과 졸업 > JSP&Servlet' 카테고리의 다른 글
서블릿의 정의 (0) | 2018.08.01 |
---|---|
서블릿 구동 절차 (0) | 2018.08.01 |
필터와 래퍼 (0) | 2018.07.27 |
JSP의 새로운 문법 (0) | 2018.07.26 |
Servlet Container (0) | 2018.07.26 |
- Total
- Today
- Yesterday
- server side rendering
- Next.js
- Polyfill
- design system
- react
- computed
- webpack
- props
- rendering scope
- type alias
- react hooks
- javascript
- es6
- typescript
- state
- Action
- hydrate
- await
- Babel
- async
- reducer
- atomic design
- promise
- reactdom
- storybook
- useRef
- useEffect
- return type
- mobx
- reflow
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |