转载自: 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方法的拦截。