JSP for Spring MVC视图层的替代方案

时间:2010-04-30 17:59:58

标签: java jsp spring-mvc

我希望从头开始创建一个新的应用程序,可能会使用Spring MVC和Spring Web Flow。 Spring Roo创建的项目使用Spring MVC和Web Flow。什么是视图技术的一些很好的替代品,或者是带有Spring和JSTL taglibs和jQuery的JSP的方法?

16 个答案:

答案 0 :(得分:51)

我最近发现了Thymeleaf

它看起来是JSP的完全替代品,并与Spring MVC集成。模板方法看起来更像HTML,对UI设计者来说可能更适合。他们有一个小写,比较两个solutions并排。

答案 1 :(得分:49)

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

Spring MVC支持开箱即用的JSP,但它有一个可配置的view resolver,允许你使用Facelets。其他候选者是第三方模板框架,例如VelocityFreemarkerThymeleaf,可以配置为Spring MVC的视图技术。 Spring文档与Velocity和Freemarker有integration examples

答案 2 :(得分:17)

我最近开始使用纯HTML和jQuery进行演示,只使用Spring MVC创建JSON视图。

到目前为止它已经进展顺利了,即使我必须完成javascript工作,它还可以让我更轻松地与我的设计师进行交互,并且在他进行更改时可以更快地完成周转时间,因为我不需要将他的HTML转换为我的JSP 。评审团仍然对整体网站的可维护性有所了解。

答案 3 :(得分:15)

Springs documentation也建议Freemarker。 Freemarker是(据我所知)快速并且具有一些Spring功能的集成,如绑定。

答案 4 :(得分:15)

您可以在Spring MVC上拥有任意数量的视图技术。我有freemarker和JSP视图解析器。当我遇到一个在Freemarker中太复杂的视图(或者在JSP中更方便)时,我创建了一个JSP视图。例如,Spring JSLT在处理表单方面做得很好。为此,我使用JSP视图,但对于其他所有其他我都有自由标记视图。

查看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>

答案 5 :(得分:9)

Spring MVC提供了与许多不同view technologies的集成。 我建议您使用FreeMarkerVelocity

答案 6 :(得分:8)

虽然这是一个老问题,但我认为我会提供一个新的Scalate替代方案。

Scalate是模板选项中的强者。唯一的可能性是Scalate需要大量的依赖(虽然它需要Scala,但它不需要你在Scala中编写)。

我目前最喜欢的是Handlebars.java,它确实有Spring集成。

答案 7 :(得分:5)

(我之前的回答是在这里过时了。)Freemarker至少和Velocity一样好。但Thymeleaf看起来更引人注目,与布局方言一起,它可能会使像sitemesh和tiles这样的模板框架变得不必要。 对于JSF,Thoughtworks' criticism似乎有效:

  

我们继续看到团队使用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的复杂性。

答案 8 :(得分:3)

我一起使用Stripes和Spring。条纹在大多数情况下都不会让你失望,但是当你需要它时,它会很好地增加Spring。

答案 9 :(得分:3)

我正在使用velocity和Spring MVC。此外,我在Googles App引擎上托管我的应用程序,我没有任何问题。

答案 10 :(得分:3)

您还可以在Spring MVC中为View层使用Angular(客户端框架)。

答案 11 :(得分:2)

我认为Tiles可以帮到你。 您可以定义模板并在里面使用JSTL。

答案 12 :(得分:2)

我的建议不是要看看上面大部分内容中描述的视图框架,它不是在Spring MVC之上编写的,因为你最终会遇到像回发这样的问题,这意味着你将无法提交数据。这种观察技术并从服务器获取响应。例如验证,编辑数据提交,使用来自服务器的数据刷新回来。

这是因为视图技术中的某些java bean不使用Spring容器生命周期。您将只能将它们用于纯视图示例无状态请求。使用JSF的例子你将无法使用回发,因为jsf回发仅在你使用jsf生命周期时才有效,如果你使用Spring框架JSF视图解析器与spring mvc你将无法做回发所以你需要替换jsf servlet控制器代替spring mvc controller。

同样,由于您的完整项目要求不明确,如果您不需要回复要求,您可以使用上述选项。

一个示例视图技术写在顶部og spring mvc是基于zk框架的zk mvc,您可以在其中扩展您的spring mvc控制器从ZK GenericForwardComposer来处理事件。您始终可以使用Spring来使用Spring框架处理这些控制器的生命周期。

你可以谷歌找到类似的其他产品。

此评论基于框架生命周期的高级设计。

一切顺利!!!

答案 13 :(得分:1)

您可以在Spring Webflow上运行Facelets

答案 14 :(得分:1)

phpj怎么办?

它可以用作视图模板,也可以从头开始构建Web服务器系统

我制作了phpj,因为我不想更新我的应用程序并一直用tomcat加载它,所以有了这个我可以使用静态位置为我的web应用程序使用类似apache的配置

答案 15 :(得分:1)

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