• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Joanna Qian
Stay Hungry, Stay Foolish!
博客园    首页    新随笔    联系   管理    订阅  订阅
Play framework 2.0 -应用程序全局设置(转)

转载自: http://shenbai.iteye.com/blog/1517366

1.全局对象

在工程中定义全局对象可以允许你操作你的应用程序的全局设置。这个全局对象必须定义在根包下。

import play.*;  
public class Global extends GlobalSettings {  
    ...  
}  

2. 应用程序启动和关闭的拦截

可以重写onStart和onStop操作,通知对应的应用程序命周期事件。

import play.*;
public class Global extends GlobalSettings {
      @Override
      public void onStart(Application app) {
        Logger.info("Application has started");
      }        
      @Override
      public void onStop(Application app) {
        Logger.info("Application shutdown...");
      }          
}

3.提供一个应用程序错误页

当你的程序有异常发生时,onError操作会被调用。默认使用框架内部错误页,可以重写它:

import play.*;  
import play.mvc.*;  
import static play.mvc.Results.*;  
      
public class Global extends GlobalSettings {       
          @Override  
          public Result onError(Throwable t) {  
            return internalServerError(  
              views.html.errorPage(t)  
            );  
          }    
 }  

4.处理action未找到

当框架找不到请求的action时,onActionNotFound操作会被调用:

import play.*;  
import play.mvc.*;  
import static play.mvc.Results.*;  
  
public class Global extends GlobalSettings {    
      @Override  
      public Result onActionNotFound(String uri) {  
        return notFound(  
          views.html.pageNotFound(uri)  
        );  
      }    
 } 

如果路由能找到,但是不能绑定请求参数时,onBadRequest操作会被调用

import play.*;  
import play.mvc.*;  
import static play.mvc.Results.*;  
  
public class Global extends GlobalSettings {    
      @Override  
      public Result onBadRequest(String uri, String error) {  
        return badRequest("Don't try to hack the URI!");  
      }    
 } 

#拦截请求

1.重新onRequest

GlobalSettings类的一种重要概念是它提供了在请求被分发到action之前拦截请求,执行业务逻辑的方法。例如:

import play.*;  
public class Global extends GlobalSettings {       
        @Override  
        public Action onRequest(Request request, Method actionMethod) {  
           System.out.println("before each request..." + request.toString());  
           return super.onRequest(request, actionMethod);  
        }  
}  
通过Action组件,也可以实现对指定Action方法的拦截。
posted on 2014-04-01 04:20  Joanna Qian  阅读(711)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3