펭귄집

모델2에서 Front Controller패턴으로


Front Controller 적용원인

1. 각 컨트롤러 사이의 중복적인 코드의 문제

2. 개발자의 개발패턴의 차이

=> 이로인해 모델2방식은 좀 더 강제적인 형태인 Front Controller방식을 적용


Front Controller패턴의 가장 중요한 변화는 전체 로직의 일부만을 컨트롤러가 처리하도록 변경 == '위임' (Delegation)

전체로직의 일부를 컨트롤러에게 위임하고 모든 흐름의 제어는 앞쪽의 Fornt Controller가 담당
-> 이런 구조를 사용하게 될 경우
     1. 개발자가 작성하는 컨트롤러는 전체 로직의 일부분만을 처리 => 개발자가 작성해야 하는 전체코드가 줄어듬
     2. 모든 컨트롤러는 Front Controller의 일부분을 구현한느 형태이므로, 좀 더 규격화된 코드 구현 가능




<참고문헌 : 코드로 배우는 Spring 웹 프로젝트>

'전공서적 > 코드로 배우는 Spring 웹 프로젝트' 카테고리의 다른 글

모델2패턴의 이해  (0) 2017.10.24

델2패턴의 이해


스프링 MVC는 모델2방식 구조르 이요하기 때문에 이론적으로 모델2방식에 대한 이해가 필요하다


최근의 모든 웹 개발은 거의 모델2방식을 사용한다.


모델2방식은 흔히 MVC구조를 응용하는 것이라고 생각하는데 가장중요한것 

 -> 화면과 데이터 처리를 분해해서 재사용이 가능하도록 하는 구조


모델2구조에서는 다음과 같은 용어들이 사용된다

 모델(Model)

데이터 혹은 데이터를 처리하는 영역을 의미한다 

뷰(View) 

결과 하면을 만들어 내는 데 사용하는 자원이다 

컨트롤러(Controller) 

웹의 요청(request)을 처리하는 존재로 뷰와 모델사이의 중간 통신 역할을 한다   


컨트롤러는 모델계층과 연동해서 필요한 데이터를 처리하고, 결과를 뷰로 전송하게 된다.


모델2에서 모든 요청은 기본적으로 컨트롤러를 호출한다.
각 컨트롤러는 자신을 호출하는 특정한 URL경로를 가지고 있다.


  모델2방식의 장점

 개발자와 웹 퍼블리셔의 영역을 분리할 수 있다 

 컨트롤러의 URL을 통해서 뷰를 제어하기 때문에, 뷰의 교체나 변경과 같은 유지보스에 유용 




<참고문헌 : 코드로 배우는 Spring 웹 프로젝트>

함수 호이스팅



함수를 생성하는 3가지 방법이 있는데 동작방식이 약간의 차이가 있다. 

=> 그 중 하나가 함수 호이스팅(Function Hoisting)


함수표현식만을 사용할 것을 권장하는데 그 이유는 함수 호이스팅때문

//함수 선언문 방식과 함수 호이스팅

//1번
add(2,3);  // 5

//함수 선언문 형태로 add() 함수 정의
//2번
function add(x,y) {
     return x + y;
}

//3번
add(3,4);  // 7


1번
이 시점에서 add()함수가 정의되지 않았음에도 2번에 정의된 add()함수를 호출하는 것이 가능하다.
-> 이것은 함수가 자신이 위치한 코드에 상관없이 함수 선언문 형태로 정의한 함수의 유효범위는 코드의 맨 처음부터 시작한다는 것을 확인할 수 있다.
=> 이것이 함수 호이스팅

3번

2번에서 정의된 add() 함수가 정상적으로 호출


이러한 함수 호이스팅은 함수를 사용하기 전에 반드시 선언해야한다는 규칙을 무시하므로 코드의 구조를 엉성하게 만들 수도 있음
-> 함수 표현식 사용 이유

함수 표현식으로하면 위의 결과가 달라


//함수 표현식 방식과 함수 호이스팅
//1번
add(2,3);  //uncaught type error

//함수 표현식 형태로 add()함수 정의
//2번
var add = function(x,y){
     return x + y;
}

//3번
add(3,4);  //7


1번
add()함수는 2번에서 함수 표현식 형태로 정의되어 있어 호이스팅이 일어나지않는다.
-> 따라서 3번과 같이 함수가 생성된 이후에 호출이 가능.
1번에서는 add()함수를 호출한 시점에서 아직 add()함수가 생성되기 전이므로 uncaught type error 에러가 발생

3번

add()함수가 생성된 후에는 함수가 정상적으로 동작한다는 것을 확인 가능


이러한 함수 호이스팅이 발생하는 원인은 자바스크립트의 변수생성(Instantiation)초기화(Initialization) 작업이 분리돼서 진행되기 때문


<참고문헌 : 인사이드자바스크립트>

'전공서적 > 인사이드자바스크립트' 카테고리의 다른 글

배열  (0) 2017.10.26
객체비교  (0) 2017.10.25
자바스크립트 참조타입(객체타입)  (0) 2017.08.30
null 과 undefined  (0) 2017.08.30
문자열  (0) 2017.08.30