[英]Alternatives to JSP for Spring MVC view layer
我想從頭開始創建一個新的應用程序,可能會使用Spring MVC和Spring Web Flow。 Spring Roo創建的項目使用Spring MVC和Web Flow。 什么是視圖技術的一些很好的替代品,或者是帶有Spring和JSTL taglib和jQuery的JSP的方法?
我最近開始使用純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提供了許多不同視圖技術的集成。 我建議使用FreeMarker或Velocity 。
雖然這是一個古老的問題,但我認為我會提供一種新的替代品,即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.