posted by changhozz 2013. 1. 9. 02:59

MVC 패턴.
- MVC이란 Model, View, Controller의 약자로 정말 많이 들어봤지만, 자세히는 모르던 개념.
정리하고가자.

우선 JSP 기반 웹 어플리케이션의 구조에는 MVC1패턴과 MVC2패턴 구조가 있다.
JSP에서 모든 로직과 출력을 처리하느냐, 
아니면 JSP에서는 출력만 처리하느냐에 따라서 모델 1구조와 모델 2 구조로 구분된다.
우선 모델 1 구조에 대해서 알아보자.

1). 모델 1 구조.

- JSP로 구현한 기존 웹 어플리케이션은 모델 1 구조로 웹 브라우저의 요청을 JSP 페이지가 받아서 처리하는 구조이다.


- JSP 페이지에 비즈니스 로직을 처리하기 위한 코드와 웹 브라우저에 결과를 보여주기 위한 출력 관련 코드가 뒤섞여 있는 구조이다. 즉, 내가 만들었던 허접한 쇼핑몰 hoshop또한 모델 1 구조였던것이다.
즉, HoShop과 같이 웹 브라우저의 요청이 곧바로 JSP에 전달된다.
웹 브라우저의 요청을 받은 JSP는 자바빈이나 서비스 클래스를 사용해서 웹 브라우저가 요청한 작업을
처리하고 그 결과를 클라이언트에 출력해준다.
JSP 페이지에서 웹 브라우저가 요청한 것들을 처리한다는 것은 JSP 페이지에 비즈니스 로직을 처리하기 위한 코드와 웹 브라우저에 결과를 보여줄 출력 관련 코드가 섞인다는 것을 의미한다.
프로그래밍 수업시간에 다뤘던것처럼 하나의 JSP 페이지에서 서비스 클래스를 통해서 원하는 작업을
수행하고 그 결과를 출력하는 경우가 많았는데, 이것이 모델 1 구조의 전형적인 예이다.

- 이러한 구조는 JSP 페이지 안에서 모든 정보를 표현(View)하고 저장(Model)하고 처리(Control)되므로 재사용이 힘들고, 읽기도 힘들어 가독성이 떨어진다.

모델 1 구조 정리

- 정의 : 모든 클라이언트 요청과 응답을 JSP가 담당하는 구조이다.
- 장점 : 단순한 페이지 작성으로 쉽게 구현 가능하다. 중소형 프로젝트에 적합하다.
- 단점 : 웹 애플리케이션이 복잡해지면 유지보수 문제가 발생된다.


그럼 다음으로 모델 2 구조를 살펴보자.

2). 모델 2 구조.

모델 2 구조는 모델 1 구조와 달리 웹 브라우저의 요청을 하나의 서블릿이 받게 된다.
서블릿은 웹 브라우저의 요청을 알맞게 처리한 후 그 결과를 보여줄 JSP 페이지로 포워딩한다.
포워딩을 통해서 요청 흐름을 받은 JSP 페이지는 결과 화면을 클라이언트에 전송한다.
즉, 서블릿이 비즈니스 로직 부분을 처리하게 되는 것 이다.
모델 2 구조의 특징은 웹 브라우저의 모든 요청이 단일 진입점,
즉 하나의 서블릿에서 처리된다는 점이다.
하나의 서블릿이 웹 브라우저의 모든 요청을 받기 때문에,
서블릿은 웹 브라우저의 요청을 구분할 수 있는 방법을 필요로 하며,
서블릿은 웹 브라우저의 요청을 처리한 후 웹 브라우저에 보여줄 JSP를 선택하게 된다.
모델 2 구조의 이러한 특징 때문에 MVC(Model - View - Controller)패턴에 기반을 두어
웹 어플리케이션을 구현할 때는 모델 2 구조를 주로 사용한다. 
현재 우리 GROUPWARE 또한 모델 2 구조를 사용하고 있다.

 

- 모델 1은 컨트롤러가 모델이나 뷰를 포함한 MV 형태를 띄고 있고, 모델 2는 완전한 MVC 형태를 적용하고 있다고 볼 수 있다.

모델 2 구조 정리

-  정의 : 클라이언트의 요청처리와 응답처리, 비즈니스 로직 처리하는 부분을 모듈화시킨 구조이다.
-  장점 : 처리작업의 분리로 인해 유지보수와 확장이 용이하다.
-  단점 : 구조 설계를 위한 시간이 많이 소요되므로 개발 기간이 증가한다.


모델 2 를 설명하면서 MVC패턴이란 무엇인지까지 설명이 되버린것같다.
그래도 다시한번 MVC패턴이란 무엇인가를 알아보자.

 3). MVC 패턴

모델(Model) : 페이지의 이동간에 파라미터나 값들을 넘겨줄때 
이러한 값들을 담은 인스턴스를 의미한다.

뷰(View) : 비즈니스 영역에 대한 프레젠테이션 뷰(즉, 사용자가 보게 될 결과 화면)를 담당한다.

컨트롤러(Controller) : 사용자의 입력 및 흐름 제어를 담당한다.

사용자는 원하는 기능을 처리하기 위한 모든 요청을 단일 컨트롤러에 보낸다.
모델은 비즈니스와 관련된 상태 정보 및 관련 기능을 제공하는데,
컨트롤러는 이 모델을 통해서 사용자의 요청을 처리한다.
모델을 사용하여 알맞은 비즈니스 로직을 수행한 후 컨트롤러는 사용자에게 보여줄 뷰를 선택하며,
선택된 뷰는 사용자에게 알맞은 결과 화면을 보여준다. 
뷰가 사용자에게 결과 화면을 보여줄 때에는 결과 정보가 필요한데,
컨트롤러가 이 정보를 뷰에 전달해 준다.


MVC 패턴의 핵심은 다음과 같다.
-비즈니스 로직을 처리하는 모델과 결과 화면을 보여주는 뷰가 분리되어 있다.
-어플리케이션의 흐름 제어나 사용자의 처리 요청은 컨트롤러에 집중된다.

즉, 모델은 오직 비즈니스와 관련된 부분을 처리하면 될 뿐 사용자에게 보여줄 화면이나 흐름 제어에 
대해서는 처리할 필요가 없다.
반대로 뷰는 사용자에게 알맞은 화면을 보여주는 역할만 수행하면 될 뿐, 비즈니스 로직이나 흐름 제어 등을 신경 쓸 필요가 없다.
이렇게 모델과 뷰가 분리되어 있기 때문에 모델의 내부 로직이 변경된다 하더라도 뷰는 영향을 받지 않으며, 뷰와 모델이 결합되어 있지 않기 때문에 뷰를 어렵지 않게 변경할 수 있다.

또한, 컨트롤러는 사용자의 요청에 대해서 알맞은 모델을 사용하고 사용자에게 보여줄 뷰를 선택하기만 하면 된다. 
만약 컨트롤러나 모델에 상관없이 새로운 뷰를 추가해 주면 된다. 즉
, MVC 패턴을 사용함으로써 유지 보수 작업이 간단해지고 어플리케이션을 쉽게 확장할 수 있게 되는 것이다.

정리를하자면, 모델 2 구조에서 서블릿은 MVC 패턴의 컨트롤러 역할을 한다.

서블릿은 웹 브라우저의 요청과 웹 어플리케이션의 전체적인 흐름을 제어하게 된다.
또한 모델 2 구조에서 JSP는 뷰의 역할을 담당한다. 비즈니스 로직과 관련된 코드가 없는 점을
제외하면 일반 JSP와 거의 동일한 형태를 취한다는 것이다.




'JSP > JSP 정리' 카테고리의 다른 글

DB정리!!!  (0) 2012.09.26
JSP 수업.  (0) 2012.09.25
웹 어플리케이션  (0) 2012.08.16
Chpater 1. 웹 프로그래밍 기초.  (0) 2012.08.16
웹 서버란  (0) 2012.08.16
posted by changhozz 2013. 1. 8. 02:58


cygwin 설치가 끝났다면, tomcat과 ant를 설정해보도록한다.
우선 빠른 설치를 위하여 먼저 다운을 받도록하자.

 tomcat : http://tomcat.apache.org/download-60.cgi
Core에 있는 tar.gz를 다운 받는다.
(리눅스 기반인 cygwin은 윈도우용 압축파일인 zip 대신 gz을 사용한다.)
이때 Core와 Deployer의 차이를 알고갈 필요가있다.
Core란 실행파일만 가지고 있는 배포파일이고 Deployer는 소스파일까지 가지고 있는 배포파일이다.
그렇다면  실행파일만 있으면될것을 소스파일까지 받을 이유가 뭐가있을까?
답은 이용자가 자신의 사용 방법과 기호에 맞추어 소스파일을 설정하거나 기능을 변경하기 쉽도록 해주는 customize 때문이다.
 

ant :  http://ant.apache.org/bindownload.cgi

다운이 완료되었다면 cygwin을 통하여 다운 받은 해당경로로  이동한다.
이동하였다면 이처럼 방금 다운받은 ant와 tomcat이 존재할 것 이다.

이제 이곳에 압축해제 명령어를 사용하여 두개의 gz을 풀어줘야하는데
풀어주기전에 명령어부터 확인해보도록 하자.

 

1. 압축하기

아래 명령어를 실행하여 압축 파일을 만들 수 있다. source_files에는 압축할 파일이나 디렉터리 목록을 적는다.

$ tar cvzf filename.tar.gz source_files

실제 예는 아래와 같다

$ tar cvzf image.tar.gz image.jpg
$ tar cvzf images.tar.gz image1.jpg image2.jpg
$ tar cvzf imagedir.tar.gz images

2. 압축풀기


아래 명령어를 실행하여 압축 파일을 풀 수 있다.

$ tar xvzf filename.tar.gz

실제 예는 아래와 같다.

$ tar xvzf image.tar.gz
$ tar xvzf images.tar.gz
$ tar xvzf imagedir.tar.gz

3. 옵션

tar 명령에 뒤에 따라오는 옵션에 대한 설명은 아래와 같다.

  • c(Create): 파일 생성
  • x(eXtract): 파일 해제
  • v(Verbose): 작업 진행상황을 화면에 출력
  • z(gZip): gzip으로 압축 또는 해제
  • f  (File)  : 파일명을 다음과 같이 지정한다는 의미
    (다음에 반드시 파일명이 따라와야 함)

    예를들어 위의 명령중, tar xvzf image.tar.gz를 보자면,
    image란 파일명으로 압축파일 gzip을 해제하겠다는 뜻이다.
     
    여기서 잠깐. 
    tar 는 압축 명령어가 아닌 여러개의 파일을 하나로 묶는 명령어이다. 즉, 여러개의 파일을 하나로 묶어주는 일종의 유틸리티 라고 할 수 있다. 따라서 위의 예제나 실제로 받은 tomcat, ant 또한 개별의 파일들이 tar라는 명령어에 의하여 묶인상태로 gzip으로 압축이 된 것 이다. 

ant부터 압축을 풀어준 상태이다.

다음은 tomcat 압축해제상태이다.

이제 압축을 모두 해제했으므로, 환경변수를 세팅해보자.
필자는 .configure에 환경변수 설정을 할 것이다.

.configure에 들어왔다면 자신이 설치한 JDK,tomcat,ant 위치로 환경 변수를 설정해주어야 한다.

 

(Tip. 위의 설정처럼 환경변수명을 JRE_HOME, CATALINA_HOME 등으로 설정한 이유.
톰캣하위경로에 JDK경로를 설정해주기 위한 JRE_HOME 이라는 환경변수가 선언되어있다.
따라서 환경변수명을 다르게 지정해주면 안되고, 이미 지정되어있는 JRE_HOME이라는 변수에
경로 설정을 해주어야 하는 것이다.
이처럼 tomcat/bin경로에서 catalina.sh에 들어가보면 이미 CATALINA_HOME, JRE_HOME등의 변수가
지정되어있는 것을 볼 수 있다.)


위와 같이 설정을 끝냈다면
. .configure를 입력하여 적용을 시켜준다.
(여기서 . .configure의 의미는?
우선 파일명앞의 ' . '은 숨김파일을 의미한다. 그러므로 .configure는 숨김파일이란 뜻이다.
그렇다면 또 그앞의 ' . ' 은 무엇을 의미할까?
이것은 source라는 명령어와 동일한 기능을 갖는 .(점)이다.!
soure 명령어는 script를 읽어서 실행하게 하는 명령어이다.
즉,
. .configure는 source .configure 와 같은 의미인것이다.)
그러나 매번 cygwin을 접속할때마다 쳐주기엔 참 귀찮은일이다.
따라서 cygwin 실행시 사용자의 별 다른 명령어 입력이 없더라도 자동적으로 실행되는
bash_profile 에 초기에 실행되길 원하는 명령어 . .configure를 적용시켜준다.

 

(Tip. 위처럼 bash_profile에만 . .configure와 같이 적용을 시켜줘야하는가?
 위에서 말했듯이, bash_profile은 cygwin 접속시에 사용자의 별다른 명령어없이 자동적으로 실행이되는
쉘이기 때문에 이 곳에 . .configure와 같은 설정을 해주었다. 그러나사용자의 별다른 명령어없이
자동적으로 실행되는 쉘은 bash_profile뿐만은 아니다.
먼저
 .bash_profile이 있으면 이파일을 찾고, 이파일이 없으면 .bash_login을 찾고, 이것도 없으면 .profile을 찾아 실행한다. 만약 .bash_profile이 있을땐, .bashrc파일도 있으면 이 파일도 읽어들인다.
따라서 방금 말한 쉘들에만 적용하면 되는 것 이다.
)



이제 마지막으로 내가 설정한 환경변수를 확인해보고 설치를 마치도록한다. 
(env - 환경변수의 목록을 보여준다.)

'여러가지 설치' 카테고리의 다른 글

cygwin설치  (0) 2013.01.07
posted by changhozz 2013. 1. 7. 11:48

cygwin 설치방법.

www.cygwin.com에서
Install Cygwin ㅡ> setup.exe를 클릭하여 다운로드를 받는다.

다운받은 setup.exe를 설치를 시작해보자.
다음과 같은 화면처럼 별다른 설정이 필요없는 경우 <다음>을 클릭한다.

 

 

Choose A Download Site화면이 나오게되면 선택되어있는 것 처럼
 ftp://ftp.jaist.ac.jp를 클릭하여 <다음>을 클릭한다. 
국내에서도 KAIST 등 학교나 기관에서 서버를 제공하고 있지만,
일본의 JAIST 속도가 빨라서 여기서 받는 것이다.
왜 이러한 site를 클릭하여 다운을 받는지 궁금하다면 미러링의 개념이 필요하다.
(mirroring :  특정 지역의 사용자들이 더욱 빠르게 액세스할 수 있고,
원래 사이트에 몰리던 부하를 분산시키기 위해, 한 사이트에 있는 파일의 일부 또는 전부를 복사하여
다른 웹사이트에 저장, 운영하는 것이다. )

 

다음으로 Select Package 화면에서 무엇을 설치할지는 본인 선택이지만, 
나같은 경우엔
Editor ㅡ> vim (윈도우로 치면 메모장과 같은 기능임.)
web ㅡ>wget,wput 을 선택 설치하였다.
(wget ㅡ>ftp 서버 등에 파일을 다운로드할 때 간단하게 사용할 수 있는 프로그램)
(wput ㅡ>ftp 서버 등에 파일을 업로드할 때 간단하게 사용할 수 있는 프로그램)
사용법. wget http://changhozz.tistory.com/download/뭐뭐파일.tar.gz
         


 

 

설치가 완료되었다면 이제 cygwin에 tomcat과 ant를 설정해보도록 하자.

 

'여러가지 설치' 카테고리의 다른 글

cygwin tomcat,ant설정  (0) 2013.01.08