繁体   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