Webit Script ÊÇÒ»¸ö¼òµ¥Áé»î×ÔÓÉ¿ª·ÅµÄ¿ªÔ´µÄÄ£°åÒýÇæ£¬»ùÓÚJava¿ª·¢£¬Ö§³ÖJava5 ¼°ÒÔÉϰ汾£¬²ÉÓÃBSD¿ªÔ´ÐÒé¡£
±¾´Î¸üÐÂͬʱ¸½´øÁËÒ»¸ötools°ü£º webit-script-tools-1.0.0.jar °üº¬ÁËһЩ³£ÓõÄÀ©Õ¹Ö§³Ö¡£
Webit Script 1.4.0¸üмǼ£º
¡¾ÐÞ¸´¡¿'--i' µÝ¼õµÄbug¡£
¡¾ÒƳý¡¿Engine.setResourceLoader(loader)¡£
¡¾ÔöÇ¿¡¿List ¿ÉÒÔÏñÒ»¸ö¶¯Ì¬Êý×éÒ»Ñù²Ù×÷£¬Èç `list[2] = "b"`¡£
¡¾µ÷Õû¡¿Struts2 & JFinal µÄÖ§³Ö²¿·ÖʹÓà '.wit' ×÷ΪĬÈϵĺó׺Ãû¡£
¡¾µ÷Õû¡¿Ä¬ÈÏLoaderÉèÖÃΪRouteLoader£¬È±Ê¡LoaderÉèÖÃΪClasspathLoader£¬²¢ÉèÖÃÁËÒ»¸öStringLoaderºÍÒ»¸öclasspath¸ùĿ¼µÄ·ÓɹæÔò¡£
¡¾µ÷Õû¡¿Ä¬ÈÏ¿ªÆôÏò×ÓÄ£°æ¹²Ïí´«ÈëµÄ²ÎÊý£¬¼´`engine.shareRootData=true`¡£
¡¾µ÷Õû¡¿ÄÚÖõÄBeanUtil·ûºÏ"JavaBeans Spec"¹æÔò£¬µ±ÊôÐÔµÚ¶þ¸ö×Ö·û´óдʱ±£³ÖµÚÒ»¸ö×ÖĸµÄ´óСд¡£
¡¾µ÷Õû¡¿Engine.resolveBean/getBean ·Ö±ðÖØÃüÃûΪ resolveComponent/getComponent¡£
¡¾µ÷Õû¡¿Template.reloadTemplateForce() ÖØÃüÃûΪ reload£¬ÓÃÓÚÇ¿ÖÆÖØÐ½âÎöÄ£°æ¡£
¡¾µ÷Õû¡¿¶ÔÓÚͬһÉèÖã¬Ê¹ÓÃEngine.getComponent(..)½«·µ»ØÍ¬Ò»ÊµÀý£¬²¢ÇÒ²»Öظ´×¢Èë²ÎÊý£¬Ḭ̈߳²È«¡£
¡¾µ÷Õû¡¿WebEngineManager.appendProperties(..) ÔÊÐíÖØ¸´µÄkey£¬²»»á¸²¸Ç֮ǰµÄÉèÖá£
¡¾µ÷Õû¡¿WebÖ§³ÖÄ£¿éÌṩµÄServletEngineUtil½«ServletContextÉèÖõ½`servlet.servletContext`¡£
¡¾µ÷Õû¡¿resolversÅäÖôÓEngineÒÆÖÁResolverManager
¡¾µ÷Õû¡¿Ê¹ÓÃNoneNativeSecurityManager×÷ΪĬÈϵÄnative°²È«¹ÜÀíÆ÷¡£
¡¾ÐÂÔö¡¿½âÎö´íÎóÎÄ×ÖÏÖÔÚ¿ÉÒÔÏÔʾÌáʾÁË¡£
¡¾ÐÂÔö¡¿¿ÉÔÚÅäÖÃÎļþÀïÉèÖÃÒÀÀµµÄÄ£¿é£¬ÀýÈ磺`@modules+=lib-assert.wim`¡£
¡¾ÐÂÔö¡¿NoneNativeSecurityManager
¡¾ÐÂÔö¡¿ÐÂÔö`ClassEntry`£¬¿ÉÒÔÉèÖÃͬһÀàÐÍ×é¼þµÄ²»Í¬ÊµÀýµÄÅäÖã¬ÉèÖ÷½·¨Ïê¼û°ïÖúÎĵµ¡£
¡¾ÐÂÔö¡¿ÅäÖÃÎļþÔÊÐíʹÓÃ`@extends`£¬ÓÃÀ´¼Ì³ÐÅäÖá£
¡¾ÐÂÔö¡¿ÐÂÔöLazyLoader£¬¿ÉÒÔ°ü×°Ò»¸öLoader£¬ÑÓ³Ù×ÊÔ´µÄ¼ì²â¡£
¡¾ÐÂÔö¡¿ÐÂÔöRouteLoader£¬ÕâÊǸöLoaderµÄ·Óɰü×°¡£
¡¾ÐÂÔö¡¿WebÖ§³Ö²¿·ÖÐÂÔöGlobalServletRegister£¬¿ÉÒÔ×¢²áÈ«¾Ö±äÁ¿`BASE_PATH`¡£
¡¾ÐÂÔö¡¿ÐÂÔö¶Ô `jfinal/Record` µÄ resolver¡£
¡¾ÐÂÔö¡¿Engine.getConfig(key), Engine.getResourceLoader()¡£
¡¾ÐÂÔö¡¿ÐÂÔöjsÖк¯ÊýµÄÉùÃ÷·½·¨`function a(){}`¡£
¡¾ÐÂÔö¡¿Ö´Ðгõʼ»¯Ä£°æµÄ²ÎÊýÐÂÔöGLOBAL_MAP/CONST_MAPµÄ±ðÃûGLOBAL/CONST¡£
¡¾ÐÂÔö¡¿ContextLocalRegister£¬ÌṩÁËLOCAL(key[,value]) È«¾Ö±äÁ¿£¬ÓÃÓÚ¶ÁÈ¡¡¢´æÈ룬µ¥´ÎÖ´ÐÐʱµÄ¹²ÏíÊý¾Ý¡£
¡¾ÐÂÔö¡¿ÐÂÔöÅäÖÃ`resolverManager.ignoreNullPointer` ÓÃÀ´ÉèÖÃÊÇ·ñºöÂÔÊôÐÔ¶Áȡʱ±¾ÌåΪnullµÄÒì³££¬Ä¬ÈÏΪtrue¡£
¡¾ÐÂÔö¡¿Loader APIÐÂÔöisEnableCache(String name)£¬ÓÃÓÚ¾ö²ßÊÇ·ñÐèÒªÔÚEngineÖлº´æTemplate¡£
¡¾ÐÂÔö¡¿SimpleSecurityLoader£¬ÊÇÒ»¸ö¼òµ¥µÄ´øÓа²È«¿ØÖƵÄLoader¡£
¡¾ÐÂÔö¡¿`ScriptUnsetableBag` ºÍ `ScriptUnsetableBagResolver`£¬¼òµ¥µÄÀàËÆMapµÄ½Ó¿Ú£¬ÔÚÄ£°æ/½Å±¾ÀïÃæ²»¿É½øÐÐset²Ù×÷¡£
¡¾ÐÂÔö¡¿³£Á¿ÉùÃ÷µÄ¹Ø¼ü×Ö`const`£¬Èç`const a=1;`¡£
¡¾ÐÂÔö¡¿ÐÂÔöÉèÖÃ`Engine.assistantSuffixs`£¬ÓÃÓÚÉèÖÃÔÊÐíµÄ¸¨ÖúµÄ¶à¸öºó׺Ãû¡£
¡¾ÐÂÔö¡¿ÐÂÔö¿â£¬²âÊÔÓõÄlib-assert.wim£¬ÀàÐÍÅжϵÄlib-type.wim
¡¾ÐÂÔö¡¿ÐÂÔöƬ¶Î»º´æ¿â lib-cache.wim
¡¾ÐÂÔö¡¿ÐÂÔöÖ§³ÖJSP TagLib Function×¢²áΪȫ¾Ö±äÁ¿µÄ¿âlib-tld.wim¡£
ÁíÍ⣬×Ô¶¯²âÊÔ¿ÉÒÔ²âÊÔÆ¥ÅäµÄÊä³ö£¬¸üÐÂASM¡¢java_cup¡¢Props£¬ÒÔ¼°ÆäËûÄÚ²¿Ï¸½Úµ÷Õû£¬ÌáÉýÎȶ¨ÐÔÒÔ¼°ÐÔÄÜ£¬ÃüÃû¸ü·ûºÏ¹æ·¶¡£
¡¾ÅäÖÃÎļþÇ¨ÒÆÖ¸ÄÏ¡¿
1. ʹÓöÌÃû³Æ
[webit.script.Engine] => [engine]
[webit.script.resolvers.ResolverManager] => [resolverManager]
[webit.script.global.DefaultGlobalManager] => [global]
[webit.script.security.impl.DefaultNativeSecurityManager] => [nativeSecurity]
2. engine.*Class ɾ³ýºóÃæµÄClass£¬
resourceLoaderClass£¬filterClass£¬textStatementFactoryClass£¬nativeSecurityManagerClass£¬coderFactoryClass£¬globalManagerClass£¬loggerClass
·Ö±ð¸Ä³É
resourceLoader£¬filter£¬textStatementFactory£¬nativeSecurityManager£¬coderFactory£¬globalManager£¬logger
3. ÆäËû
engine.resolvers => resolverManager.resolvers
engine.initTemplates => engine.inits
4. RouteLoaderÒѾÉèÖÃΪĬÈÏLoader£¬½¨Òéͨ¹ý`routeLoader-main.default`ÉèÖÃĬÈÏLoader
ÎĵµÒÑͬ²½¸üУ¬¸ü¶àϸ½ÚÇë²Î¿¼Îĵµ£ºhttp://zqq90.github.io/webit-script/
ÏîÄ¿Ö÷Ò³£ºhttp://zqq90.github.io/webit-script/
ÏÂÔØµØÖ·£ºhttps://github.com/zqq90/webit-script/
À´×Ô:¿ªÔ´ÖйúÉçÇø

