Play framework 入门

来源:互联网 发布:stm32 bootloader源码 编辑:程序博客网 时间:2024/06/07 19:03

Play入门

你使用Play的第一步,前五分钟的乐趣:

Play框架是替代臃肿的企业java栈干净,它关注于开发人员的生产力和针对REST体系结构的目标。Play是敏捷软件开发的完美伙伴。


Play框架的目的是消除Web应用发展的同时,坚持用java。让我们看看这是怎么可能的。


一个没有痛苦的Java框架

Play是纯Java框架,可以让你保持你的首选开发框架和库,如果你已经使用Java作为开发平台你就无需切换到其他的开发语言、其他的IDE和库,就切换到一个更具生产力的Java环境;


修复错误并点击重新加载

java EE平台的低生产率的Web应用程序的开发是臭名昭著的,主要是由于重复而冗长的编译包部署周期。这就是为什么我们重新思考使发挥高效开发过程的开发周期。


Play框架可以直接编译你的Java文件并且热部署到JVM中无需重新启动服务器,然后你可以编辑、重新加载并且立即看到修改效果;就像是用LAMP和Redis环境;


这很有趣,你甚至可以使用一个简单的文本编辑器,如果你想跳过一个全功能的java IDE。


每当出现错误时,框架尽最大努力识别并向您显示问题。


简单无状态MVC体系结构

你一边有一个数据库,另一边有一个Web浏览器。为什么你们之间应该有一个状态?

有状态的和基于组件的java web框架可以很容易地自动保存页面状态,但这也带来了许多其他问题:如果用户打开第二个窗口会发生什么?如果用户点击浏览器返回按钮怎么办?

在无共享架构的Web应用程序框架从PHP了Ruby on Rails或Django。随着浏览器的功能越来越强大,现在很容易使用Ajax或离线存储来解决客户端的状态问题。


我们不需要再利用HTTP模型来重建Web上的虚假状态。“无共享”的另一个方面是使页面的部分并行化,并进行部分页面更新(或逐步增强)。


HTTP到代码映射

如果你已经在使用另一个java Servlet API或Web框架如Struts框架,你已经习惯于用奇怪的java API和概念的HTTP协议的一个抽象观点。我们的想法不同。Web应用程序框架应该让您充分、直接地访问HTTP及其概念。这是Play和其他java web应用程序框架的根本区别。


HTTP, the Request/Response模式,REST架构风格、Content-type协商、URI都是Play框架的主要概念。

例如,绑定一个URI模式到java调用是一条线:

GET    /clients/{id}        Clients.show

如果Ajax、Rest和管理Web页面之间的后退/向前移动是您日常Web开发中所面临的一些问题,那么请尝试一下。

高效的模板引擎

我们喜欢JSP和表达式语言背后的思想。但是为什么我们需要这么多的配置文件来创建一个标记库呢?为什么我们不能完全访问底层对象模型呢?JSP有很多限制,这确实令人沮丧。这就是为什么我们创建了一个定制的模板系统,它的灵感来自JSP,但没有它的约束!


你和其他任何人都应该厌倦这样写东西:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> <c:choose>    <c:when test="${emails.unread != null && fn:size(emails.unread)}">        You have ${fn:size(emails.unread)} unread email(s)!    </c:when>    <c:otherwise>        You have no unread emails!    </c:otherwise></c:choose>
我们认为你肯定愿意这样写:

You have ${emails.unread ?: 'no'} ${emails.unread?.pluralize('email')} !
模板引擎使用的表达式语言是Groovy,它提供了一个一致的语法和java,而Play主要使用模板系统来呈现HTML响应。您可以自由地使用它生成任何其他文档,如电子邮件、JSON响应等。


JPA

如果你已经知道了,你会惊奇地发现游戏变得简单多了。没有配置,Play会自动启动JPA实体管理器和神奇的同步而代码加载。java持久化API(JPA)是最干净的对象关系映射(ORM)API可用于java,此外,如果你使用提供的play.db.jpa.model超类,它会使你的代码更漂亮。看一看:

public static void messages(int page) {    User connectedUser = User.find("byEmail", connected()).first();    List<Message> messages = Message.find(        "user = ? and read = false order by date desc",        connectedUser    ).from(page * 10).fetch(10);    render(connectedUser, messages);}

原创粉丝点击