簡體   English   中英

JSP for Spring MVC視圖層的替代方案

[英]Alternatives to JSP for Spring MVC view layer

我想從頭開始創建一個新的應用程序,可能會使用Spring MVC和Spring Web Flow。 Spring Roo創建的項目使用Spring MVC和Web Flow。 什么是視圖技術的一些很好的替代品,或者是帶有Spring和JSTL taglib和jQuery的JSP的方法?

我最近發現了Thymeleaf

它看起來是JSP的完全替代品,並與Spring MVC集成。 模板方法看起來更像HTML,對UI設計者來說可能更適合。 他們有一個小寫,可以並排比較兩種解決方案

在標准Java EE API中,JSP的唯一替代方法是Facelets 到目前為止(2010), JSF是唯一本機支持Facelets的MVC框架。

Spring MVC支持開箱即用的JSP,但它有一個可配置的視圖解析器 ,無論如何都允許你使用Facelets 其他候選者是第三方模板框架,如VelocityFreemarkerThymeleaf ,可以配置為Spring MVC的視圖技術。 Spring文檔包含Velocity和Freemarker的集成示例

我最近開始使用純HTML和jQuery進行演示,只使用Spring MVC創建JSON視圖。

到目前為止,它還是很順利,即使我必須完成javascript工作,它還可以讓我更輕松地與我的設計人員進行交互,並且在他進行更改時可以更快地完成周轉時間,因為我不需要將他的HTML轉換為我的JSP。 評審團仍然對整體網站的可維護性有所了解。

Springs 3文檔也建議使用FreeMarker Freemarker是(據我所知)快速並且有一些Spring功能的集成,如綁定。

您可以在Spring MVC上擁有任意數量的視圖技術。 我有FreeMarker和JSP視圖解析器。 當我遇到一個在FreeMarker中太復雜的視圖(或者在JSP中更方便)時,我創建了一個JSP視圖。 例如,使用JSTL的Spring可以很好地處理表單。 為此,我使用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>

Spring MVC提供了許多不同視圖技術的集成。 我建議使用FreeMarkerVelocity

雖然這是一個古老的問題,但我認為我會提供一種新的替代品,即Scalate

Scalate是模板選項中的強者。 唯一的可能性是Scalate需要很多依賴(雖然它需要Scala,但它不需要你在Scala中編寫)。

我目前最喜歡的是Handlebars.java ,它確實有Spring集成。

(我之前的回答是在這里過時了。)Freemarker至少和Velocity一樣好。 但Thymeleaf看起來更引人注目,與布局方言一起,它可能會使像sitemesh和tiles這樣的模板框架變得不必要。 對於JSF, Thoughtworks的批評似乎是有效的:

我們繼續看到團隊使用JSF - JavaServer Faces遇到麻煩 - 並且建議您避免使用這種技術。 團隊似乎選擇了JSF,因為它是一個Java EE標准,沒有真正評估編程模型是否適合它們。 我們認為JSF存在缺陷,因為它的編程模型鼓勵使用自己的抽象而不是完全接受底層Web模型。 與ASP.NET webforms一樣,JSF嘗試在頂級HTML標記和無狀態HTTP協議上創建有狀態組件樹。 JSF 2.0和2.2的改進,例如無狀態視圖的引入和GET的推廣,是朝着正確方向邁出的步驟,甚至可能是對原始模型存在缺陷的認可,但我們覺得這太晚了。 我們建議團隊使用簡單的框架並與Web技術(包括HTTP,HTML和CSS)緊密配合,而不是處理JSF的復雜性。

我一起使用Stripes和Spring。 Stripes在大部分時間都不會讓你失望,但是當你需要的時候,它會很好地增加Spring。

我正在使用velocity和Spring MVC。 此外,我在Googles App引擎上托管我的應用程序,我沒有任何問題。

您還可以在Spring MVC中為View層使用Angular(客戶端框架)。

我認為Tiles可以幫到你。
您可以定義模板並在里面使用JSTL。

我的建議不是看上面大部分內容中描述的視圖框架,這些框架沒有寫在spring MVC之上,因為你最終會遇到像回發這樣的問題,這意味着你將無法從這個視圖技術中提交數據並從服務器獲取響應。 例如驗證,編輯數據提交,使用來自服務器的數據刷新將無法正常工作。

這是因為視圖技術上面的一些java bean不使用Spring容器生命周期。 您將只能將它們用於純視圖示例無狀態請求。 使用JSF的例子你將無法使用回發,因為jsf回發僅在你使用jsf生命周期時才有效,如果你使用Spring框架JSF視圖解析器與spring mvc你將無法做回發所以你需要替換jsf servlet控制器代替spring mvc控制器。

再次,因為您的完整項目要求不明確,如果您不想要回發要求,您可以使用上述一些選項。

一個示例視圖技術,寫在頂部og spring mvc是基於zk框架的zk mvc,您可以在其中擴展您的spring mvc控制器從ZK GenericForwardComposer來處理事件。 您始終可以使用Spring來使用Spring框架處理這些控制器的生命周期。

你可以谷歌找到類似的其他產品。

該評論基於框架生命周期的高級設計。

祝一切順利 !!!

您可以在Spring Webflow上運行Facelets

phpj怎么樣?

它可以用作視圖模板,也可以從頭開始構建Web服務器系統

我做了phpj,因為我不想更新我的應用程序並一直用tomcat加載它,所以有了這個,我可以使用靜態位置為我的Web應用程序使用類似apache的配置

Apache Velocity是Java Server Pages的一個很好的替代品。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM