code: protected static void init(ServletContext context) {
  		TimeInterval interval = new TimeInterval();
  		
  		servletContext = context;
  		contextPath = context.getContextPath();
  		handler = new ActionHandler(HuluSetting.actionPackages);
  		
  		String startMsg = null;
  		try {
  			startMsg = FileUtil.readUtf8String("startup.txt");
  		} catch (IORuntimeException e) {
  			Throwable cause = e.getCause();
  			if(null != cause){
  				if(cause instanceof FileNotFoundException){
  					log.debug("No file [startup.txt] in classpath, use default start messsage.");
  				}else{
  					log.warn("Read [startup.txt] error, cause by: {}", cause.getMessage());
  				}
  			}else{
  				log.warn("Read [startup.txt] error, cause by: {}", e.getMessage());
  			}
  		}
  		
  		if(StrUtil.isNotBlank(startMsg)){
  			Dict param = Dict.create().set("spend", interval.intervalMs()).set("contextPath", contextPath);
  			log.info(StrUtil.format("\n" + startMsg, param));
  		}else{
  			log.info("\n***** Hulu framwork init finished, context path: [{}], spend {}ms *****", contextPath, interval.intervalMs());
  		}
  	}
docs: 初始化ActionContext
  
  @param context ServletContext