JFinal 源码导读第四天(2) Handler

1.initHandler(); 这个源代码我会好好介绍,这里涉及到该框架整体的架构,如果需要知道这个框架的整体架构,句听我慢慢道来
	private void initHandler() {
		Handler actionHandler = new ActionHandler(actionMapping, constants);
		handler = HandlerFactory.getHandler(Config.getHandlers().getHandlerList(), actionHandler);
	}
	public ActionHandler(ActionMapping actionMapping, Constants constants) {
		this.actionMapping = actionMapping;
		this.devMode = constants.getDevMode();
	}
2.现在我先贴上handler的源代码
/**
 * Handler.
 * <p>
 * You can config Handler in JFinalConfig.configHandler() method,
 * Handler can do anything under the jfinal action.
 */
public abstract class Handler {
	
	protected Handler nextHandler;
	
	/**
	 * Handle target
	 * @param target url target of this web http request
	 * @param request HttpServletRequest of this http request
	 * @param response HttpServletRequest of this http request
	 * @param isHandled JFinalFilter will invoke doFilter() method if isHandled[0] == false,
	 * 			it is usually to tell Filter should handle the static resource.
	 */
	public abstract void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled);
}
3. Config.getHandlers().getHandlerList(), actionHandler
/**
 * 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--) {
			Handler temp = handlerList.get(i);
			temp.nextHandler = result;
			result = temp;
		}
		
		return result;
	}
}
4 . 上面的代码大家好好仔细看看,这是这个框架的核心,其实就是一个链表
JFinal 源码导读第四天(2) Handler_第1张图片
5.这个过程的详细过程我会写在后面在doFilter中....


你可能感兴趣的:(handler,jFinal)