技术开发 频道

玩转Java Web应用开发:Play框架

  方法拦截

  控制层的方法通常需要执行一些横切的逻辑,比如用户认证、加载通用信息和记录日志等。在 Spring 框架中,这些横切的逻辑是通过面向方面编程(AOP)的支持来实现的。Play 框架提供了更加简单易用的方法拦截支持,通过简单的标注就可以定义一些执行拦截操作的方法。这些方法必须非公开的静态方法。Play 框架支持的方法拦截标注有 @Before、@After、@Finally 和 @With 等四种。

  用 @Before 标注的方法在动作方法执行之前被调用。@After 标注的方法在动作方法执行之后被调用。@Finally 标注的方法在动作方法的响应结果已经成功生成之后被调用。这三个标注都支持额外的两个属性:priority 表示标注的方法的优先级,0 为最高;unless 是一个字符串数组,表示不适用此拦截方法的动作方法的名称。如 @Before(unless="index") 表示此拦截方法不会应用在动作方法 index() 上。

  如果控制器类中存在继承体系结构的话,父类中声明的拦截方法对于所有子类的动作方法都是适用的。在有些情况下,开发人员可能希望把拦截方法定义在不同的类体系结构中。由于 Java 不支持多继承,无法通过继承的方式来应用来自不同类体系结构上的拦截方法。针对这种情况,Play 框架提供了 @With 标注。在控制器类 ControllerA 中定义的拦截方法可以通过 @With 标注来应用到另外一个控制器类 ControllerB 上,而且不通过继承方式来实现。只需要在 ControllerB 中声明 @With(ControllerA.class) 即可。

  在介绍完 Play 框架的控制层之后,下面介绍视图层。

  视图层

  Web 开发框架的使用者都习惯于使用某种模板技术来生成 HTML 页面,这些技术包括常见的 JSP、ASP 和 PHP 等。Play 框架也提供了自己的模板技术,可以用来动态的创建 HTML、XML、JSON 以及其它文本类型的内容。Play 框架的模板技术使用的是 Groovy 语言。Groovy 语言的灵活性和简洁性使得 Play 框架的模板简单而且易用。在模板中可以混用静态内容和生成动态内容的各种元素。在模板中可以使用的动态元素如 表 3 所示。

  表 3. 模板中可用的动态元素

动态元素说明
${...}用来对一个表达式进行求值。如 ${note.title} 的值是领域对象 note 的属性 title 的值。
@{...}@@{...}用来生成调用控制器中动作方法的 URL,可以用在页面的链接中。@{...}@@{...} 生成的分别是相对 URL 和绝对 URL。如 <a href="@{Application.index()}"> 首页 </> 生成一个指向首页的链接。
&{...}用来显示经过国际化之后的消息内容。
*{...}*用来添加注释。如 *{ 这是注释 }*
%{...}%用来添加复杂的 Groovy 脚本,可以声明变量和添加语句。
#{...}用来调用 Play 框架的或是开发人员自定义的标签。

  Play 框架中的标签的作用相当于 JSP 中的标签。Play 框架本身提供一些常用的标签,开发人员也可以根据需要开发自己的标签。Play 框架内置提供的标签说明如 表 4 所示。

0
相关文章