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);
}
...
}
分享到:
相关推荐
### 学习Play! Framework 2 的核心知识点 #### 一、Play! Framework 2 概述 Play! Framework 2 是一个用于构建现代 web 应用程序的高性能、轻量级框架。它由 Java 和 Scala 支持,并且特别强调开发者的生产力。...
在描述中提到的"play framework api,play! framework api,play api"都是指Play Framework的API文档,它包含了框架的所有公共类、方法和接口,供开发者在编写代码时查阅和引用。API文档是理解框架工作原理、学习如何...
通过源码,我们可以学习到Japid如何接收和处理控制器传递的数据,以及如何与Play! Framework的其他部分交互。 **压缩包文件内容详解** 1. `manifest`: 这通常是一个清单文件,包含了项目的基本信息和配置,例如类...
一个优于RoR的快速开发框架playframework,完全面向对象,基于jvm的REST框架,文档非常少,上手很容易,从名字上可以看出play就是玩,可以当作游戏一样轻松的玩的框架,这是它的API文档,网页格式.
NULL 博文链接:https://modun.iteye.com/blog/1595857
在Play Framework2中,你将学习到以下关键知识点: 1. **MVC架构**:Play遵循模型-视图-控制器(MVC)设计模式,这是一种用于构建可维护和可扩展的Web应用的经典方法。模型代表业务数据,视图负责渲染这些数据,而...
### Play! 框架简介 Play! 是一款专为高效开发企业级 Java 应用程序而设计的轻量级框架。它强调敏捷开发、快速迭代,并且支持 RESTful 架构,使得开发者能够轻松地构建现代化的 Web 应用。 #### Play! 的特点 - **...
在本例中,"play1-maven-test-projects"是一个针对Play! Framework 1.x版本的Maven插件测试项目。 Play! Framework是一个开源的应用程序框架,用于快速开发基于Java和Scala的Web应用。它提供了模型-视图-控制器...
在学习Play Framework时,建议从官方文档开始,了解基本概念和配置。然后,通过创建一个简单的示例项目来实践,逐步掌握路由、控制器、模型、视图和模板的使用。同时,深入学习Akka和异步编程对于充分利用Play的优势...
在“Playframework框架学习之路 1”中,我们可能要探讨这个框架的基础概念、安装过程以及如何创建一个简单的应用。下面将详细介绍Play Framework的关键知识点。 1. **快速开发**: Play Framework以其快速开发能力而...
Learning Play Framework 2
Play Framework 是一个开源的Web应用框架,以Java和Scala为后盾,致力于提供简洁、高效、可测试的开发体验。...通过学习和掌握上述知识点,开发者能够更好地利用Play Framework构建高性能、可维护的Web应用程序。
这个“playframework中文教程.zip”压缩包很可能是为了帮助中文用户更好地理解和学习Play Framework而准备的资源。 Play Framework 的主要特点包括: 1. **轻量级**:与传统的Java EE规范相比,Play Framework ...
总之,Play-Framework-ElasticSearch-Module为开发者提供了一个高效、便捷的方式来整合Play Framework与Elasticsearch,极大地提升了数据处理和搜索功能,是学习Java开发框架及搜索技术不可或缺的宝贵资源。
无论是初学者还是有经验的开发人员,都可以从中学习到如何有效地使用 Play Framework 来构建高效稳定的 Web 应用。 - **核心章节内容**: - **基础设置与配置**:包括环境搭建、项目初始化、配置文件解读等基础...
Play Framework框架 Play Framework框架是一种基于Java的软件框架,旨在提高开发效率和提供REST式的架构风格。该框架可以让开发者继续使用他们喜欢的开发环境或繻库,不需要切换到另一种语言、IDE或者其他繻库。 ...
总的来说,这个"play,play framework资料大全"集合提供了全面的Play Framework学习资源,无论是初学者还是经验丰富的开发者,都能从中受益。通过深入学习这些资料,你可以掌握使用Java进行Web开发的新技巧,提升开发...