JFinal 源码解析--Handler
2014-05-15 22:21
225 查看
1. JFinal类 初始化Handler
2.HandlerFactory类
引用作者的回复:
JFinal的 Handler是 AOP + 责任链 模式的一个变种,JFinal对action及interceptor处理自身也是一个Handler名叫ActionHandler,可见其功能之强大。平时开发的时候一般不需要使用,当Action与Interceptor还不够用的时候可以考虑Handler上场。另外Handler可以替代Filter,你无需在web.xml 中再声明Filter了。举几个应用的例子吧:1:网站改版,需要在新网站上兼容老网站上的url时能用到,只需要在Handler中将老网站url转换成新的就可以了。2:防恶意抓取可以使用Handler分析请求规律并封锁ip地址。3:如果你想自创一套路由规则可以用Handler。 如果你要做网站访问日志也可以使用Handler。Handler 可以接管所有请求,所以是无所不能的,你甚至可以基于 Handler 再扩展出一套自己的web 框架 :)
自定义Handler
private void initHandler() { Handler actionHandler = new ActionHandler(actionMapping, constants);//将ActionMaping平封装成一个Handler handler = HandlerFactory.getHandler(Config.getHandlers().getHandlerList(), actionHandler);//创建handler链式结构,ActionHandler放在所有Handler后面 }
2.HandlerFactory类
/** * HandlerFactory. */ public class HandlerFactory { private HandlerFactory() { } /** * Build handler chain */ public static Handler getHandler(List<Handler> handlerList, Handler actionHandler) { Handler result = actionHandler; for (int i=handlerList.size()-1; i>=0; i--) {//链式结构,ActionHandler在链表尾部,倒着添加,最先add到List里的Handler在链表头部,返回头结点 Handler temp = handlerList.get(i); temp.nextHandler = result; result = temp; } return result; } }
引用作者的回复:
JFinal的 Handler是 AOP + 责任链 模式的一个变种,JFinal对action及interceptor处理自身也是一个Handler名叫ActionHandler,可见其功能之强大。平时开发的时候一般不需要使用,当Action与Interceptor还不够用的时候可以考虑Handler上场。另外Handler可以替代Filter,你无需在web.xml 中再声明Filter了。举几个应用的例子吧:1:网站改版,需要在新网站上兼容老网站上的url时能用到,只需要在Handler中将老网站url转换成新的就可以了。2:防恶意抓取可以使用Handler分析请求规律并封锁ip地址。3:如果你想自创一套路由规则可以用Handler。 如果你要做网站访问日志也可以使用Handler。Handler 可以接管所有请求,所以是无所不能的,你甚至可以基于 Handler 再扩展出一套自己的web 框架 :)
自定义Handler
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.jfinal.handler.Handler; public class MyHandler extends Handler{ @Override public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) { System.out.println("-----myhandler is working-----"); nextHandler.handle(target, request, response, isHandled); } }
相关文章推荐
- JFinal Handler源码解析——从配置到工作原理
- Android Handler、Message完全解析,带你从源码的角度彻底理解
- Android Handler、Message完全解析,带你从源码的角度彻底理解
- JFinal 源码解析系列二
- JFinal 源码超详细解析之DB+ActiveRecord
- HandlerThread源码解析
- android的消息处理惩罚机制(图+源码解析)——Looper,Handler,Message
- [Android] Handler源码解析 (Native层)
- Handler,message,Looper源码解析
- 【 Android】handler异步消息处理机制完全解析,带你从源码的角度彻底理解
- JFinal源码解析--ActionMapping,Interceptor
- [Android开发常见问题-23] Android Handler、Message完全解析,带你从源码的角度彻底理解
- JFinal源码解析--从请求到处理返回流程
- JFinal源码解析--render
- Jfinal源码解析系列一
- Android Handler、Message完全解析,带你从源码的角度彻底理解
- Handler Looper源码解析(Android消息传递机制)
- Android Handler、Message完全解析,带你从源码的角度彻底理解
- 深入源码解析Android中的Handler,Message,MessageQueue,Looper
- [Android] Handler源码解析 (Java层)