IT TIP

Spring MVC 뷰 레이어를위한 JSP의 대안

itqueen 2020. 10. 15. 22:10
반응형

Spring MVC 뷰 레이어를위한 JSP의 대안


나는 처음부터 새로운 앱을 만들고 싶어하며 아마도 Spring MVC와 아마도 Spring Web Flow를 사용할 것입니다. Spring Roo가 만든 프로젝트는 Spring MVC와 선택적으로 Web Flow를 사용합니다. 보기 기술에 대한 좋은 대안은 무엇입니까? 아니면 Spring 및 JSTL taglibs 및 jQuery를 사용하는 JSP가 갈 길입니까?


표준 Java EE API에서 JSP의 유일한 대안은 Facelets 입니다. 지금까지 (2010 년) JSF 는 기본적으로 Facelet을 지원하는 유일한 MVC 프레임 워크입니다.

Spring MVC는 기본적으로 JSP 만 지원하지만, 어쨌든 Facelet 을 사용할 수 있는 구성 가능한 뷰 리졸버 가 있습니다 . 다른 후보로는 Velocity , FreemarkerThymeleaf 와 같은 타사 템플릿 프레임 워크 가 있으며 Spring MVC의보기 기술로 구성 할 수 있습니다. Spring 문서에는 Velocity 및 Freemarker와의 통합 예제 가 있습니다.


나는 최근에 Thymeleaf를 발견 했습니다 .

JSP를 완전히 대체하고 Spring MVC와 통합되었습니다. 템플릿 접근 방식은 HTML과 비슷해 보이며 UI 디자이너가 더 좋아할 수 있습니다. 솔루션을 나란히 비교하는 작은 글 이 있습니다.


나는 최근에 Spring MVC로 표현하기 위해 일반 HTML과 jQuery를 사용하여 JSON보기 만 생성하기 시작했습니다.

지금까지는 꽤 잘 진행되고 있지만 자바 스크립트 작업을해야하더라도 디자이너와의 상호 작용이 훨씬 쉬워지고 HTML을 JSP로 변환 할 필요가 없기 때문에 변경 사항이있을 때 처리 시간이 단축됩니다. 배심원 단은 여전히 ​​전반적인 사이트 유지 관리에 대해 논의하고 있습니다.


Spring MVC에서 원하는만큼 많은 뷰 기술을 가질 수 있습니다. 내가 가진 프리 마커 및 JSP 뷰 리졸버. FreeMarker에서 너무 복잡하거나 JSP에서 더 편리하다는 뷰를 만나면 JSP 뷰를 만듭니다. 예를 들어 Spring with JSTL은 훌륭한 작업 처리 양식을 만듭니다. 이를 위해 JSP 뷰를 사용하지만 다른 거의 모든 경우에는 FreeMarker 뷰가 있습니다.

기본적으로 여러 뷰 리졸버를 구성하는 방법을 보려면 Spring MVC 문서를 살펴보십시오.

<bean name="freeMarkerViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
   <property name="cache" value="true"/>
   <property name="prefix" value=""/>
   <property name="suffix" value=".ftl"/>
   <property name="order" value="1"/> <!--NOTICE THE ORDER-->
</bean>

<bean id="jspViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
    <property name="order" value="2"/> <!--NOTICE THE ORDER-->
</bean>

Springs 3 문서 는 또한 FreeMarker 를 제안 합니다. Freemarker는 (내가 말할 수있는 한) 빠르며 바인딩과 같은 Spring 기능의 일부 통합이 있습니다.


Spring MVC는 다양한 뷰 기술 과의 통합을 제공합니다 . FreeMarker 또는 Velocity 사용을 권장 합니다.


이것은 오래된 질문이지만 Scalate 인 유망한 대안을 제공 할 것이라고 생각 했습니다 .

Scalate는 템플릿 옵션의 강점입니다. 유일한 문제는 Scalate에 많은 종속성이 필요하다는 것입니다 (Scala가 필요하지만 Scala로 작성할 필요가 없음).

내가 가장 좋아 하는 것은 Spring 통합이있는 Handlebars.java 이다.


(내 이전 답변은 여기에서 날짜가 잘못되었습니다.) Freemarker는 적어도 Velocity만큼 좋습니다. 그러나 Thymeleaf는 레이아웃 언어와 함께 사이트 메시 및 타일과 같은 템플릿 프레임 워크를 불필요하게 만들 수 있으므로 훨씬 더 매력적으로 보입니다. JSF의 경우 Thoughtworks의 비판 이 타당 해 보입니다.

계속해서 팀이 JSF (JavaServer Faces)를 사용하는 데 문제가 발생하는 것을보고 있으며이 기술을 피할 것을 권장합니다. 프로그래밍 모델이 적합한 지 여부를 실제로 평가하지 않고 Java EE 표준이기 때문에 팀은 JSF를 선택하는 것 같습니다. 우리는 JSF의 프로그래밍 모델이 기본 웹 모델을 완전히 수용하는 대신 자체 추상화 사용을 장려하기 때문에 결함이 있다고 생각합니다. ASP.NET 웹 양식과 마찬가지로 JSF는 최상위 HTML 태그 및 상태 비 저장 HTTP 프로토콜에 상태 저장 구성 요소 트리를 만들려고합니다. 상태 비 저장 뷰의 도입 및 GET의 홍보와 같은 JSF 2.0 및 2.2의 개선 사항은 올바른 방향으로 나아가는 단계이며 원래 모델에 결함이 있다는 사실을 인정할 수도 있지만 너무 늦었다 고 생각합니다.


Stripes 와 Spring을 함께 사용 합니다. 줄무늬는 대부분의 시간을 방해하지 않지만 필요할 때 봄을 멋지게 보강합니다.


속도 와 Spring MVC를 사용 하고 있습니다. 또한 Google App Engine에서 내 애플리케이션을 호스팅하고 있는데 문제가 없습니다.


Spring MVC의 View 레이어에 Angular (클라이언트 측 프레임 워크)를 사용할 수도 있습니다.


내 제안은 위의 대부분에서 설명한 것처럼 봄 MVC 위에 작성되지 않은 뷰 프레임 워크를 보지 않는 것입니다.이 뷰 기술에서 데이터를 제출할 수 없다는 것을 의미하는 포스트 백과 같은 문제가 발생하기 때문입니다. 서버에서 응답을 받으십시오. 유효성 검사와 같은 예는 서버의 데이터로 다시 새로 고쳐지는 편집 데이터 제출은 작동하지 않습니다.

이는 위의 일부 뷰 기술에서 Java Bean이 Spring 컨테이너 라이프 사이클을 사용하지 않기 때문입니다. 순수한보기 예제 상태 비 저장 요청에만 사용할 수 있습니다. JSF의 예를 들어 jsf 포스트 백은 jsf 라이프 사이클을 사용하는 경우에만 작동하기 때문에 포스트 백을 사용할 수 없으며 스프링 프레임 워크 JSF 뷰 리졸버를 spring mvc와 함께 사용하는 경우 포스트 백을 수행 할 수 없으므로 jsf를 교체해야합니다. 스프링 mvc 컨트롤러 대신 서블릿 컨트롤러.

다시 한 번 전체 프로젝트 요구 사항이 명확하지 않기 때문에 포스트 백 요구 사항이없는 경우 위의 선택 사항 중 일부를 사용할 수 있습니다.

one example view technology which is written on top og spring mvc is zk framework based zk mvc in which you can extend your spring mvc controllers from ZK GenericForwardComposer to handle events. You can always use Spring to handle the lifecycle of these controllers using Spring framework.

you can google to find similiar other products .

This review is based on high level design of framework life cycle.

All the best !!!


I think Tiles could help you.
You can define templates and use JSTL inside.


You can run Facelets ontop of Spring Webflow


What about phpj?

It can be used as view templates or you can make your web server system from scratch

I made phpj because i dont like to having to update my application and load it with tomcat all the time, so with this i can use static locations for my web application using apache-like configurations


Apache Velocity a good alternate to Java Server Pages.

참고URL : https://stackoverflow.com/questions/2746598/alternatives-to-jsp-for-spring-mvc-view-layer

반응형