관리자 글쓰기

 본 내용은 혼자 공부하기 위하여 다른 포스트를 보면서 저에게 필요한 부분과 궁금했던 부분을 게시하는 곳입니다.


궁금한 것에 대한 것은 모르는 것이 많겠지만 함께 알아보도록 노력하겠습니다.


참조 게시 포스트 : http://addio3305.tistory.com/


-------------------------------------------------------------------------------------------------------------------------------------------

0. MVC?

MVC란 Model-View-Controller의 약자로, 사용자 인터페이스와 비지니스 로직을 분리하여 웹 개발을 하는것을 가장 큰 장점으로 한다. 


MVC 패턴도 MVC 모델 1과 MVC 모델 2로 나뉘어져 있는데, 요즘에는 MVC라고 하면 당연히 MVC 모델 2를 의미한다. 따라서 여기서는 MVC 모델 2 (이하 MVC)를 기준으로 진행한다.


MVC 패턴이란 애플리케이션을 크게 Model, View, Controller의 세 영역으로 구분하여 영역 간의 결합도를

소화한 패턴이다. 주로 웹 애플리케이션에서 사용되며, 일반 애플리케이션에서도 사용된다.

MVC 패턴의 가장 중요한 장점 중 하나는 비즈니스 로직과 프리젠테이션 로직이 분리되었다는 것이다.

즉, 디자이너와 개발자들의 영역이 분리됨으로써 서로 각자의 영역에 더 집중할 수 있다는 장점이 있다.


-- Model 영역

애플리케이션에 비즈니스 로직과 사용되는 데이터를 다루는 영역이다.

일반적으로 비즈니스 데이터는 DBMS에 의해 관리되고, 그 데이터를 다루는 연산은 SQL문을 통해 구현된다.

-- View 영역

최종 사용자에게 보여줄 프리젠테이션 로직을 담당하는 영역이다.

일반적으로 자바 웹 애플리케이션에서는 JSP를 통해서 구현된다.

-- Controller 영역

컨트롤러는 흐름을 관리하는 역할을 하며, 모델과 뷰 영역간의 조정 역할을 한다.

사용자의 요청을 받아 이를 수행하기 위한 비즈니스 로직을 선택하고 호출하며,

수행한 비즈니스 로직의 결과를 뷰를 통해 보여준다.


Model2[ = MVC 패턴 ]에서는 서블릿이 흐름을 제어하는 컨트롤러 역할을 수행한다. 모든 클라이언트의 요청은 서블릿에 전달되어 서블릿이 클라이언트의 요청에 따라 비즈니스 로직을 호출하고 그 결과에 따라 View에 해당하는 JSP를 호출하는 방식이다.

Model2가 Model1에 비해 개발 초기의 부하가 비교적 높고, 아키텍처에 대한 수준 높은 이해를 요구하지만 재사용성이 높고 확장이 Model1에 비해 용이하다. 무엇보다 Model2는 그 구조적 특징으로 인해 자연스럽게 MVC 각 영역의 역할이 구분되도록 해준다.

Model2는 Controller 역할을 하는 서블릿의 역할이 매우 중요하며, 서블릿이 잘못 개발된 경우 애플리케이션 전체에 미치는 영향이 매우 크다. 현재는 많은 시행 착오 끝에 웹 프레임워크 형태로 보급되어 그러한 오류를 방지하고 있다.



출처 : http://blog.daum.net/gunsu0j/165


1. Spring 라이브러리 추가(pom.xml)

pom.xml은 필요한 라이브러리들을 메이븐을 이용하여 관리할 수 있도록 하는 역할을 한다.


밑의 코드에 당장 쓰이는 코드는 아니지만 앞으로 게시판을 만드는데 필요한 라이브러리들이다.


1.1 pom.xml의 구조에 대한 설명

첫번째로 <properties></properties> 태그는 변수의 개념으로 생각하면 된다. 우리가 프로그래밍을 하면서 어떠한 값은 상수 (java에서 final static 으로 선언)로 선언하는 경우가 많은데, 이는 그 변수는 여기저기서 많이 사용되는 변수이기 때문이다. 이러한 변수를 직접 소스 여기저기에 일반적인 값으로 써놓으면, 그 값을 변경해야 할 경우, 모든 소스에서 일일이 변경해야하는 경우가 발생한다. 이럴때, 상수로 선언해놓고, 그 하나만 변경하면 쉽게 값을 변경하면서도 다른 소스는 수정할 필요가 없다. 

여기서도 마찬가지로 많이 사용되는 값은 변수로 지정하여, 추후 수정이 용이하도록 되어있다. 

예시로 <org.springframework-version>3.2.4.RELEASE</org.springframework-version> 라는것을 볼 수 있는데, 이 글을 시작할때 Spring 3.2.4 버전을 사용하기 때문에, 이 값을 이렇게 선언하였다. 만약 스프링 버전을 변경하고 싶으면 이 변수만 바꿔주면 된다.


다음은 <repositories></repositories> 태그다.
이는 실제 라이브러리를 다운받을 저장소를 의미한다. 보통은 따로 설정할 필요가 없다. 하지만 프로젝트를 진행하다보면 인터넷에 연결할 수 없는 프로젝트도 상당히 많은데, 이럴때 내부 저장소를 만들어놓고, 개발자들은 내부저장소에서 라이브러리를 다운받도록 되어있다. 
여기서는 인터넷에서 라이브러리를 받으면서, 추가로 전자정부 프레임워크의 기능 중 하나를 사용하기 위해서 전자정부 프레임워크 저장소도 같이 추가했다.


그 다음으로 <dependencies><dependencies> 태그는 실제 라이브러리를 지정한다. 

라이브러리는 다음과 같은 형태로 구성된다. 


2. 설정 파일 변경

2.1 UTF-8 설정

다음을 web.xml에 추가한다.

	<filter>
    	<filter-name>encodingFilter</filter-name>
		<filter-class>
		        org.springframework.web.filter.CharacterEncodingFilter
		</filter-class>
		<init-param>
		    <param-name>encoding</param-name>
		    <param-value>utf-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
	    <filter-name>encodingFilter</filter-name>
		<url-pattern>*.do</url-pattern>
	</filter-mapping>

2.2 Spring 설정 파일 추가
Spring 설정파일을 추가한다. 기존에 <context-param> 태그의 <param-value>태그안에는 아마 아무것도 작성되지 않았을 것이다. 이제 본격적인 스프링 설정파일을 읽어오기 위해서 다음과 같이 바꾼다.

<param-value>classpath*:config/spring/context-*.xml</param-value>

이는 앞에서 설명한것과 비슷하게 context-로 시작하는 모든 .xml 을 읽어오는것을 뜻한다.
여기서 지금 이렇게 추가하면 context-XXXXXX.xml 파일이 없기 때문에 에러가 날 것이다. 일단 작성만 해 놓고 주석처리하도록 한다. 



이번에도 서버 시작시 별다른 에러가 없다면 잘 따라오고 있는 것이다.