rose拦截器

依旧是参考54chen写的rose手册,重新整理下rose的拦截器功能。

参考网址:http://www.54chen.com/rose.html

 

一、拦截器的例子

需要注意几点:

  • 拦截器要放在controllers下(高级用法:打在rose-jar包里,参见5.1)
  • 继承net.paoding.rose.web.ControllerInterceptorAdapter
  • 按照实现的方法名,在controller执行前、中、后执行:
    • before:在controller执行前执行。
    • after:在controller执行中(后)执行,如果一个返回抛出了异常,则不会进来。
    • afterCompletion:在controller执行后执行,不论是否异常,都会进来。
    • isForAction:定义满足某条件的才会被拦截。

拦截器可动的位置细节

  • 上面都讲得差不多了,实际上还有不少地方可以拦截的:
    • isForDispatcher:根据响应的情况判断是否拦截,比如说是正常请求、内部forward、还是include (但是没用过)
    • setPriority:设置一个数字表示拦截优先级,当有多个拦截器时,要精准控制,数字小的内层,大的在外层,在最外层的before方法最先执行,大家都执行完后它的after才最后执行。
    • round:这才是真正的controller执行中执行,不过用得很少。
    • getRequiredAnnotationClass:返回一个Annotation class name,表示这个拦截器只对此Annotation标过的controller才生效。常用。

二、ErrorHandler支持

  • ErrorHanle致力于:统一捕捉和处理各种异常,可区分对待和返回;统一的出错体验。
  • 非常类似做web开发时的500统一出错页面这样的东东。

三、controller层:门户必备portal支持

更加充分地使用多核cpu。 *更加方便多人协作时对项目进行模块划分,搞的时候,按照url一分,一个url一个模块,所有的页面都可以切成小的豆腐块

 

四、controller层:门户必备pipe支持

如果是portal,那会多个线程执行完成一起返回,而pipe则会用js反写的方式,一个线程一个线程地返回给用户。

 

 

 

 

 

你可能感兴趣的:(拦截器)