1.setState是同步更新还是异步更新?
2.React 的 setState 是同步还是异步?
3.Javaç¼ç¨å
¨è½è¯å
¸çç® å½
setState是同步更新还是异步更新?
在React.8之前的版本中,我们更新数据需要用到setState,那么你知道setState是同步还是异步的呢?它内部是如何实现的,你了解吗?今天我们就一起来学习一下关于setState的那些事吧!setState自从React.8添加了Hook后,我们编写React组件基本都是树状图源码函数组件,很少用到class组件了。我们都知道在函数组件中通过useState这个Hook来修改组件的状态,而在.8之前的版本中,我们都是通过setState来修改组件的状态,因此我们还是很有必要了解一下关于setState相关的知识点。
在面试或者工作中,我们经常会遇到关于组件状态更新的问题,就拿setState来说,lxml源码分析在组件更新的时候,setState是同步更新还是异步更新的?当我们更新一个组件的状态后,我们如何才能立即获取到刚才更新的状态?这些就是我们需要学习和了解的地方。要了解setState是同步还是异步,就先需要了解一下React中的合成事件了。
如果了解过React事件相关方面的童鞋,那么就会知道React的事件都是合成事件,而不是js的原生事件。那什么是合成事件呢?简单来说就是React通过给document上挂载一个事件监听函数,通过事件冒泡的方式来完成事件的执行,当DOM元素触发后会冒泡到document,而React就会找到对应的组件生成一个合成事件出来,并按组件树模拟一遍事件冒泡,浪漫相册源码这就是React中的合成事件。
当然,上述的方法在React之后的版本中进行了修改。React中将事件挂载在了DOM的容器中,也就是挂载在ReactDOM执行的节点上,这样修改的好处是哪怕一个项目中有多个版本的React存在,组件的事件也不会乱套。那么哪些事件会被捕获生成合成事件呢?在React源码的事件快照中所包含的事件才会被捕获到,例如:click、blur、focus等等。
了解完合成事件,我们该继续学习setState是源码可积分同步还是异步的。一般来说setState是异步的,例如下面这个例子:
clsssTestextendsComponent{ state={ count:0};componentDidMount(){ this.setState({ count:1},()=>{ console.log(this.state.count);//1});console.log(this.state.count);//0}render(){ return(...)}}当我们在componentDidMount生命周期中通过setState修改组件的状态后,我们只有在setState的第二个参数中才能立即获取到当前修改的值,而在外部获取到的值还是未改变之前的值,由此可以证明setState是异步的。我们是否会觉得React中的setState执行像是一个队列,因为React会根据队列逐一执行,并且合并setState的操作,当state数据完成后执行回调,然后根据结果来更新虚拟DOM触发渲染。那么为什么React官方团队要按这样的执行思路来实现呢?为什么不能用同步执行的思路来实现呢?
在React出来后,官方给出的解释的是:为了保持内部的一致性,如果setState是朔源码疫苗同步的,但是props却不是,就会导致数据的错乱;第二点就是为了后续的升级启用并发更新。那么什么情况下setState是同步的呢?
如果我们将setState放在setTimeout或者setInterval中,那么它们的执行就会跟上面将的完全不同了,大致的代码如下:
clsssTestextendsComponent{ state={ count:0};componentDidMount(){ this.setState({ count:this.state.count+1});console.log(this.state.count);//0setTimeout(()=>{ this.setState({ count:this.state.count+1});console.log('setTimeout',this.state.count);//1},0);}render(){ return(...)}}当setState执行时,会将状态存入padding队列中,然后React会判断当前是否处于batchupdate阶段,如果是,则会将组件存入dirtyComponents中;反之则会遍历所有的dirtyComponents,并调用updateComponent用于更新pending、state或者props。
在React的生命周期事件和合成事件中可以获取到isBatchingUpdates的控制权,用于将状态放入队列中,并控制执行的节奏。而在setTimeout、addEventListener这些原生事件中,无法获取到isBatchingUpdates的控制权,就会导致isBatchingUpdates只会为false,且会一直执行,因此setState就会同步执行并修改组件的状态。
最后setState其实并不是真的异步,只是看起来像是异步执行的,它是通过isBatchingUpdates来判断当前执行是同步还是异步的,如果isBatchingUpdates为true,则按异步执行,反之就是同步执行。要改变isBatchingUpdates,只需要打破React的合成事件,在js的原生事件中执行setState即可,所以你知道setState是同步还是异步的吗?
React 的 setState 是同步还是异步?
setState 是同步还是异步?
代码示例表明,setState 呈现异步特性。在 setTimeout 内修改两次 state 后打印,结果为两次 0,说明 state 立即修改,之后每次渲染,结果为 0、1、2,证实了 setState 的同步性。
疑惑继续,代码进一步验证,setState 的行为不一致,打印结果为三次 0,仅触发一次渲染,说明 setState 确实为异步。
类组件和函数组件的 setState 都遵循异步模式,修改 state 时,渲染仅触发一次,说明状态更新与渲染之间存在延迟。
深入源码探索,React 渲染流程揭示了关键。vdom 转换为 fiber 的过程是可打断的,而 fiber 更新 DOM 的 commit 阶段是同步的。这解释了 setState 的异步行为。
setState 的执行依赖于执行环境的 context,批量更新会立即触发渲染,而非批量则延迟至下次更新。
setTimeout 内的 setState 会触发即时渲染,这与批量更新的 context 无关。通过设置 batchUpdates API 可实现批量执行,但这需要额外操作。
React 引入了 createRoot API,使得所有 setState 操作默认为异步批量执行,解决了这个问题。
综上所述,setState 的同步异步特性取决于其执行环境和 React 版本。在 React 中,所有操作默认为异步批量执行,将消除同步异步的讨论。
Javaç¼ç¨å ¨è½è¯å ¸çç® å½
第 1ç« ä¸ºä»ä¹è¯´ãJavaç¼ç¨å ¨è½è¯å ¸ãæ¯ç¼ç¨å¼å人åçå¿ å¤å·¥å · 11.1 æµ·éç¼ç¨èµæºåº 2
1.1.1 è¶ å®¹éææ¯èµæºåº 2
1.1.2 å ¨æ¹ä½è§é¢èµæºåº 2
1.1.3 丰å¯çå®ä¾èµæºåº 3
1.1.4 å¤è¡ä¸é¡¹ç®èµæºåº 4
1.1.5 å®é åºç¨æ¹æ¡èµæºåº 5
1.1.6 ç²¾ç¾ççé¢ç´ æèµæºåº 5
1.1.7 详尽çæºç èµæºåº 6
1.1.8 å¤åè½å·¥å ·èµæºåº 6
1.2 ãJavaç¼ç¨å ¨è½è¯å ¸ãéåå类人åä½¿ç¨ 6
1.3 é«ææ¥è¯¢ æºè½æ£ç´¢ 7
1.4 å¤ç§è¯å ¸ åå©ç¼ç¨ 8
1.5 享æå¤ç§æ¹å¼çå级ä¸å®åæå¡ 9
1.5.1 享åå ¨æ¹ä½æå¡ 9
1.5.2 æä¾å¤ç§å级æ¹å¼
第 2ç« ææ ·å¿«é使ç¨ãJavaç¼ç¨å ¨è½è¯å ¸ã
2.1 å¦ä½å¯å¨ãJavaç¼ç¨å ¨è½è¯å ¸ã
2.1.1 å¦ä½å¯å¨ä¸»ç¨åº
2.1.2 å¦ä½å¯å¨æµ®å¨çªå£
2.2 åè¯ãJavaç¼ç¨å ¨è½è¯å ¸ãç¨åºçé¢
2.2.1 认è¯ä¸»å¯¼èªåº
2.2.2 äºè§£åè½å¯¼èªåº
2.2.3 äºè§£å 容导èªåº
2.2.4 äºè§£å 容æ¾ç¤ºè®¾ç½®åº
2.3 ç¹è²åè½å¿«é使ç¨
2.3.1 å类管ç个人èµæº
2.3.2 ç¼ç¨èµæºæ¥è¯¢
2.3.3 æµ®å¨çªå£æ¥è¯¢
2.3.4 æ¶èéè¦ææ¡£
2.3.5 è®°å½å¦ä¹ å¿å¾
2.3.6 为æ档设置书ç¾
2.3.7 åæ¢å 容æ¾ç¤ºåº
第 3ç« å¦ä½å¨âå¼åâ使ç¨æ¨¡å¼ä¸å¦ä¹ å使ç¨ç¼ç¨èµæº
3.1 å¦ä½å类管ç个人ç¼ç¨èµæº
3.2 å¦ä¹ ææµè§ç¼ç¨ææ¯èµæº
3.3 å¦ä½å¦ä¹ æµè§åºç¨å®ä¾èµæº
3.4 å¦ä½å¦ä¹ æµè§å¼å项ç®èµæº
3.5 å¦ä½å¦ä¹ æµè§åºç¨æ¹æ¡èµæº
3.6 è§çå ¥é¨åå¼åè§é¢èµæº
3.6.1 ç¨åºå ¥é¨å¦ä¹ å½å
3.6.2 项ç®å¼åè§é¢å½å
3.7 å¦ä½æµè§å使ç¨çé¢ç´ æèµæº
3.7.1 âçé¢ä¸å¿âç´ æé¢è§ææ
3.7.2 äºè§£âçé¢ä¸å¿âç´ æå 容
3.7.3 éè¿ç®å½å¯¼èªæµè§å¾ç
3.8 æ ¹æ®å®é éè¦ä½¿ç¨âå¼åâ模å¼
3.8.1 æ¥è¯¢ç¼ç¨èµæº
3.8.2 å¦ä¹ ç¼ç¨ææ¯
3.8.3 管çæç代ç
第 4ç« ä½¿ç¨âå ¥é¨â模å¼è¿è¡é¶æ®µå¼å¦ä¹ +强åè®ç»
4.1 åé¶æ®µå¦ä¹ ç¼ç¨ææ¯
4.1.1 ä»é¶å¼å§
4.1.2 è¿é¶æé«
4.1.3 ä¸çº§å¼å
4.1.4 é«çº§å¼å
4.2 å·©åºæé«å¼åæè½
4.2.1 å ¥é¨è®ç»
4.2.2 è¿é¶è®ç»
4.2.3 ä¸çº§è®ç»
4.2.4 é«çº§è®ç»
4.3 ä¸åæ°´å¹³çç¼ç¨äººåå¦ä½ä½¿ç¨âå ¥é¨â模å¼
4.3.1 é¶åºç¡ç¼ç¨äººåå¦ä¹ æ¹æ³
4.3.2 åå¦è ç¼ç¨äººå使ç¨æ¹æ³
4.3.3 ä¸çº§å¼å人å使ç¨æ¹æ³
第 5ç« å¦ä½ä½¿ç¨âåºç¨â模å¼ç8个çåå®ç°é«æå¼å
5.1 å©ç¨ç®å½å¿«éå¦ä¹ åæ£ç´¢ç¼ç¨ææ¯
5.2 é«ææ¥è¯¢ä¸æºè½æ£ç´¢ç¼ç¨ææ¯
5.2.1 éè¿å¤ç§æ¹å¼æ·±å±æ¬¡æ¥è¯¢ç¼ç¨ææ¯
5.2.2 éè¿å个åæ¯ï¼å ³é®åï¼æºè½æ£ç´¢ç¼ç¨ææ¯
5.3 ææå©ç¨æºç å®ç°éæ©æ§ä¸è½½
5.4 计ç®æºï¼ä¸ä¸ï¼è±è¯éæ¥
5.4.1 éè¿âæç´¢âæ¥è¯¢åè¯è§£é
5.4.2 å°é¢ç¹ä½¿ç¨çè±è¯åè¯è®¾ç½®ä¸ºæ ç¾
5.5 使ç¨å¤ç§è¾ å©è¯å ¸åå©ç¼ç¨
5.5.1 SQLè¯å ¸
5.5.2 SQLæ°æ®åºææ¯
5.5.3 UMLè¯å ¸
5.5.4 软件工ç¨è¯å ¸
5.5.5 ç¨åºæµè¯è¯å ¸
5.5.6 ç¼ç è§èè¯å ¸
5.5.7 æ¯è¯è¯å ¸
5.6 åå©åç§å®ç¨å·¥å ·å¿«éæé«å¼åæç
5.7 ææéè¿å°å·¥å ·è§£å³å®é é®é¢
5.8 ä¸å人群å¦ä½ä½¿ç¨âåºç¨â模å¼è¿è¡å¿«éãé«æçå¼å
5.8.1 é«ææ¥è¯¢ä¸æ£ç´¢æµ·éç¼ç¨èµæº
5.8.2 å©ç¨è±è¯è¯å ¸ååç§è¾ å©è¯å ¸ææ解å³å®é å¼åé®é¢
5.8.3 åå©åç§å®ç¨å·¥å ·å®ç°é«æå¼å
第 6ç« å符串
6.1 charAtæ¹æ³
6.2 compareToæ¹æ³
6.3 compareToIgnoreCaseæ¹æ³
6.4 concatæ¹æ³
6.5 containsæ¹æ³
6.6 copyValueOfæ¹æ³
6.7 endsWithæ¹æ³
6.8 equalsæ¹æ³
6.9 equalsIgnoreCaseæ¹æ³
6. formatæ¹æ³
6. getBytesæ¹æ³
6. indexOfæ¹æ³
6. isEmptyæ¹æ³
6. lastIndexOfæ¹æ³
6. lengthæ¹æ³
6. replaceæ¹æ³
6. replaceAllæ¹æ³
6. replaceFirstæ¹æ³
6. splitæ¹æ³
6. startsWithæ¹æ³
6. substringæ¹æ³
6. toCharArrayæ¹æ³
6. toLowerCaseæ¹æ³
6. toUpperCaseæ¹æ³
6. trimæ¹æ³
6. valueOfæ¹æ³
第 7ç« éåç±»
7.1 Listæ¥å£
7.1.1 addæ¹æ³
7.1.2 addAllæ¹æ³
7.1.3 clearæ¹æ³
7.1.4 containsæ¹æ³
7.1.5 containsAllæ¹æ³
7.1.6 equalsæ¹æ³
7.1.7 getæ¹æ³
7.1.8 setæ¹æ³
7.1.9 hashCodeæ¹æ³
7.1. indexOfæ¹æ³
7.1. lastIndexOfæ¹æ³
7.1. isEmptyæ¹æ³
7.1. iteratoræ¹æ³
7.1. removeæ¹æ³
7.1. removeAllæ¹æ³
7.1. retainAllæ¹æ³
7.1. sizeæ¹æ³
7.1. subListæ¹æ³
7.1. toArrayæ¹æ³
7.2 Mapæ¥å£
7.2.1 clearæ¹æ³
7.2.2 containsKeyæ¹æ³
7.2.3 containsValueæ¹æ³
7.2.4 equalsæ¹æ³
7.2.5 getæ¹æ³
7.2.6 isEmptyæ¹æ³
7.2.7 keySetæ¹æ³
7.2.8 putæ¹æ³
7.2.9 putAllæ¹æ³
7.2. removeæ¹æ³
7.2. sizeæ¹æ³
7.2. valuesæ¹æ³
7.3 Setæ¥å£
7.3.1 addæ¹æ³
7.3.2 addAllæ¹æ³
7.3.3 clearæ¹æ³
7.3.4 containsæ¹æ³
7.3.5 containsAllæ¹æ³
7.3.6 equalsæ¹æ³
7.3.7 isEmptyæ¹æ³
7.3.8 iteratoræ¹æ³
7.3.9 removeæ¹æ³
7.3. removeAllæ¹æ³
7.3. retainAllæ¹æ³
7.3. sizeæ¹æ³
7.3. toArrayæ¹æ³
第 8ç« æ°æ®åºç¼ç¨
8.1 DriverManagerç±»
8.1.1 getConnectionæ¹æ³
8.1.2 setLoginTimeoutæ¹æ³
8.2 Connectionæ¥å£
8.2.1 常é
8.2.2 createStatementæ¹æ³
8.2.3 prepareStatementæ¹æ³
8.2.4 setReadOnlyæ¹æ³
8.2.5 isReadOnlyæ¹æ³
8.2.6 setAutoCommitæ¹æ³
8.2.7 getAutoCommitæ¹æ³
8.2.8 setSavepointæ¹æ³
8.2.9 releaseSavepointæ¹æ³
8.2. setTransactionIsolationæ¹æ³
8.2. getTransactionIsolationæ¹æ³
8.2. commitæ¹æ³
8.2. rollbackæ¹æ³
8.2. closeæ¹æ³
8.2. isClosedæ¹æ³
8.3 Statementæ¥å£
8.3.1 常é
8.3.2 executeæ¹æ³
8.3.3 executeUpdateæ¹æ³
8.3.4 executeQueryæ¹æ³
8.3.5 getConnectionæ¹æ³
8.3.6 setMaxRowsæ¹æ³
8.3.7 getMaxRowsæ¹æ³
8.3.8 closeæ¹æ³
8.3.9 isClosedæ¹æ³
8.4 PreparedStatementæ¥å£
8.4.1 executeæ¹æ³
8.4.2 executeQueryæ¹æ³
8.4.3 executeUpdateæ¹æ³
8.4.4 setBooleanæ¹æ³
8.4.5 setByteæ¹æ³
8.4.6 setBytesæ¹æ³
8.4.7 setDateæ¹æ³
8.4.8 setTimeæ¹æ³
8.4.9 setTimestampæ¹æ³
8.4. setDoubleæ¹æ³
8.4. setFloatæ¹æ³
8.4. setIntæ¹æ³
8.4. setLongæ¹æ³
8.4. setShortæ¹æ³
8.4. setStringæ¹æ³
8.5 ResultSetæ¥å£
8.5.1 常é
8.5.2 afterLastæ¹æ³
8.5.3 beforeFirstæ¹æ³
8.5.4 closeæ¹æ³
8.5.5 firstæ¹æ³
8.5.6 getBooleanæ¹æ³
8.5.7 getByteæ¹æ³
8.5.8 getBytesæ¹æ³
8.5.9 getDateæ¹æ³
8.5. getTimeæ¹æ³
8.5. getTimestampæ¹æ³
8.5. getDoubleæ¹æ³
8.5. getFloatæ¹æ³
8.5. getIntæ¹æ³
8.5. getLongæ¹æ³
8.5. getObjectæ¹æ³
8.5. getShortæ¹æ³
8.5. getStringæ¹æ³
8.5. getTypeæ¹æ³
8.5. isAfterLastæ¹æ³
8.5. isBeforeFirstæ¹æ³
8.5. isClosedæ¹æ³
8.5. isFirstæ¹æ³
8.5. isLastæ¹æ³
8.5. lastæ¹æ³
8.5. nextæ¹æ³
8.5. previousæ¹æ³
第 9ç« JSPæ令
9.1 includeæ令
9.2 Pageæ令
9.2.1 autoFlushå±æ§
9.2.2 bufferå±æ§
9.2.3 languageå±æ§
9.2.4 contentTypeå±æ§
9.2.5 errorPageå±æ§
9.2.6 extendså±æ§
9.2.7 importå±æ§
9.2.8 infoå±æ§
9.2.9 isErrorPageå±æ§
9.2. isIEIgnoredå±æ§
9.2. pageEncodingå±æ§
9.3 taglibæ令
第 ç« JSPçå¨ä½æ ç¾
.1 <jsp:fallback>
.2 <jsp:forward>
.3 <jsp:getProperty>
.4 <jsp:include>
.5 <jsp:param>
.6 <jsp:params>
.7 <jsp:plugin>
.8 <jsp:setProperty>
.9 <jsp:useBean>
第 ç« JSPå 置对象
.1 application对象
.1.1 getAttribute(String name)æ¹æ³
.1.2 getAttributeNameæ¹æ³
.1.3 getRealPath(String path)æ¹æ³
.1.4 getResource(Stirng path)æ¹æ³
.1.5 getServletInfoæ¹æ³
.1.6 removeAttribute(String key)æ¹æ³
.1.7 setAttribute(String name,Object object)æ¹æ³
.2 config对象
.2.1 getInitParameteræ¹æ³
.2.2 getInitParameterNamesæ¹æ³
.2.3 getServletContextæ¹æ³
.2.4 getServletNameæ¹æ³
.3 exception对象
.3.1 getMessageæ¹æ³
.3.2 getLocalizedMessageæ¹æ³
.3.3 printStackTraceæ¹æ³
.4 outè¾åºå¯¹è±¡
.4.1 clearæ¹æ³
.4.2 clearBufferæ¹æ³
.4.3 closeæ¹æ³
.4.4 flushæ¹æ³
.4.5 getBufferSizeæ¹æ³
.4.6 getRemainingæ¹æ³
.4.7 isAutoFlushæ¹æ³
.4.8 printæ¹æ³
.4.9 printlnæ¹æ³
.4. å ¶ä»printlnæ¹æ³
.5 page对象
.5.1 getClassæ¹æ³
.6 pageContext对象
.6.1 forwardæ¹æ³
.6.2 getAttributeæ¹æ³
.6.3 getExceptionæ¹æ³
.6.4 getRequestæ¹æ³
.6.5 getResponseæ¹æ³
.6.6 getServletConfigæ¹æ³
.6.7 removeAttributeæ¹æ³
.6.8 setAttributeæ¹æ³
.7 request对象
.7.1 getAttributeæ¹æ³
.7.2 getAttributeNamesæ¹æ³
.7.3 getCookiesæ¹æ³
.7.4 getCharacterEncodingæ¹æ³
.7.5 getContentLengthæ¹æ³
.7.6 getHeaderæ¹æ³
.7.7 getHeadersæ¹æ³
.7.8 getHeadersNamesæ¹æ³
.7.9 getInputStreamæ¹æ³
.7. getMethodæ¹æ³
.7. getParameteræ¹æ³
.7. getParameterValuesæ¹æ³
.7. getProtocolæ¹æ³
.7. getQueryStringæ¹æ³
.7. getRequestURIæ¹æ³
.7. getRequestURLæ¹æ³
.7. getRemoteAddræ¹æ³
.7. getRemoteHostæ¹æ³
.7. getSessionæ¹æ³
.7. getServerNameæ¹æ³
.7. getServerPathæ¹æ³
.7. getServerPortæ¹æ³
.7. isUserInRoleæ¹æ³
.7. removeAttributeæ¹æ³
.7. setAttributeæ¹æ³
.8 response对象
.8.1 addCookieæ¹æ³
.8.2 addHeaderæ¹æ³
.8.3 containsHeaderæ¹æ³
.8.4 getCharacterEncodingæ¹æ³
.8.5 getOutputStreamæ¹æ³
.8.6 sendErroræ¹æ³
.8.7 sendRedirectæ¹æ³
.8.8 setContentTypeæ¹æ³
.8.9 setDateHeaderæ¹æ³
.8. setHeaderæ¹æ³
.9 session对象
.9.1 getAttributeæ¹æ³
.9.2 getAttributeNamesæ¹æ³
.9.3 getCreationTimeæ¹æ³
.9.4 getIdæ¹æ³
.9.5 getLastAccessedTimeæ¹æ³
.9.6 getMaxInactiveIntervalæ¹æ³
.9.7 setAttibuteæ¹æ³
.9.8 setMaxInactiveIntervalæ¹æ³
.9.9 removeAttributeæ¹æ³
第 ç« JSTLæ ¸å¿æ ç¾åº
.1 表达å¼æ ç¾
.1.1 <c:out>æ ç¾
.1.2 <c:set>æ ç¾
.1.3 <c:remove>æ ç¾
.1.4 <c:catch>æ ç¾
.2 æµç¨æ§å¶æ ç¾
.2.1 <c:if>æ ç¾
.2.2 <c:choose>æ ç¾
.2.3 <c:when>æ ç¾
.2.4 <c:otherwise>æ ç¾
.3 循ç¯æ ç¾
.3.1 <c:forEach>æ ç¾
.3.2 <c:forTokens>æ ç¾
.4 URLæä½æ ç¾
.4.1 <c:import>æ ç¾
.4.2 <c:redirect>æ ç¾
.4.3 <c:url>æ ç¾
.4.4 <c:param>æ ç¾
第 ç« Strutsæ§å¶å¨ç»ä»¶
.1 Actionç±»
.1.1 addErrorsæ¹æ³
.1.2 addMessagesæ¹æ³
.1.3 executeæ¹æ³
.1.4 isTokenValidæ¹æ³
.1.5 getResourcesæ¹æ³
.1.6 resetTokenæ¹æ³
.1.7 saveTokenæ¹æ³
.1.8 saveErrorsæ¹æ³
.1.9 saveMessagesæ¹æ³
.2 ActionServletç±»
.2.1 doGetæ¹æ³
.2.2 doPostæ¹æ³
.2.3 destroyæ¹æ³
.2.4 initæ¹æ³
.2.5 initInternalæ¹æ³
.2.6 initOtheræ¹æ³
.2.7 processæ¹æ³
.3 DispatchActionç±»
.3.1 executeæ¹æ³
.3.2 getParameteræ¹æ³
.3.3 getMethodNameæ¹æ³
.4 ForwardActionç±»
.4.1 executeæ¹æ³
.5 IncludeActionç±»
.5.1 executeæ¹æ³
.6 LookupDispatchActionç±»
.6.1 executeæ¹æ³
.6.2 getKeyMethodMapæ¹æ³
.6.3 getMethodNameæ¹æ³
.7 ModuleUtilsç±»
.7.1 getInstance()æ¹æ³
.7.2 getModuleConfig()æ¹æ³
.8 SwitchActionç±»
.8.1 executeæ¹æ³
第 ç« Struts Beanæ ç¾åº
.1 <bean:define>æ ç¾
.2 <bean:cookie>æ ç¾
.3 <bean:header>æ ç¾
.4 <bean:parameter>æ ç¾
.5 <bean:page>æ ç¾
.6 <bean:size>æ ç¾
.7 <bean:message>æ ç¾
.8 <bean:write>æ ç¾
.9 <bean:resource>æ ç¾
. <bean:include>æ ç¾
. <bean:struts>æ ç¾
第 ç« Struts HTMLæ ç¾åº
.1 <html:base>æ ç¾
.2 <html:checkbox>æ ç¾
.3 <html:errors>æ ç¾
.4 <html:file>æ ç¾
.5 <html:form>æ ç¾
.6 <html:hidden>æ ç¾
.7 <html:html>æ ç¾
.8 <html:img>æ ç¾
.9 <html:image>æ ç¾
. <html:link>æ ç¾
. <html:messages>æ ç¾
. <html:multibox>æ ç¾
. <html:option>æ ç¾
. <html:options>æ ç¾
. <html:optionCollection>æ ç¾
. <html:password>æ ç¾
. <html:radio>æ ç¾
. <html:submit>æ ç¾
. <html:select>æ ç¾
. <html:text>æ ç¾
. <html:textarea>æ ç¾
第 ç« Struts Logicæ ç¾åº
.1 <logic:equal>æ ç¾
.2 <logic:notEqual>æ ç¾
.3 <logic:greaterEqual>æ ç¾
.4 <logic:greaterThan>æ ç¾
.5 <logic:lessEqual>æ ç¾
.6 <logic:lessThan>æ ç¾
.7 <logic:match>æ ç¾
.8 <logic:notMatch>æ ç¾
.9 <logic:empty>æ ç¾
. <logic:notEmpty>æ ç¾
. <logic:present>æ ç¾
. <logic:notPresent>æ ç¾
. <logic:messagesPresent>æ ç¾
. <logic:messagesNotPresent>æ ç¾
. <logic:iterate>æ ç¾
. <logic:forward>æ ç¾
. <logic:redirect>æ ç¾
第 ç« Hibernate常ç¨ç±»ä¸æ¥å£
.1 Configurationç±»
.1.1 æé æ¹æ³
.1.2 configureæ¹æ³
.1.3 addClassæ¹æ³
.1.4 buildSessionFactoryæ¹æ³
.1.5 addResourceæ¹æ³
.1.6 setPropertyæ¹æ³
.2 SessionFactoryæ¥å£
.2.1 openSessionæ¹æ³
.2.2 isClosedæ¹æ³
.2.3 closeæ¹æ³
.3 Sessionæ¥å£
.3.1 beginTransactionæ¹æ³
.3.2 isOpenæ¹æ³
.3.3 closeæ¹æ³
.3.4 saveæ¹æ³
.3.5 updateæ¹æ³
.3.6 saveOrUpdateæ¹æ³
.3.7 deleteæ¹æ³
.3.8 getæ¹æ³
.3.9 loadæ¹æ³
.3. evictæ¹æ³
.3. clearæ¹æ³
.3. containsæ¹æ³
.3. createQueryæ¹æ³
.3. createSQLQueryæ¹æ³
.3. createCriteriaæ¹æ³
.3. lockæ¹æ³
.4 Transactionæ¥å£
.4.1 beginæ¹æ³
.4.2 commitæ¹æ³
.4.3 rollbackæ¹æ³
.4.4 wasCommittedæ¹æ³
.4.5 wasRolledBackæ¹æ³
.5 Queryæ¥å£
.5.1 listæ¹æ³
.5.2 iterateæ¹æ³
.5.3 uniqueResultæ¹æ³
.5.4 setMaxResultsæ¹æ³
.5.5 setFirsResultæ¹æ³
.5.6 setEntityæ¹æ³
.5.7 setParameteræ¹æ³
.5.8 setDateæ¹æ³
.5.9 setStringæ¹æ³
.5. setIntegeræ¹æ³
.5. setBooleanæ¹æ³
.5. setDoubleæ¹æ³
.5. setFloatæ¹æ³
.6 Criteriaæ¥å£
.6.1 addæ¹æ³
.6.2 addOrderæ¹æ³
.6.3 createCriteriaæ¹æ³
.6.4 createAliasæ¹æ³
.6.5 listæ¹æ³
.6.6 setMaxResultsæ¹æ³
.6.7 setFirsResultæ¹æ³
.6.8 uniqueResultæ¹æ³
.6.9 setProjectionæ¹æ³
.7 Projectionsç±»
.7.1 projectionListæ¹æ³
.7.2 idæ¹æ³
.7.3 propertyæ¹æ³
.7.4 distinctæ¹æ³
.7.5 groupPropertyæ¹æ³
.7.6 avgæ¹æ³
.7.7 sumæ¹æ³
.7.8 maxæ¹æ³
.7.9 minæ¹æ³
.7. rowCountæ¹æ³
.7. countæ¹æ³
.8 Restrictionsç±»
.8.1 allEqæ¹æ³
.8.2 eqæ¹æ³
.8.3 ltæ¹æ³
.8.4 leæ¹æ³
.8.5 gtæ¹æ³
.8.6 geæ¹æ³
.8.7 betweenæ¹æ³
.8.8 likeæ¹æ³
.8.9 inæ¹æ³
.8. andæ¹æ³
.8. oræ¹æ³
.8. notæ¹æ³
.8. isNotNullæ¹æ³
.8. isNullæ¹æ³
.8. sqlRestrictionæ¹æ³
.9 SQLQueryæ¥å£
.9.1 addEntityæ¹æ³
.9.2 addJoinæ¹æ³
.9.3 addScalaræ¹æ³
第 ç« Hibernateé ç½®å±æ§
.1 dialectå±æ§
.2 connection.driver_classå±æ§
.3 connection.urlå±æ§
.4 connection.usernameå±æ§
.5 connection.passwordå±æ§
.6 show_sqlå±æ§
.7 format_sqlå±æ§
.8 use_sql_commentså±æ§
.9 default_schemaå±æ§
. default_catalogå±æ§
. session_factory_nameå±æ§
. max_fetch_depthå±æ§
. default_batch_fetch_sizeå±æ§
. default_entity_modeå±æ§
. order_updateså±æ§
. generate_statisticså±æ§
. use_identifer_rollbackå±æ§
. cache.use_query_cacheå±æ§
. cache.use_second_level_cacheå±æ§
. cache.provider_classå±æ§
. cache.region_prefixå±æ§
. cache.use_minimal_putså±æ§
. transaction. factory_classå±æ§
第 ç« Hibernateæ å°èç¹
.1 <hibernate-mapping>èç¹
.2 <class>èç¹
.3 <id>èç¹
.4 <generator>èç¹
.5 <key>èç¹
.6 <property >èç¹
.7 <one-to-one>èç¹
.8 <many-to-many>èç¹
.9 <set>èç¹
. <many-to-one>èç¹
. <one-to-many>èç¹
第 ç« Spring容å¨
.1 ClassPathXmlApplicationContextç±»
.1.1 æé æ¹æ³
.2 FileSystemXmlApplicationContextç±»
.2.1 æé æ¹æ³
.3 XmlBeanFactoryç±»
.3.1 æé æ¹æ³
.4 WebApplicationContextæ¥å£
.5 Spring容å¨ç±»çæ¹æ³
.5.1 containsBeanæ¹æ³
.5.2 getBeanæ¹æ³
.5.3 getBeanDefinitionCountæ¹æ³
.5.4 getBeanDefinitionNamesæ¹æ³
.5.5 getBeanNamesForTypeæ¹æ³
.5.6 getBeansOfTypeæ¹æ³
.5.7 getConfigLocationsæ¹æ³
.5.8 getTypeæ¹æ³
.5.9 isSingletonæ¹æ³
.5. isTypeMatchæ¹æ³
.5. getServletContextæ¹æ³
第 ç« Springæä¹ å
.1 DriverManagerDataSourceç±»
.1.1 æé æ¹æ³
.1.2 getConnectionæ¹æ³
.1.3 getConnectionPropertiesæ¹æ³
.1.4 getDriverClassNameæ¹æ³
.1.5 getPasswordæ¹æ³
.1.6 getUrlæ¹æ³
.1.7 getUsernameæ¹æ³
.1.8 setConnectionPropertiesæ¹æ³
.1.9 setDriverClassNameæ¹æ³
.1. setPasswordæ¹æ³
.1. setUrlæ¹æ³
.1. setUsernameæ¹æ³
.2 HibernateTemplateç±»
.2.1 æé æ¹æ³
.2.2 deleteæ¹æ³
.2.3 deleteAllæ¹æ³
.2.4 executeæ¹æ³
.2.5 executeFindæ¹æ³
.2.6 findæ¹æ³
.2.7 getæ¹æ³
.2.8 loadAllæ¹æ³
.2.9 saveæ¹æ³
.2. saveOrUpdateæ¹æ³
.2. saveOrUpdateAllæ¹æ³
.2. updateæ¹æ³
.3 JdbcTemplateç±»
.3.1 batchUpdateæ¹æ³
.3.2 queryæ¹æ³
.3.3 queryForIntæ¹æ³
.3.4 queryForListæ¹æ³
.3.5 queryForLongæ¹æ³
.3.6 queryForMapæ¹æ³
.3.7 queryForObjectæ¹æ³
.3.8 updateæ¹æ³
第 ç« Spring Web表åæ ç¾
.1 <form:checkbox>
.2 <form:errors>
.3 <form:form>
.4 <form:hidden>
.5 <form:input>
.6 <form:option>
.7 <form:options>
.8 <form:password>
.9 <form:radiobutton>
. <form:select>
. <form:textarea>