`
xianbin
  • 浏览: 214844 次
  • 来自: ...
社区版块
存档分类
最新评论

Play! Framework 学习笔记 — 注解

阅读更多
Interceptions拦截器注解:
@Before
所有访问的Action执行之前调用该方法,比如:
public class Admin extends Application {
 
    @Before
    static void checkAuthentification() {
        if(session.get("user") == null) login();
    }
 
    public static void index() {
        List<User> users = User.findAll();
        render(users);
    }
 
    ...
 
}


如果需要忽略某一个请求路径,可以添加unless参数:
public class Admin extends Application {
 
    @Before(unless="login")
    static void checkAuthentification() {
        if(session.get("user") == null) login();
    }
 
    public static void index() {
        List<User> users = User.findAll();
        render(users);
    }
 
    ...
 
}


如果只希望截获某些请求路径,可以添加only参数:
public class Admin extends Application {
 
    @Before(only={"login","logout"})
    static void doSomething() {  
		...  
	}
	
   	...
}


当希望夸类实现多个拦截器,可以通过@With注解实现:
先定义第一个拦截器:
public class Secure extends Controller {
    
    @Before
    static void checkAuthenticated() {
        if(!session.containsKey("user")) {
            unAuthorized();
        }
    }
} 


接着在另一个类再定义一个拦截器:
@With(Secure.class)
public class Admin extends Application {
    
    ...
     
}


如果希望对Controller的每个方法执行完时进行拦截:
public class Admin extends Application {
 
    @After
    static void log() {
        Logger.info("Action executed ...");
    }
 
    public static void index() {
        List<User> users = User.findAll();
        render(users);
    }
 
    ...
 
}


如果希望当Controller的每个Action抛出异常时进行拦截,可以使用@Catch:
public class Admin extends Application {
	
    @Catch(IllegalStateException.class)
    public static void logIllegalState(Throwable throwable) {
        Logger.error("Illegal state %s…", throwable);
    }
    
    public static void index() {
        List<User> users = User.findAll();
        if (users.size() == 0) {
            throw new IllegalStateException("Invalid database - 0 users");
        }
        render(users);
    }
}


如果希望当Controller的每个Action结果都产生后进行拦截,可以使用@Finally:
public class Admin extends Application {
 
    @Finally
    static void log() {
        Logger.info("Response contains : " + response.out);
    }
 
    public static void index() {
        List<User> users = User.findAll();
        render(users);
    }
 
    ...
 
}
0
0
分享到:
评论

相关推荐

    Learning Play!Framework 2

    ### 学习Play! Framework 2 的核心知识点 #### 一、Play! Framework 2 概述 Play! Framework 2 是一个用于构建现代 web 应用程序的高性能、轻量级框架。它由 Java 和 Scala 支持,并且特别强调开发者的生产力。...

    play framework api,play! framework api,play api

    在描述中提到的"play framework api,play! framework api,play api"都是指Play Framework的API文档,它包含了框架的所有公共类、方法和接口,供开发者在编写代码时查阅和引用。API文档是理解框架工作原理、学习如何...

    play!framework框架——japid源码

    通过源码,我们可以学习到Japid如何接收和处理控制器传递的数据,以及如何与Play! Framework的其他部分交互。 **压缩包文件内容详解** 1. `manifest`: 这通常是一个清单文件,包含了项目的基本信息和配置,例如类...

    play!framework_api

    一个优于RoR的快速开发框架playframework,完全面向对象,基于jvm的REST框架,文档非常少,上手很容易,从名字上可以看出play就是玩,可以当作游戏一样轻松的玩的框架,这是它的API文档,网页格式.

    让Play!Framework运行在OpenShift上

    NULL 博文链接:https://modun.iteye.com/blog/1595857

    Play Framework2本教程

    在Play Framework2中,你将学习到以下关键知识点: 1. **MVC架构**:Play遵循模型-视图-控制器(MVC)设计模式,这是一种用于构建可维护和可扩展的Web应用的经典方法。模型代表业务数据,视图负责渲染这些数据,而...

    play!框架学习文档(汉化了一部分)

    ### Play! 框架简介 Play! 是一款专为高效开发企业级 Java 应用程序而设计的轻量级框架。它强调敏捷开发、快速迭代,并且支持 RESTful 架构,使得开发者能够轻松地构建现代化的 Web 应用。 #### Play! 的特点 - **...

    play1-maven-test-projects:玩! Framework 1.x Maven插件-测试项目

    在本例中,"play1-maven-test-projects"是一个针对Play! Framework 1.x版本的Maven插件测试项目。 Play! Framework是一个开源的应用程序框架,用于快速开发基于Java和Scala的Web应用。它提供了模型-视图-控制器...

    playframework学习资料

    在学习Play Framework时,建议从官方文档开始,了解基本概念和配置。然后,通过创建一个简单的示例项目来实践,逐步掌握路由、控制器、模型、视图和模板的使用。同时,深入学习Akka和异步编程对于充分利用Play的优势...

    playframework 框架学习之路 1

    在“Playframework框架学习之路 1”中,我们可能要探讨这个框架的基础概念、安装过程以及如何创建一个简单的应用。下面将详细介绍Play Framework的关键知识点。 1. **快速开发**: Play Framework以其快速开发能力而...

    LearningPlayFramework2.pdf 英文原版

    Learning Play Framework 2

    play framework 框架个人笔记

    Play Framework 是一个开源的Web应用框架,以Java和Scala为后盾,致力于提供简洁、高效、可测试的开发体验。...通过学习和掌握上述知识点,开发者能够更好地利用Play Framework构建高性能、可维护的Web应用程序。

    playframework中文教程.zip

    这个“playframework中文教程.zip”压缩包很可能是为了帮助中文用户更好地理解和学习Play Framework而准备的资源。 Play Framework 的主要特点包括: 1. **轻量级**:与传统的Java EE规范相比,Play Framework ...

    Play-Framework-ElasticSearch-Module

    总之,Play-Framework-ElasticSearch-Module为开发者提供了一个高效、便捷的方式来整合Play Framework与Elasticsearch,极大地提升了数据处理和搜索功能,是学习Java开发框架及搜索技术不可或缺的宝贵资源。

    Play Framework Cookbook.pdf

    无论是初学者还是有经验的开发人员,都可以从中学习到如何有效地使用 Play Framework 来构建高效稳定的 Web 应用。 - **核心章节内容**: - **基础设置与配置**:包括环境搭建、项目初始化、配置文件解读等基础...

    Play framework框架

    Play Framework框架 Play Framework框架是一种基于Java的软件框架,旨在提高开发效率和提供REST式的架构风格。该框架可以让开发者继续使用他们喜欢的开发环境或繻库,不需要切换到另一种语言、IDE或者其他繻库。 ...

    play,play framework资料大全

    总的来说,这个"play,play framework资料大全"集合提供了全面的Play Framework学习资源,无论是初学者还是经验丰富的开发者,都能从中受益。通过深入学习这些资料,你可以掌握使用Java进行Web开发的新技巧,提升开发...

Global site tag (gtag.js) - Google Analytics