복붙노트

[SPRING] Spring MVC 프레임 워크를 통해 다른 JSP를 포함시키는 것이 좋은 생각인가?

SPRING

Spring MVC 프레임 워크를 통해 다른 JSP를 포함시키는 것이 좋은 생각인가?

이것은 모호하고 웅장한 질문이지만 가능한 한 구체적인 예를 들어 설명하지 않기를 바랍니다.

우리는 최근에 애플리케이션 프레임 워크 용으로 Spring MVC로 전환했지만 개발 중에는 적절한 모델에 동적 뷰를 포함하는 방법을 발견했습니다.

예를 들어 재사용 가능한 조각이 포함 된 페이지를 작성하고 있습니다. 왼쪽에는 "random q and a fragment"가 있고 위에는 일반적인 "navigation"단편이 있습니다.

이러한 조각에는 각각 다른 모델이 필요합니다. 저는 "탐색"부분을 만들어서 "q와 a"모델, 컨트롤러 및 로직을 완전히 분리 한 탐색 모델, 컨트롤러 및 뷰를 만드는 개발자에게 지시했습니다. 이는 다른 페이지 레이아웃이 "탐색"을 원하지만 "q 및 a"또는 부사를 요구하지 않는 경우 재사용 성을 장려하기위한 것입니다.

내가 이걸 어디로 가는지 보여? "홈"페이지에는 두 조각이 모두 포함되어 있지만 조각이 필요로하는 컨트롤러 / 모델 /보기를 "알지 못하는"것이 좋습니다.

나는 다음과 같은 방식으로 스프링 MVC를 사용하도록 개발자에게 지시했다 ....

home.jsp의 예 :

<body>
    <div class="top">
        <jsp:include page="/navigation"/>
    </div>
    <div class="left">
        <jsp:include page="/randomgQuestion"/>
    </div>
</html>

아이디어는 요구되는 시점에 필요한 다른 조각들이 그들이 필요로하는 모델과 함께 동적으로 끌어 당겨질 것입니다.

이것은 좋은 생각입니까? 더 좋은 방법이 있습니까?

토론은 환영하지만 건설적인 자세를 가져주십시오.

목표는 재사용 가능성과 멍청한 견해입니다.

요청시 모든 업데이트 또는 설명을 제공 할 것입니다. 고맙습니다.

해결법

  1. ==============================

    1.설명하는 내용은 포털 / 포틀릿 기능 (JSR-286) => 즉 응용 프로그램 (포털)이 다른 임베디드 응용 프로그램 (포틀릿)에서 생성 된 내용으로 구성된 웹 페이지를 생성하는 것과 같습니다. 포털은 JSR-286 기능을 제공하기 위해 INCLUDE 디스패치 (와 동일)를 사용하고 있습니다. 따라서이 관점에서 볼 때 를 사용하여 재사용 가능한 콘텐츠 블록을 제공하고 각각의 MVC 라이프 사이클을 공유하는 것이 좋습니다 (동일한 요청 속성 네임 스페이스를 공유 함).

    설명하는 내용은 포털 / 포틀릿 기능 (JSR-286) => 즉 응용 프로그램 (포털)이 다른 임베디드 응용 프로그램 (포틀릿)에서 생성 된 내용으로 구성된 웹 페이지를 생성하는 것과 같습니다. 포털은 JSR-286 기능을 제공하기 위해 INCLUDE 디스패치 (와 동일)를 사용하고 있습니다. 따라서이 관점에서 볼 때 를 사용하여 재사용 가능한 콘텐츠 블록을 제공하고 각각의 MVC 라이프 사이클을 공유하는 것이 좋습니다 (동일한 요청 속성 네임 스페이스를 공유 함).

    또한 JSP 사이에서 재사용하려는 간단한 조각 만 있으면 간단한 <% @ include file = "menu.jspf"%>가 더 적합 할 수도 있습니다.

    또한 JSP 태그 기능을 언급해야한다고 생각합니다 ... 재사용 가능한 콘텐츠를 JSP 태그 파일 (/WEB-INF/tags/[taglib-folder/]*.tag)로 만들면 몇 가지 고급 레이아웃 기능을 제공 할 수 있습니다. 더욱 고급 기능을 위해 Java 기반 태그 라이브러리를 구현할 수 있습니다.

    하나의 프로젝트에서 커스텀 TAG를 사용하고 지시어를 포함하는 방법을 설명하기 위해 다음은 단일 JSP 뷰입니다.

    <%@ include file="/WEB-INF/taglib.jspf" %>
    <layout:admin section="test">
        <layout:admin-context />
        <layout:admin-content>
            <h1><spring:message code="test.overview.heading" /></h1>
            <h2><spring:message code="test.detail.heading" /></h2>
            <%@ include file="test-detail.jspf" %>
        </layout:admin-content>
    </layout:admin>
    

    INCLUDE 디스패치 (즉, )가 필요할 유스 케이스는 없었습니다.

  2. ==============================

    2.당신의 UI 측면에서, Apache Tiles와 Sitemesh는 당신이 여기서보고 싶어 할 것입니다.

    당신의 UI 측면에서, Apache Tiles와 Sitemesh는 당신이 여기서보고 싶어 할 것입니다.

    컨트롤러 레이어 측면에서, Spring은 @ControllerAdvice 어노테이션을 가지고 있는데,이 애노테이션을 사용하여 모든 컨트롤러의 범위에 모델 속성을 배치 할 수 있습니다. 예를 들어 탐색 모델을 @ControllerAdvice에 배치 한 경우 다른 컨트롤러는이를 모델 속성으로 설정하는 것에 대해 걱정할 필요가 없습니다.

    http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html

  3. from https://stackoverflow.com/questions/23604033/is-including-other-jsp-via-the-spring-mvc-framework-a-good-idea by cc-by-sa and MIT license