2011-02-04 3 views
3

필자는 프론트 엔드 개발자로서 jsp 뷰 레이어에서 자신을 발견하고 데이터 (모델)를 뷰로 푸시하는 꽤 많은 솔루션을 보았습니다. 최근에는 jsp로 데이터를 가져 오는 taglib 솔루션이 등장했습니다.이 솔루션은 좀 더 자연스럽고 합리적인 것 같습니다. 단일 페이지와 별도의 실체로 보는 감안할 때 문제MVC 대 Taglibs, 의견/대안?

첫째, MVC는 단 하나의 페이지가 매우 복잡 할 수 있습니다, 절대 의미가 가장 가능성이 다른에 사용되는 구성 요소/서비스를 재사용 페이지. 결과적으로 컨트롤러는 다소 복잡해집니다.

내 경험에 의하면 클라이언트는 기능을 이전하거나 다음 사이트의 "재 설계"에서 전체 사이트를 바꿀 수 있기 때문에 페이지도 변경할 수 있습니다. 이것은 대개 문자 그대로 모든 것을 다시 작성해야하는 지루한 리팩토링 프로젝트로 이어집니다.

일관성 문제가 있습니다. 한 페이지에서 데이터 세트를 ModelView에 "목록"으로 넣고 "목록"을 추상화하는 다른 페이지에는 ModelView에 "특정 목록"으로 넣습니다. 프로젝트 라이프 사이클 동안 일관성을 유지하는 것은 지루한 평범한 작업이되며 대개는 피할 수 있지만 이것은 순수한 MVC 솔루션에서 발생합니다.

솔루션?

최근에 내가 상속 한 프로젝트에서 데이터를 pageView로 가져 오는 두 가지 솔루션을 보았습니다. 첫 번째 방법은 jsp : include를 사용하여 jsp 페이지를 호출하고 다른 컨트롤러를 실행하는 것보다는 다소 추악합니다.

두 번째로 나는 우아한 것으로 판명되었는데, taglib을 사용하여 특정 데이터 세트를 pageView로 가져 왔습니다. taglib은 TLD 안에 문서화되어있어 사용하기가 즐거웠습니다. 갑자기 컨트롤러를 망칠 필요없이 여러 페이지에서 데이터를 재사용 할 수있었습니다.

그래서이 프로젝트에서 필자는 "재 설계"를 구현해야했고 모든 데이터를 가져 오는 솔루션으로 인해 작업이 훨씬 쉬워졌습니다. 그러나 데이터 삽입 (MVC)을 사용하는 지점에서는 엉덩이에 통증이있었습니다. 'm Java 개발자가 아닙니다.) 및 Java 개발자가 누구에게도 거의 도움이되지 않습니다.

또한 taglibs는 올바르게 쓰여질 수 있지만 데이터 주입 (MVC)을 사용하는 것은 지속적으로주의해야 할 어린이가 될 수 있습니다 (JSP 맨 위에).

태그 라이브러리 예제

이의 우리는 다음과 같은 태그 정의/구현과 services.tld 있다고 가정 해 봅시다.
- getEmployeeAddress
- getEmployees

<services:getEmployees filter="a"> 
    <!-- loop, get addresses, otherwise if empty list, render nothing --> 
</services:getEmployees> 

이것은 나를합니다 (frontender이) 거의 모든 페이지 직원과 주소를 표시 할 수 있습니다 더 중요한 작업을위한 자바 디바이스를 해제합니다. 이 서비스는 pageView 컨트롤러에서 별도로 테스트 할 수 있습니다. pageView 컨트롤러는 훨씬 덜 복잡해지고 (예를 들어 인증 및 사이트 전반의 기능 만 처리하는 등) 삶은 (적어도 나에게는) 훨씬 더 재미있을 것입니다.

내 질문 실제로

여러 부분 :

1.) 내 추론 쓰레기가 만일 그렇다면, 왜, 어떤 관점에서? = P

2.) 더 좋은 대안이 있습니까? (예를 들어 타일도 사용했습니다.)

3) 위에서 언급 한 taglib 솔루션을 사용하고 있습니까? 귀하의 경험은 어떻습니까?

4. 자바 개발자의 관점에서 위의 taglib 솔루션의 비용/이점/위험은 무엇입니까?

MVC가 Java 개발자에게는 단순한 이유를 이해합니다.하지만 경험상 (sofar) jsp 계층으로 어려움을 겪고 있습니다. 때때로 각 페이지마다 별도의 API를 배워야 할 필요가 있습니다. 프론트 엔드 개발자로서, 나는 데이터가 페이지 로딩시 사용 가능한 모든 데이터를 가지고있는 Ajax와 모든 지글 지글 소리를 사용하여 자연스럽게 나타난다는 것을 인정한다 ...

+1

아, 비즈니스 논리가 속한 곳에서 모두 자유롭게 나가십시오. – BGerrissen

답변

1

분명히 들었어. JSP에서 비즈니스 로직을 구현하는 것이 바람직하지 않다는 진언. 하지만 왜 그걸 이해하니?

기술적 문제로 인해 HTTP 응답이 커밋되는 문제가 있습니다.

MVC 기반 시스템에서 컨트롤러는 매개 변수를 확인하고 수행해야 할 작업을 결정한 다음이를 시도합니다. 그런 다음 응답 상태 코드를 설정하고 응답에 표시 할 데이터를 가져옵니다. 마지막으로 뷰 (예 : JSP)를 선택하고 JSP 엔진에 제어 권한을 부여하여 HTTP 응답을 커밋합니다.

JSP에서 모든 작업을 수행하려고하면 HTTP 응답이 너무 빨리 커질 수 있습니다. 즉 비즈니스 논리가 올바른 HTTP 상태 코드가 무엇인지 판단 할 작업을 수행하기 전에


MVC와 귀하의 불만이 크게 컨트롤러와 뷰합니다 (JSP)가 다른 사람에 의해 구현되는 당신의 가정에서 파생 된 것으로 보인다

: 즉, "프론트 엔드 개발자"및 비가 "자바 개발자" 겹치는 스킬 셋과 책임 영역. 필자가 취해야 할 것은 "울타리"의 양면에서 일할 기술을 가진 "개발자"만 있어야한다는 것입니다. 사실 울타리가 있어서는 안됩니다.

+0

아! 당신이 말한대로, 그것은 MVC의 잘못이 아니라 개발자입니까? [풍자] @BGerrisan 다음 번에 MVC로 공인 된 개발자 만 채용하는 것이 교훈입니다. [/ 풍자] – Christian

+1

@Christian - 건설적인 답변을 직접 제공 할 예정입니까? 아니면 그냥 냉소적 인 저격? –

+0

아, MVC (* gasp *)를 사용하지 않을만큼 충분하다고 생각합니다. – Christian