# JavaEE
### JSP&é¨å
**1. jsp å servlet æä»ä¹åºå«ï¼**
* JSPæ¯Javaè¯è¨åµå
¥å°Html代ç ä¸èæ¥çï¼æ¯JavaåHTMLç»åæä¸ä¸ªæ©å±å为.jspçæä»¶ï¼å
¶æ¬è´¨å°±æ¯Servletãä½JVMä¸è½è¯å«JSPç代ç ï¼Web容å¨å°JSPç代ç ç¼è¯æJVMè½å¤è¯å«çJavaç±»ã
* Jspæ´æ
é¿é¡µé¢æ¾ç¤º,Servletæ´æ
é¿é»è¾æ§å¶ãServletåæ¯ä¸ªå®æ´çJavaç±»ï¼è¿ä¸ªç±»çServiceæ¹æ³ç¨äºçæå¯¹å®¢æ·ç«¯çååºãServletçåºç¨é»è¾æ¯å¨Javaæä»¶ä¸ï¼å¹¶ä¸å®å
¨ä»è¡¨ç¤ºå±ä¸çHTMLéåç¦»å¼æ¥ã
* Servlet䏿²¡æå
置对象ï¼Jspä¸çå
ç½®å¯¹è±¡é½æ¯å¿
é¡»éè¿HttpServletRequest对象ï¼HttpServletResponse对象以åHttpServlet对象å¾å°.
**2. jsp æåªäºå
置对象ï¼ä½ç¨å嫿¯ä»ä¹ï¼**
JSP å
±æä»¥ä¸9个å
ç½®ç对象ï¼
* request ç¨æ·ç«¯è¯·æ±ï¼æ¤è¯·æ±ä¼å
嫿¥èªGET/POST请æ±çåæ°ï¼å¹¶ä¸æä¾äºå 个ç¨äºè·åcookie, header, åsessionæ°æ®çæç¨çæ¹æ³ã
* response ç½é¡µä¼ åç¨æ·ç«¯çååº
* pageContext 管çç½é¡µç屿§ï¼æä¾äºå¯¹JSP页é¢å
ææç对象ååå空é´ï¼å°±æ¯å大ä½ç¨å空é´ï¼å¦page空é´ãrequest空é´ãsession空é´ãapplication空é´ï¼ç访é®ã
* session ä¸è¯·æ±æå
³çä¼è¯æï¼Sessionå¯ä»¥åè´®ç¨æ·çç¶æä¿¡æ¯ã
* application servlet 类似äºç³»ç»çå
¨å±åéï¼ç¨äºå®ç°Webåºç¨ä¸çèµæºå
±äº«ã
* out ç¨æ¥ä¼ éååºçè¾åº
* config servlet åæ¾JSPç¼è¯åçåå§æ°æ®ã
* page JSPç½é¡µæ¬èº«
* exception é对é误ç½é¡µï¼æªææçä¾å¤ã表示JSP页é¢è¿è¡æ¶äº§ççå¼å¸¸åé误信æ¯ï¼è¯¥å¯¹è±¡åªæå¨é误页é¢ï¼pageæä»¤ä¸è®¾å®isErrorPage为trueç页é¢ï¼ä¸æè½å¤ä½¿ç¨ã
**3. 说ä¸ä¸ jsp ç 4 ç§ä½ç¨åï¼**
* JSPçå大ä½ç¨åï¼pageãrequestãsessionãapplicationã
* è¿å大ä½ç¨åï¼å
¶å®å°±æ¯å
¶ä¹å¤§å
置对象ä¸çå个ï¼ä¸ºä»ä¹è¯´ä»ä»¬ä¹æ¯JSPçå大ä½ç¨åå¢ï¼å 为è¿å个对象é½è½å卿°æ®ï¼æ¯å¦request.setAttribute()注æårequest.setParameter()åºå弿¥ï¼ä¸ä¸ªæ¯åå¨å¨åä¸çãä¸ä¸ªæ¯è¯·æ±åæ°ï¼session.setAttribute()ãapplicationå
¶å®å°±æ¯SerlvetContextï¼èªç¶ä¹æsetAttribute()æ¹æ³ãèpageä½ç¨åçæä½å°±éè¦ä¾é pageContext对象æ¥è¿è¡äºãå¨ä¸é¢æä»¬ä¹ææå°JSPçå大ä½ç¨åï¼
* pageä½ç¨åï¼ä»£è¡¨åéåªè½å¨å½å页é¢ä¸çæ
* requestï¼ä»£è¡¨åéè½å¨ä¸æ¬¡è¯·æ±ä¸çæï¼ä¸æ¬¡è¯·æ±å¯è½å
å«ä¸ä¸ªé¡µé¢ï¼ä¹å¯è½å
å«å¤ä¸ªé¡µé¢ï¼æ¯å¦é¡µé¢A请æ±è½¬åå°é¡µé¢B
* sessionï¼ä»£è¡¨åéè½å¨ä¸æ¬¡ä¼è¯ä¸çæï¼åºæ¬ä¸å°±æ¯è½å¨web项ç®ä¸é½ææï¼sessionç使ç¨ä¹è·cookieæå¾å¤§çå
³ç³»ãä¸è¬æ¥è¯´ï¼åªè¦æµè§å¨ä¸å
³éï¼cookieå°±ä¼ä¸ç´çæï¼cookieçæï¼sessionç使ç¨å°±ä¸ä¼åå°å½±åã
* applicationï¼ä»£è¡¨åéè½ä¸ä¸ªåºç¨ä¸(å¤ä¸ªä¼è¯)ï¼å¨æå¡å¨ä¸çå¤ä¸ªé¡¹ç®ä¹é´é½è½å¤ä½¿ç¨ãæ¯å¦baiduãwenkuçå
±äº«å¸å·ã
**4. session å cookie æä»ä¹åºå«ï¼**
1ï¼cookieä»¥ææ¬æ ¼å¼åå¨å¨æµè§å¨ä¸ï¼åå¨éæéï¼åªå
许4KBï¼èä¼è¯åå¨å¨æå¡ç«¯ï¼å¯ä»¥æ ééåå¨å¤ä¸ªåé并䏿¯cookieæ´å®å
¨ã
2ï¼è®¾ç½®cookieæ¶é´å¯ä»¥ä½¿cookieè¿æã使ç¨session-destoryï¼ï¼ï¼æä»¬å°ä¼éæ¯ä¼è¯ã
3ï¼cookie䏿¯å¾å®å
¨ï¼å«äººå¯ä»¥åæåæ¾å¨æ¬å°çCOOKIEå¹¶è¿è¡COOKIE欺éªï¼èèå°å®å
¨åºå½ä½¿ç¨sessionã
4ï¼sessionä¼å¨ä¸å®æ¶é´å
ä¿å卿å¡å¨ä¸ãå½è®¿é®å¢å¤ï¼ä¼æ¯è¾å ç¨æå¡å¨çæ§è½ï¼èèå°åè½»æå¡å¨æ§è½æ¹é¢ï¼åºå½ä½¿ç¨COOKIEã
**5. 说ä¸ä¸ session çå·¥ä½åçï¼**
* sessionæºå¶æ¯ä¸ç§æå¡å¨ç«¯çæºå¶ï¼æå¡å¨ä½¿ç¨ä¸ç§ç±»ä¼¼äºæ£å表çç»æï¼ä¹å¯è½å°±æ¯ä½¿ç¨æ£åè¡¨ï¼æ¥ä¿åä¿¡æ¯ã
* å½ç¨åºéè¦ä¸ºæä¸ªå®¢æ·ç«¯ç请æ±å建ä¸ä¸ªsessionçæ¶åï¼æå¡å¨é¦å
æ£æ¥è¿ä¸ªå®¢æ·ç«¯ç请æ±éæ¯å¦å·²å
å«äºä¸ä¸ªsessionæ è¯ - 称为session idï¼å¦æå·²å
å«ä¸ä¸ªsession idå说æä»¥åå·²ç»ä¸ºæ¤å®¢æ·ç«¯å建è¿sessionï¼æå¡å¨å°±æç
§session idæè¿ä¸ªsessionæ£ç´¢åºæ¥ä½¿ç¨ï¼å¦ææ£ç´¢ä¸å°ï¼å¯è½ä¼æ°å»ºä¸ä¸ªï¼ï¼å¦æå®¢æ·ç«¯è¯·æ±ä¸å
å«session idï¼å为æ¤å®¢æ·ç«¯å建ä¸ä¸ªsessionå¹¶ä¸çæä¸ä¸ªä¸æ¤sessionç¸å
³èçsession idï¼session idçå¼åºè¯¥æ¯ä¸ä¸ªæ¢ä¸ä¼éå¤ï¼åä¸å®¹æè¢«æ¾å°è§å¾ä»¥ä»¿é çå符串ï¼è¿ä¸ªsession idå°è¢«å¨æ¬æ¬¡ååºä¸è¿åç»å®¢æ·ç«¯ä¿åã ä¿åè¿ä¸ªsession idçæ¹å¼å¯ä»¥éç¨cookieï¼è¿æ ·å¨äº¤äºè¿ç¨ä¸æµè§å¨å¯ä»¥èªå¨çæç
§è§åæè¿ä¸ªæ è¯åæ¥ç»æå¡å¨ã
* ç±äºcookieå¯ä»¥è¢«äººä¸ºçç¦æ¢ï¼å¿
é¡»æå
¶ä»æºå¶ä»¥ä¾¿å¨cookieè¢«ç¦æ¢æ¶ä»ç¶è½å¤æsession idä¼ éåæå¡å¨ãç»å¸¸è¢«ä½¿ç¨çä¸ç§ææ¯å«åURLéåï¼å°±æ¯æsession idç´æ¥éå å¨URLè·¯å¾çåé¢ï¼éå æ¹å¼ä¹æä¸¤ç§ï¼ä¸ç§æ¯ä½ä¸ºURLè·¯å¾çéå ä¿¡æ¯ï¼è¡¨ç°å½¢å¼ä¸º[http://...../xxx;jsessionid=ByOK](https://blog.csdn.net/xxx;jsessionid=ByOK) ... 99zWpBng!-145788764 å¦ä¸ç§æ¯ä½ä¸ºæ¥è¯¢å符串éå å¨URLåé¢ï¼è¡¨ç°å½¢å¼ä¸º[http://...../xxx?jsessionid=ByOK](https://blog.csdn.net/xxx?jsessionid=ByOK) ... 99zWpBng!-145788764 è¿ä¸¤ç§æ¹å¼å¯¹äºç¨æ·æ¥è¯´æ¯æ²¡æåºå«çï¼åªæ¯æå¡å¨å¨è§£æçæ¶åå¤ççæ¹å¼ä¸åï¼éç¨ç¬¬ä¸ç§æ¹å¼ä¹æå©äºæsession idçä¿¡æ¯åæ£å¸¸ç¨åºåæ°åºå弿¥ã 为äºå¨æ´ä¸ªäº¤äºè¿ç¨ä¸å§ç»ä¿æç¶æï¼å°±å¿
须卿¯ä¸ªå®¢æ·ç«¯å¯è½è¯·æ±çè·¯å¾åé¢é½å
å«è¿ä¸ªsession idã
* å¦ä¸ç§ææ¯å«å表åéèåæ®µãå°±æ¯æå¡å¨ä¼èªå¨ä¿®æ¹è¡¨åï¼æ·»å ä¸ä¸ªéèåæ®µï¼ä»¥ä¾¿å¨è¡¨åæäº¤æ¶è½å¤æsession idä¼ éåæå¡å¨ã
* å¨è°è®ºsessionæºå¶çæ¶åï¼å¸¸å¸¸å¬å°è¿æ ·ä¸ç§è¯¯è§£âåªè¦å
³éæµè§å¨ï¼sessionå°±æ¶å¤±äºâãå
¶å®å¯ä»¥æ³è±¡ä¸ä¸ä¼åå¡çä¾åï¼é¤éé¡¾å®¢ä¸»å¨ å¯¹åºå®¶æåºéå¡ï¼å¦ååºå®¶ç»å¯¹ä¸ä¼è½»æå é¤é¡¾å®¢çèµæã对sessionæ¥è¯´ä¹æ¯ä¸æ ·çï¼é¤éç¨åºéç¥æå¡å¨å é¤ä¸ä¸ªsessionï¼å¦åæå¡å¨ä¼ä¸ç´ä¿ çï¼ç¨åºä¸è¬é½æ¯å¨ç¨æ·ålog offçæ¶åå个æä»¤å»å é¤sessionãç¶èæµè§å¨ä»æ¥ä¸ä¼ä¸»å¨å¨å
³éä¹åéç¥æå¡å¨å®å°è¦å
³éï¼å æ¤æå¡å¨æ ¹æ¬ä¸ä¼ææºä¼ç¥éæµè§å¨å·²ç»å
³éï¼ä¹æä»¥ä¼æè¿ç§éè§ï¼æ¯å¤§é¨åsessionæºå¶é½ä½¿ç¨ä¼è¯cookieæ¥ä¿åsession idï¼èå
³éæµè§å¨åè¿ä¸ªsession idå°±æ¶å¤±äºï¼åæ¬¡è¿æ¥æå¡å¨æ¶ä¹å°±æ æ³æ¾å°åæ¥çsessionã妿æå¡å¨è®¾ç½®çcookie被ä¿åå°ç¡¬çä¸ï¼æè
ä½¿ç¨æç§ææ®µæ¹åæµè§å¨ååºç HTTP请æ±å¤´ï¼æåæ¥çsession idåéç»æå¡å¨ï¼å忬¡æå¼æµè§å¨ä»ç¶è½å¤æ¾å°åæ¥çsessionã
* æ°æ°æ¯ç±äºå
³éæµè§å¨ä¸ä¼å¯¼è´session被å é¤ï¼è¿«ä½¿æå¡å¨ä¸ºseesion设置äºä¸ä¸ªå¤±ææ¶é´ï¼å½è·ç¦»å®¢æ·ç«¯ä¸ä¸æ¬¡ä½¿ç¨sessionçæ¶é´è¶
è¿è¿ä¸ªå¤±ææ¶é´æ¶ï¼æå¡å¨å°±å¯ä»¥è®¤ä¸ºå®¢æ·ç«¯å·²ç»åæ¢äºæ´»å¨ï¼æä¼æsessionå é¤ä»¥èçåå¨ç©ºé´ã
**6. 妿客æ·ç«¯ç¦æ¢ cookie è½å®ç° session è¿è½ç¨åï¼**
* å¦æç¨æ·ç¦æ¢cookieï¼æå¡å¨ä»ä¼å°sessionId以cookieçæ¹å¼åéç»æµè§å¨ï¼ä½æ¯ï¼æµè§å¨ä¸åä¿åè¿ä¸ªcookie(å³sessionId)äºã妿æ³ç»§ç»ä½¿ç¨sessionï¼éè¦éåå
¶ä»æ¹å¼æ¥å®ç°sessionIdçè·è¸ªãå¯ä»¥ä½¿ç¨urlé忥å®ç°sessionIdçè·è¸ªãå³ï¼æä¼è¯IDéå å¨HTML页é¢ä¸ææçURLä¸ï¼è¿äºé¡µé¢ä½ä¸ºååºåéç»å®¢æ·ãè¿æ ·ï¼å½ç¨æ·åå»URLæ¶ï¼ä¼è¯ID被èªå¨ä½ä¸ºè¯·æ±è¡çä¸é¨ååéåæå¡å¨ãè¿ç§æ¹æ³ç§°ä¸ºURLéå(URL rewriting)ã
_**使ç¨URLéååºè¯¥æ³¨æä¸é¢å ç¹ï¼**_
1. å¦æä½¿ç¨URLéåï¼åºè¯¥å¨åºç¨ç¨åºçææé¡µé¢ä¸ï¼å¯¹ææçURLç¼ç ï¼å
æ¬ææçè¶
龿¥å表åçaction屿§å¼ã
2. åºç¨ç¨åºçææç页é¢é½åºè¯¥æ¯å¨æçãå 为ä¸åçç¨æ·å
·æä¸åçä¼è¯IDï¼å æ¤å¨éæHTML页é¢ä¸æ æ³å¨URLä¸éå ä¼è¯IDã
3. ææéæçHTML页é¢å¿
é¡»éè¿Servletè¿è¡ï¼å¨å®å°é¡µé¢åéç»å®¢æ·æ¶ä¼éåURLã
**7. è§£éä¸ä¸ä»ä¹æ¯ servletï¼**
* Servletæ¯ä¸ç§æå¡ç«¯çJavaææ¯ï¼å¯ä»¥çæå¨æWEB页é¢ãServletå
·ææ´å¥½çå¯ç§»æ¤æ§ï¼æ´å¼ºå¤§çåè½ï¼æ´é«çæçï¼æ´å¥½çå®å
¨æ§ã
* Servlet 主è¦ç¨äºå¤ç客æ·ç«¯ä¼ æ¥çHttp 请æ±ï¼å¹¶è¿åä¸ä¸ªååºï¼é常æ¥è¯´Servletå°±æ¯æHttpServletï¼ç¨äºå¤çHttp请æ±ï¼å
¶è½å¤å¤ççè¯·æ±ædoGet()ï¼doPost()ï¼service()çæ¹æ³ï¼å¼åservletæ¶ç´æ¥ç»§æ¿javax.servlet,http.HttpServlet.
* Servletéè¦å¨web.xmlä¸è¿è¡æè¿°ï¼ä¾å¦ãæ å°æ§è¡servletçååï¼é
ç½®servletç±»ï¼åå§ååæ°ï¼è¿è¡å®å
¨é
ç½®ï¼URLæ å°å设置å¯å¨ä¼å
æãServletä¸ä»
å¯ä»¥çæHTMLèæ¬è¾åºï¼ä¹å¯ä»¥çæäºè¿å¶è¡¨åè¾åºã
* ç°å¨è®¸å¤æµè¡æ¡æ¶é½ç¦»ä¸å¼Servletçæ¯æï¼æ¯å¦Spring 容å¨å¯å¨çæ¶åï¼è¦å¨web.xmlä¸è£
è½½Spring容å¨åActioncontextæ¥åå§åSpringçä¸äºåæ°ãå¦ä¾èµæ³¨å
¥ï¼æ°æ®åºè¡¨çæ å°ï¼åå§åç³»ç»çå®å
¨é
ç½®ï¼è®¾ç½®readç屿§è¿è¡ä¸äºç¸å
³çæä½ã
**8. 说ä¸è¯´ Servlet ççå½å¨æ?**
* servlet æè¯å¥½ççåæçå®ä¹ï¼ å
æ¬å è½½åå®ä¾åã åå§åã å¤ç请æ±ä»¥åæå¡ç»æã
* è¿ä¸ªçåæç± javax.servlet.Servlet æ¥å£ç init,service å destroy æ¹æ³è¡¨è¾¾ã
* web 容å¨å è½½ servletï¼ çå½å¨æå¼å§ã éè¿è°ç¨ servlet ç init()æ¹æ³è¿è¡ servlet çåå§åã
* éè¿è°ç¨ service()æ¹æ³å®ç°ï¼ æ ¹æ®è¯·æ±çä¸åè°ç¨ä¸åç do***()æ¹æ³ã ç»ææå¡ï¼ web 容
* å¨è°ç¨ servlet ç destroy()æ¹æ³ã
**9. servlrt API ä¸ forward()ä¸ redirect()çåºå«ï¼**
* forwardæ¯æå¡å¨ç«¯ç转åä¹å°±æ¯è¯·æ±è½¬åï¼èredirectæ¯å®¢æ·ç«¯ç跳转ä¹å°±æ¯éå®å
* 使ç¨forwardæµè§å¨çå°åä¸ä¼åçæ¹åï¼èredirectä¼åçæ¹åã
* forwardæ¯ä¸æ¬¡è¯·æ±ä¸å®æï¼èredirectæ¯éæ°å起请æ±ã
* forwardæ¯å¨æå¡å¨ç«¯å®æï¼èä¸ç¨å®¢æ·ç«¯éæ°å起请æ±ï¼æçè¾é«ã
1. 请æ±è½¬åçç¹ç¹ï¼ åªè¯·æ±ä¸æ¬¡ï¼èä¸å±äºå
é¨è·³è½¬ ãå°åæ ä¸ä¼åçåå ãä¸å
许访é®å¤é¨èµæº ãç»å¯¹è·¯å¾ç/ä»£è¡¨çæ¯æ ¹ç®å½ä¹å ãæçåé« ã请æ±è½¬åçè¯æ³ï¼request.getRequestDispacher(å°å).forward(请æ±å¯¹è±¡,ååºå¯¹è±¡)
2. éå®åçç¹ç¹ï¼ æ´ä¸ªè¿ç¨ååºä¸¤æ¬¡è¯·æ± ãå°åæ ä¼åçååï¼å¹¶è·³è½¬å°ææ°ç页é¢ï¼å°åæ 乿¯ææ°é¡µé¢çå°å ãå
许访é®å¤é¨èµæºï¼å 为æå¡å¨å·²ç»ååºåäºæµè§å¨ï¼è䏿µè§å¨ä¹ååºäºæ°ç请æ±ï¼ç±äºHTTPæ¯æ ç¶æçæä»¥ä¸¤æ¬¡è¯·æ±æ²¡æèç³»ï¼ç¬¬äºæ¬¡è¯·æ±å¯ä»¥éæå»ä»»ä½ç½é¡µ ç»å¯¹è·¯å¾ç/ä»£è¡¨çæ¯ç«¯å£å·ä¹å ãæçåä½ï¼å 为æä¸¤æ¬¡è¯·æ±ï¼ç¸å¯¹æ¥è¯´æçä½ ãéå®åè¯æ³: response.sendRedirect(å°å)
**10.ä»ä¹æ
åµä¸è°ç¨ doGet()å doPost()ï¼**
* å端页é¢ä¸çformæ¯getå°±ç¨doGet()ï¼æ¯postå°±æ¯doPost() ã
* getåpostæ¯è¯·æ±æ¹å¼ï¼ä¸è¬getæºå¸¦çä¿¡æ¯éæéå¶ï¼èä¸ä»çå
容ä¼å¨æ¾ç¤ºæ éé¢åºç°ï¼ä¸å®å
¨ãpost坿ºå¸¦å¤§éæ°æ®ï¼å¹¶ä¸ä¿¡æ¯ä¸ååºç°å¨æ¾ç¤ºæ 鿝è¾å®å
¨ãå½å®ç°æ¥è¯¢åè½æ¶éåç¨getï¼getæçæ¯posté«äºã
**11.Request 对象çä¸»è¦æ¹æ³**
* setAttribute(String name,Object)ï¼è®¾ç½®åå为nameçrequest çåæ°å¼
* getAttribute(String name)ï¼è¿åç±nameæå®ç屿§å¼
* getAttributeNames()ï¼è¿årequest 对象ææå±æ§çååéåï¼ç»ææ¯ä¸ä¸ªæä¸¾çå®ä¾
* getCookies()ï¼è¿å客æ·ç«¯çææ Cookie 对象ï¼ç»ææ¯ä¸ä¸ªCookie æ°ç»
* getCharacterEncoding() ï¼è¿å请æ±ä¸çå符ç¼ç æ¹å¼
* getContentLength() ï¼è¿å请æ±ç Bodyçé¿åº¦
* getHeader(String name) ï¼è·å¾HTTPåè®®å®ä¹çæä»¶å¤´ä¿¡æ¯
* getHeaders(String name) ï¼è¿åæå®ååçrequest Header çææå¼ï¼ç»ææ¯ä¸ä¸ªæä¸¾çå®ä¾
* getHeaderNames() ï¼è¿åæä»¥request Header çååï¼ç»ææ¯ä¸ä¸ªæä¸¾çå®ä¾
* getInputStream() ï¼è¿å请æ±çè¾å
¥æµï¼ç¨äºè·å¾è¯·æ±ä¸çæ°æ®
* getMethod() ï¼è·å¾å®¢æ·ç«¯åæå¡å¨ç«¯ä¼ éæ°æ®çæ¹æ³
* getParameter(String name) ï¼è·å¾å®¢æ·ç«¯ä¼ éç»æå¡å¨ç«¯çæ nameæå®çåæ°å¼
* getParameterNames() ï¼è·å¾å®¢æ·ç«¯ä¼ éç»æå¡å¨ç«¯çææåæ°çååï¼ç»ææ¯ä¸ä¸ªæä¸¾çå®ä¾
* getParameterValues(String name)ï¼è·å¾ænameæå®çåæ°çææå¼
* getProtocol()ï¼è·å客æ·ç«¯åæå¡å¨ç«¯ä¼ éæ°æ®æä¾æ®çåè®®åç§°
* getQueryString() ï¼è·å¾æ¥è¯¢å符串
* getRequestURI() ï¼è·åååºè¯·æ±å符串ç客æ·ç«¯å°å
* getRemoteAddr()ï¼è·å客æ·ç«¯ç IP å°å
* getRemoteHost() ï¼è·å客æ·ç«¯çåå
* getSession([Boolean create]) ï¼è¿åå请æ±ç¸å
³ Session
* getServerName() ï¼è·åæå¡å¨çåå
* getServletPath()ï¼è·å客æ·ç«¯æè¯·æ±çèæ¬æä»¶çè·¯å¾
* getServerPort()ï¼è·åæå¡å¨ç端å£å·
* removeAttribute(String name)ï¼å é¤è¯·æ±ä¸çä¸ä¸ªå±æ§
**12.request.getAttribute()å request.getParameter()æä½åºå«?**
* getParameter å¾å°ç齿¯ String ç±»åçï¼è·å POST/GET ä¼ éçåæ°å¼ï¼ç¨äºå®¢æ·ç«¯éå®åredirectæ¶ï¼å³ç¹å»äºé¾æ¥ææäº¤æææ¶ä¼ å¼ç¨ã
* getAttribute å¯è·åå°å¯¹è±¡å®¹å¨ä¸çæ°æ®å¼ï¼è¿åçæ¯ Objectï¼éè¿è¡è½¬æ¢,å¯ç¨ setAttribute 设置æä»»æå¯¹è±¡ï¼ä½¿ç¨å¾çµæ´»ï¼ç¨äºæå¡å¨ç«¯éå®åforwardãï¼åªè½æ¶å°setAttribute ä¼ è¿æ¥çå¼ï¼è·åçæ¯sessionã
**13.MVC çå个é¨å齿é£äºææ¯æ¥å®ç°?å¦ä½å®ç°?**
* modelï¼åºç¨çä¸å¡é»è¾ï¼å¦ï¼æ°æ®åºçæä½ï¼ï¼éè¿JavaBeanå®ç°ï¼hibernateãmybatisãibatisï¼
* viewï¼è§å¾å±ï¼ç¨äºä¸ç¨æ·ç交äºï¼ä¸»è¦ç±jsp页é¢äº§çãï¼jspãFreeMarkerãå端ä¸ä»¶å¥ãVelocity ï¼
* controllerï¼å¤çè¿ç¨æ§å¶ï¼ä¸è¬æ¯ä¸ä¸ªservletãå®å¯ä»¥åæ´¾ç¨æ·ç请æ±å¹¶éæ©æ°å½çè§å¾ä»¥ç¨äºæ¾ç¤ºï¼ï¼ä¹å¯ä»¥è§£éç¨æ·çè¾å
¥å¹¶å°å®ä»¬æ å°ä¸ºæ¨¡åå±å¯æ§è¡çæä½ãï¼severletãstrutsãspringï¼
**14.è¯´åºæ°æ®è¿æ¥æ± ç工使ºå¶æ¯ä»ä¹?**
* æ°æ®è¿æ¥æ± æ¯ææ°æ®åºè¿æ¥æ¾å°æå¡å¨ä¸,æ¯å¦tomcatä¸,é£ä¹æ¯æ¬¡æä½æ°æ®åºçæ¶åå°±ä¸éè¦å"è¿æ¥"å°æ°æ®åºåè¿è¡ç¸å
³æä½,èæ¯ç´æ¥æä½æå¡å¨ä¸ç"è¿æ¥æ± "ã
* ææ°æ®åºå½å䏿¡æ²³,é£ä¹"è¿æ¥æ± "å°±æ¯ä¸ä¸ª"æ°´æ± ",è¿ä¸ªæ°´æ± éé¢çæ°´æ¯ç±äºå
æ¶å¥½çéå"å°æºª"çæ°´ç®¡å¼è¿æ¥ç,æä»¥,ä½ æ³åæ°´çæ¶åä¸å¿
大èè¿å°è·å°å°æºªè¾¹ä¸,èåªè¦å°è¿ä¸ªæ°´æ± ãè¿æ ·çè¯å°±å¯ä»¥æé«"æç"ï¼ä½æ¯æ°æ®æ± ä¸è¬æ¯ç¨å¨æ°æ®éæ¯è¾å¤§ç项ç®ï¼è¿æ ·å¯ä»¥æé«ç¨åºçæçï¼ä½å°±æç¸å
³çè´è·å å¨äºæå¡å¨ä¸,å 为è¿ä¸ª"æ± "æ¯å¨æå¡å¨ä¸çï¼è¿äºé¢ç¹ç请æ±ä¼ä½¿å¾æå¡å¨è´è½½å éã
_**æ°æ®è¿æ¥æ± æä¹è®¾ç½®ï¼**_
卿°æ®åºè¿æ¥åæ®µçæ¶åå¯ä»¥è®¾ç½®
æ¯å¦ï¼âDataSource=Server;Initial;Catalog=db;UserID=test;Password=test;MaxPoolSize = 100;MinPoolSize= 15âè¿æ ·è¿æ¥æ± æå¤§ä¸º100ï¼æå°ä¸º15
* ä¸ä¸ªé¡¹ç®å¯¹æ°æ®åºè¿æ¥ç管çè½æ¾èå½±åå°æ´ä¸ªåºç¨ç¨åºç伸缩æ§åå¥å£®æ§ï¼å½±åå°ç¨åºçæ§è½ææ ãæ°æ®åºè¿æ¥æ± æ£æ¯é对è¿ä¸ªé®é¢æåºæ¥çãæ°æ®åºè¿æ¥æ± è´è´£åé
ã管çåéæ¾æ°æ®åºè¿æ¥ï¼å®å
许åºç¨ç¨åºéå¤ä½¿ç¨ä¸ä¸ªç°æçæ°æ®åºè¿æ¥ï¼èå䏿¯éæ°å»ºç«ä¸ä¸ªï¼éæ¾ç©ºé²æ¶é´è¶
è¿æå¤§ç©ºé²æ¶é´çæ°æ®åºè¿æ¥æ¥é¿å
å 为没æéæ¾æ°æ®åºè¿æ¥èå¼èµ·çæ°æ®åºè¿æ¥éæ¼ãè¿é¡¹ææ¯è½ææ¾æé«å¯¹æ°æ®åºæä½çæ§è½ã
* æ°æ®åºè¿æ¥æ± å¨åå§åæ¶å°å建ä¸å®æ°éçæ°æ®åºè¿æ¥æ¾å°è¿æ¥æ± ä¸ï¼è¿äºæ°æ®åºè¿æ¥çæ°éæ¯ç±æå°æ°æ®åºè¿æ¥æ°æ¥è®¾å®çãæ è®ºè¿äºæ°æ®åºè¿æ¥æ¯å¦è¢«ä½¿ç¨ï¼è¿æ¥æ± é½å°ä¸ç´ä¿è¯è³å°æ¥æè¿ä¹å¤çè¿æ¥æ°éãè¿æ¥æ± çæå¤§æ°æ®åºè¿æ¥æ°ééå®äºè¿ä¸ªè¿æ¥æ± è½å æçæå¤§è¿æ¥æ°ï¼å½åºç¨ç¨åºåè¿æ¥æ± 请æ±çè¿æ¥æ°è¶
è¿æå¤§è¿æ¥æ°éæ¶ï¼è¿äºè¯·æ±å°è¢«å å
¥å°çå¾
éåä¸ã
**_æ°æ®åºè¿æ¥æ± çæå°è¿æ¥æ°åæå¤§è¿æ¥æ°ç设置è¦èèå°ä¸åå 个å ç´ ï¼_**
1. æå°è¿æ¥æ°æ¯è¿æ¥æ± ä¸ç´ä¿æçæ°æ®åºè¿æ¥ï¼æä»¥å¦æåºç¨ç¨åºå¯¹æ°æ®åºè¿æ¥ç使ç¨éä¸å¤§ï¼å°ä¼æå¤§éçæ°æ®åºè¿æ¥èµæºè¢«æµªè´¹ï¼
2. æå¤§è¿æ¥æ°æ¯è¿æ¥æ± è½ç³è¯·çæå¤§è¿æ¥æ°ï¼å¦ææ°æ®åºè¿æ¥è¯·æ±è¶
è¿æ¤æ°ï¼åé¢çæ°æ®åºè¿æ¥è¯·æ±å°è¢«å å
¥å°çå¾
éåä¸ï¼è¿ä¼å½±åä¹åçæ°æ®åºæä½ã
3. 妿æå°è¿æ¥æ°ä¸æå¤§è¿æ¥æ°ç¸å·®å¤ªå¤§ï¼é£ä¹æå
çè¿æ¥è¯·æ±å°ä¼è·å©ï¼ä¹åè¶
è¿æå°è¿æ¥æ°éçè¿æ¥è¯·æ±çä»·äºå»ºç«ä¸ä¸ªæ°çæ°æ®åºè¿æ¥ãä¸è¿ï¼è¿äºå¤§äºæå°è¿æ¥æ°çæ°æ®åºè¿æ¥å¨ä½¿ç¨å®ä¸ä¼é©¬ä¸è¢«éæ¾ï¼å®å°è¢«æ¾å°è¿æ¥æ± ä¸çå¾
éå¤ä½¿ç¨ææ¯ç©ºé²è¶
æ¶åè¢«éæ¾ã
**15.为ä»ä¹è¦ç¨ ORM? å JDBC æä½ä¸ä¸æ ·?**
ORMçä½ç¨æ¯å¨å
³ç³»åæ°æ®åºå对象ä¹é´ä½ä¸ä¸ªæ å°ï¼è¿æ ·ï¼æä»¬å¨å
·ä½çæä½æ°æ®åºçæ¶åï¼å°±ä¸éè¦åå»å夿çSQLè¯å¥æäº¤éï¼åªè¦åå¹³æ¶æä½å¯¹è±¡ä¸æ ·æä½å®å°±å¯ä»¥äº ã
1. 代ç 夿æ§ï¼
* ç¨JDBCçAPIè®¿é®æ°æ®åºï¼ä»£ç éè¾å¤§ï¼ç¹å«æ¯è®¿é®å段è¾å¤çè¡¨çæ¶åï¼ä»£ç æ¾å¾ç¹çï¼å®¹æåºéï¼ç¨åºåéè¦è费大éçæ¶é´ãç²¾åå»ç¼åå
·ä½çæ°æ®åºè®¿é®çSQLè¯å¥ï¼è¿è¦ååå°å¿å
¶ä¸å¤§ééå¤çæºä»£ç æ¯å¦æçæ¼ï¼å¹¶ä¸è½éä¸ç²¾åäºä¸å¡é»è¾å¼åä¸é¢ã
* ORMå建ç«äºJavaå¯¹è±¡ä¸æ°æ®åºå¯¹è±¡ä¹é´çå½±å°å
³ç³»ï¼ç¨åºåä¸éè¦ç¼å夿çSQLè¯å¥ï¼ç´æ¥æä½Java对象å³å¯ï¼ä»è大大éä½äºä»£ç éï¼ä¹ä½¿ç¨åºåæ´å 䏿³¨äºä¸å¡é»è¾çå®ç°ã
2. æ°æ®åºå¯¹è±¡è¿æ¥é®é¢
* éç¨JDBCç¼ç¨ï¼å¿
é¡»ä¿è¯åç§å
³ç³»æ°æ®ä¹é´ä¸è½åºéï¼æå
¶çè¦ï¼ ORM建ç«Javaå¯¹è±¡ä¸æ°æ®åºå¯¹è±¡å
³ç³»å½±å°çåæ¶ï¼ä¹èªå¨æ ¹æ®æ°æ®åºå¯¹è±¡ä¹é´çå
³ç³»å建Java对象çå
³ç³»ï¼å¹¶ä¸æä¾äºç»´æè¿äºå
³ç³»å®æ´ãææçæºå¶ã
3. ç³»ç»æ¶æé®é¢
* 使ç¨JDBCç¼ç¨æ¶ï¼ç¨åºåå¿
é¡»ç¥éç¨ä»ä¹æ°æ®åºãæåªäºè¡¨ãåä¸ªè¡¨åæ®µãåä¸ªåæ®µçç±»åæ¯ä»ä¹ã表ä¸è¡¨ä¹é´ä»ä¹å
³ç³»ãå建äºä»ä¹ç´¢å¼ççã
* 使ç¨ORMææ¯ï¼å¯ä»¥å°æ°æ®åºå±å®å
¨éè½ï¼ç¨åºååªéè¦æ ¹æ®ä¸å¡é»è¾çéè¦è°ç¨Java对象çGetterå Setteræ¹æ³ï¼å³å¯å®ç°å¯¹åå°æ°æ®åºçæä½ãæORMæå»ºå¥½åï¼æJava对象交ç»ç¨åºåå»å®ç°ä¸å¡é»è¾ï¼ä½¿æ°æ®è®¿é®å±ä¸æ°æ®åºå±æ¸
æ°åçã
4. æ§è½é®é¢
* å设è¦åæ°æ®åºåå
¥1000æ¡SQLè¯å¥ï¼éç¨JDBCç¼ç¨æçä½ä¸ã
* éç¨ORMææ¯ï¼ä¼èªå¨å»¶è¿ååå°æ°æ®åºåéSQL请æ±ï¼éä½é讯éï¼æé«è¿è¡æçï¼ä¹å¯ä»¥æ ¹æ®å®é
æ
åµï¼å°æ°æ®åºè®¿é®æä½åæï¼å°½éåå°ä¸å¿
è¦çæ°æ®åºæä½è¯·æ±ã
### ç½ç»é¨å
**1. http ååºç 301 å 302 ä»£è¡¨çæ¯ä»ä¹ï¼æä»ä¹åºå«ï¼**
1. å¯¹ç¨æ·ï¼
* 301ï¼302å¯¹ç¨æ·æ¥è¯´æ²¡æåºå«ï¼ä»ä»¬çå°ææåªæ¯ä¸ä¸ªè·³è½¬ï¼æµè§å¨ä¸æ§çURLåæäºæ°çURLã页é¢è·³å°äºè¿ä¸ªæ°çurlæåçå°æ¹ã
2. 对å¼å人åï¼
* å½ç½é¡µAç¨301éå®å转å°ç½é¡µBæ¶ï¼æç´¢å¼æå¯ä»¥è¯å®ç½é¡µAæ°¸ä¹
çæ¹åä½ç½®ï¼æè
说å®é
ä¸ä¸åå¨äºï¼æç´¢å¼æå°±ä¼æç½é¡µBå½ä½å¯ä¸ææç®æ ã
* 302转åå¯è½ä¼æURLè§èååç½å嫿çé®é¢ãå¯è½è¢«æç´¢å¼æå¤ä¸ºå¯ç转åï¼çè³è®¤ä¸ºæ¯ä½å¼ã
**_302éå®ååç½å嫿ï¼URL hijackingï¼æä»ä¹å
³ç³»å¢ï¼_**
* è¿è¦ä»æç´¢å¼æå¦ä½å¤ç302转å说起ãä»å®ä¹æ¥è¯´ï¼ä»ç½åAåä¸ä¸ª302éå®åå°ç½åBæ¶ï¼æææ¯ç½åAéæ¶æå¯è½æ¹ä¸»æï¼éæ°æ¾ç¤ºæ¬èº«çå
容æè½¬åå
¶ä»çå°æ¹ã大é¨åçæç´¢å¼æå¨å¤§é¨åæ
åµä¸ï¼å½æ¶å°302éå®åæ¶ï¼ä¸è¬åªè¦å»æåç®æ ç½åå°±å¯ä»¥äºï¼ä¹å°±æ¯è¯´ç½åBã
* å®é
ä¸å¦ææç´¢å¼æå¨éå°302è½¬åæ¶ï¼ç¾åä¹ç¾ç齿åç®æ ç½åBçè¯ï¼å°±ä¸ç¨æ
å¿ç½åURL嫿äºãé®é¢å°±å¨äºï¼æçæ¶åæç´¢å¼æï¼å¹¶ä¸è½æ»æ¯æåç®æ ç½åãæ¯å¦è¯´Googleï¼æçæ¶åAç½åå¾çï¼ä½æ¯å®åäºä¸ä¸ª302éå®åå°Bç½åï¼èBç½åæ¯ä¸ä¸ªå¾é¿çä¹±ä¸å
«ç³çURLç½åï¼çè³è¿æå¯è½å
å«ä¸äºé®å·ä¹ç±»çåæ°ãå¾èªç¶çï¼Aç½åæ´å ç¨æ·å好ï¼èBç½åæ¢é¾çï¼åä¸ç¨æ·å好ãè¿æ¶Google徿å¯è½ä¼ä»ç¶æ¾ç¤ºç½åAãè¿å°±é æäºç½åURL嫿çå¯è½æ§ãä¹å°±æ¯è¯´ï¼ä¸ä¸ªä¸éå¾·ç人å¨ä»èªå·±çç½åAåä¸ä¸ª302éå®åå°ä½ çç½åBï¼åºäºæç§åå ï¼ Googleæç´¢ç»æææ¾ç¤ºçä»ç¶æ¯ç½åAï¼ä½æ¯æç¨çç½é¡µå
容崿¯ä½ çç½åBä¸çå
容ï¼è¿ç§æ
åµå°±å«åç½åURL嫿ã
**2. ç®è¿° tcp å udpçåºå«ï¼tcpå¦ä½ä¿è¯å¯é ä¼ è¾ï¼**
1. TCPé¢åè¿æ¥(åéæ°æ®è¦å
è¿æ¥)ï¼å¯é çæ°æ®ä¼ è¾æµ(ä¸éå¤ï¼ä¸ä¸¢å¤±)ï¼ä¼ è¾åä½ä¸ºTCPæ¥ææ®µï¼å
¨åå·¥ï¼å ç¨èµæºå¤ï¼æ¯æ¡TCPè¿æ¥åªè½æ¯ç¹å¯¹ç¹ãTCP对åºçåè®®æï¼FTP(æä»¶ä¼ è¾åè®®)ãtelnet(è¿ç¨ç»å½ï¼ãSMTP(åéé®ä»¶åè®®)ãPOP3(æ¥åé®ä»¶åè®®)
2. UDPé¢åéè¿æ¥(åéæ°æ®ä¸éè¦å
è¿æ¥)ï¼ä¸å¯é çæ°æ®æµä¼ è¾ï¼ä¼ è¾åä½ä¸ºç¨æ·æ°æ®å
ï¼å®æ¶æ§é«ï¼UDPæ¯æä¸å¯¹ä¸ãä¸å¯¹å¤ãå¤å¯¹å¤ãUDP对åºçåè®®æï¼DNS(ååè§£æåè®®)ãSNMP(ç®åç½ç»ç®¡ç)ãTFTP(ç®åæä»¶ä¼ è¾)
**_tcpå¦ä½ä¿è¯å¯é ä¼ è¾_**
æ¥ææ®µç¡®è®¤ï¼TCPååºä¸ä¸ªæ¥ææ®µåï¼å¯å¨ä¸ä¸ªå®æ¶å¨ï¼çå¾
ç®ç端确认æ¶å°è¿ä¸ªæ¥ææ®µã妿ä¸è½åæ¶æ¶å°ç¡®è®¤ï¼å°éåè¿ä¸ªæ¥ææ®µã
æåºï¼TCPç»åéçæ¯ä¸ªå
è¿è¡ç¼å·ï¼æ¥æ¶æ¹å¯¹æ°æ®å
è¿è¡æåºï¼æåºä¼ ç»åºç¨å±
æ ¡éªåï¼TCPå°ä¿æå®é¦é¨ä¸æ°æ®çæ ¡éªå
å»éï¼TCPä¼ä¸¢æé夿°æ®
æµéæ§å¶ï¼TCPè¿æ¥çæ¯ä¸æ¹é½æä¸å®ç©ºé´çç¼å²åºï¼TCPçæ¥æ¶ç«¯åªå
许åé端å鿥æ¶ç«¯æè½æ¥çº³çæ°æ®ã彿¥æ¶æ¹ä¸è½åæ¶å¤çæ°æ®æ¶ï¼åä¼æç¤ºåéæ¹æ³éä½åééçï¼é²æ¢ä¸¢å
ï¼TCP使ç¨çæµéæ§å¶æ¯å¯å大å°çæ»çªåè®®ã
æ¥å¡æ§å¶ï¼å½ç½ç»æ¥å¡æ¶ï¼åå°æ°æ®åé
**3. tcp 为ä»ä¹è¦ä¸æ¬¡æ¡æï¼ä¸¤æ¬¡ä¸è¡åï¼ä¸ºä»ä¹ï¼åæ¬¡æ¥æåæ¯ä»ä¹ï¼**
éç¨ä¸æ¬¡æ¡ææ¯é²æ¢å¤±æçè¿æ¥è¯·æ±æ¥ææ®µåä¼ åæå¡å¨ï¼ä»è产çé误ã为äºå®ç°å¯é æ°æ®ä¼ è¾ï¼ TCP åè®®çéä¿¡åæ¹ï¼ é½å¿
须维æ¤ä¸ä¸ªåºåå·ï¼ 以æ è¯åéåºå»çæ°æ®å
ä¸ï¼ åªäºæ¯å·²ç»è¢«å¯¹æ¹æ¶å°çã 䏿¬¡æ¡æçè¿ç¨å³æ¯éä¿¡åæ¹ç¸äºåç¥åºåå·èµ·å§å¼ï¼ 并确认对æ¹å·²ç»æ¶å°äºåºåå·èµ·å§å¼çå¿
ç»æ¥éª¤ãå¦æåªæ¯ä¸¤æ¬¡æ¡æï¼ è³å¤åªæè¿æ¥åèµ·æ¹çèµ·å§åºåå·è½è¢«ç¡®è®¤ï¼ å¦ä¸æ¹éæ©çåºåå·åå¾ä¸å°ç¡®è®¤ã
失æçè¿æ¥è¯·æ±æçæ¯ï¼ä¸»æºAåéçè¿æ¥è¯·æ±æ²¡ææ¶å°ä¸»æºBç确认ï¼äºæ¯ç»è¿ä¸æ®µæ¶é´ï¼ä¸»æºAåéæ°åBåé请æ±ï¼å¹¶ä¸è¿æ¥æåï¼å®æäºæ°æ®ä¼ è¾ãå¦ææ¤æ¶Açç¬¬ä¸æ¬¡çè¿æ¥è¯·æ±æ¯å 为ç½ç»å»¶è¿èåå°è¾¾Bï¼åBä¼è®¤ä¸ºAååèµ·äºçè¿æ¥ï¼äºæ¯Bä¼åAåéç¡®è®¤è¿æ¥çä¿¡æ¯ï¼ä½Aæ¤æ¶ä¸ä¼çä¼ï¼Bå´ä¸ç´çå¾
Aåéæ°æ®ã
**_䏿¬¡æ¡æï¼_**
* ç¬¬ä¸æ¬¡æ¡æï¼å®¢æ·ç«¯åé忥åºåç¼å·å
(synï¼ä»¤æ¤æ¶çsyn=x)å°æå¡å¨ï¼å¹¶è¿å
¥SYN_SENDç¶æï¼çå¾
æå¡å¨ç¡®è®¤ï¼
* ç¬¬äºæ¬¡æ¡æï¼æå¡å¨æ¶å°synå
ï¼å°æ¤synå
ä¸çxè¿è¡å 1å¹¶å为确认å符å
ackï¼åæ¶èªå·±ä¹åéä¸ä¸ªsynå
(令æ¤å
çsyn=y)ï¼å æ¤æå¡å¨å°åéack+synå
* ç¬¬ä¸æ¬¡æ¡æï¼å®¢æ·ç«¯æ¶å°æå¡å¨çack+synå
åï¼åªéè¦åæå¡å¨åé确认å符å
ack(å°æå¡å¨çsyn+1)ï¼æ¤å
åé宿¯ï¼å®¢æ·ç«¯ä¸æå¡å¨è¿å
¥establishedç¶æï¼å®æä¸æ¬¡æ¡æã
**_忬¡æ¥æï¼(è¿æ¥ç»æ¢åè®®)_**
ç±äºTCPè¿æ¥æ¯å
¨åå·¥çï¼å æ¤æ¯ä¸ªæ¹åé½å¿
é¡»åç¬è¿è¡å
³éãè¿å忝å½ä¸æ¹å®æå®çæ°æ®åéä»»å¡åå°±è½åéä¸ä¸ªFINæ¥ç»æ¢è¿ä¸ªæ¹åçè¿æ¥ãæ¶å°ä¸ä¸ª FINåªæå³çè¿ä¸æ¹å䏿²¡ææ°æ®æµå¨ï¼ä¸ä¸ªTCPè¿æ¥å¨æ¶å°ä¸ä¸ªFINåä»è½åéæ°æ®ãé¦å
è¿è¡å
³éç䏿¹å°æ§è¡ä¸»å¨å
³éï¼èå¦ä¸æ¹æ§è¡è¢«å¨å
³éã(FIN表示å
³éè¿æ¥ï¼æ¯TCPå±Flagsåæ®µä¸è¡¨ç¤ºç¶æçæ è¯)SYN, FIN, ACK, PSH(表示æ DATAæ°æ®ä¼ è¾)ï¼, RSTRST(è¡¨ç¤ºè¿æ¥éç½®), URG.
* TCP客æ·ç«¯åéä¸ä¸ªFINï¼ç¨æ¥å
³é客æ·å°æå¡å¨çæ°æ®ä¼ é
* æå¡å¨æ¶å°è¿ä¸ªFINï¼å®ååä¸ä¸ªACKï¼ç¡®è®¤åºå·ä¸ºæ¶å°çåºå·å 1ãåSYN䏿 ·ï¼ä¸ä¸ªFINå°å ç¨ä¸ä¸ªåºå·ã
* æå¡å¨å
³é客æ·ç«¯çè¿æ¥ï¼åéä¸ä¸ªFINç»å®¢æ·ç«¯ã
* 客æ·ç«¯ååACK确认ï¼å¹¶å°ç¡®è®¤åºå·è®¾ç½®ä¸ºæ¶å°åºå·å 1ã
**4. 说ä¸ä¸ tcp ç²å
æ¯æä¹äº§ççï¼**
**_ç²å
æ¯ä»ä¹ï¼_**
ç²å
åçå¨åéææ¥æ¶ç¼å²åºä¸ï¼åºç¨ç¨åºä»ç¼å²åºä¸åæ°æ®æ¯æ´ä¸ªç¼å²åºä¸æå¤å°åå¤å°ï¼é£ä¹å°±æå¯è½ç¬¬ä¸ä¸ªæ°æ®çå°¾é¨å第äºä¸ªæ°æ®ç头é¨åæ¶åå¨ç¼å²åºï¼èTCPæ¯æµå¼çï¼æ°æ®æ è¾¹çï¼è¿æ¶åçç²å
ã
**_ç²å
ç产ç_**
1. åéæ¹äº§çç²å
éç¨TCPåè®®ä¼ è¾æ°æ®ç客æ·ç«¯ä¸æå¡å¨ç»å¸¸æ¯ä¿æä¸ä¸ªé¿è¿æ¥çç¶æï¼ä¸æ¬¡è¿æ¥å䏿¬¡æ°æ®ä¸åå¨ç²å
ï¼ï¼åæ¹å¨è¿æ¥ä¸æå¼çæ
åµä¸ï¼å¯ä»¥ä¸ç´ä¼ è¾æ°æ®ï¼ä½å½åéçæ°æ®å
è¿äºçå°æ¶ï¼é£ä¹TCPåè®®é»è®¤çä¼å¯ç¨Nagleç®æ³ï¼å°è¿äºè¾å°çæ°æ®å
è¿è¡åå¹¶åéï¼ç¼å²åºæ°æ®å鿝ä¸ä¸ªå åçè¿ç¨ï¼ï¼è¿ä¸ªåå¹¶è¿ç¨å°±æ¯å¨åéç¼å²åºä¸è¿è¡çï¼ä¹å°±æ¯è¯´æ°æ®åéåºæ¥å®å·²ç»æ¯ç²å
çç¶æäºï¼
2. æ¥æ¶æ¹äº§çç²å
æ¥æ¶æ¹éç¨TCPåè®®æ¥æ¶æ°æ®æ¶çè¿ç¨æ¯è¿æ ·çï¼æ°æ®å°åºæ¥æ¶æ¹ï¼ä»ç½ç»æ¨¡åç䏿¹ä¼ éè³ä¼ è¾å±ï¼ä¼ è¾å±çTCPåè®®å¤çæ¯å°å
¶æ¾ç½®æ¥æ¶ç¼å²åºï¼ç¶åç±åºç¨å±æ¥ä¸»å¨è·åï¼Cè¯è¨ç¨recvãreadç彿°ï¼ï¼è¿æ¶ä¼åºç°ä¸ä¸ªé®é¢ï¼å°±æ¯æä»¬å¨ç¨åºä¸è°ç¨çè¯»åæ°æ®å½æ°ä¸è½åæ¶çæç¼å²åºä¸çæ°æ®æ¿åºæ¥ï¼èä¸ä¸ä¸ªæ°æ®åå°æ¥å¹¶æä¸é¨åæ¾å
¥çç¼å²åºæ«å°¾ï¼çæä»¬è¯»åæ°æ®æ¶å°±æ¯ä¸ä¸ªç²å
ï¼ï¼æ¾æ°æ®çé度 > åºç¨å±æ¿æ°æ®é度ï¼
**_ç²å
çè§£å³æ¹æ¡_**
1. è§£å³åéæ¹ç²å
* åéäº§çæ¯å 为Nagleç®æ³åå¹¶å°æ°æ®å
ï¼é£ä¹å¯ä»¥ç¦ç¨æè¯¥ç®æ³ï¼
* TCPæä¾äºå¼ºå¶æ°æ®ç«å³ä¼ éçæä½æä»¤pushï¼å½å¡«å
¥æ°æ®åè°ç¨æä½æä»¤å°±å¯ä»¥ç«å³å°æ°æ®åéï¼èä¸å¿
çå¾
åéç¼å²åºå¡«å
èªå¨åéï¼
* æ°æ®å
ä¸å 头ï¼å¤´é¨ä¿¡æ¯ä¸ºæ´ä¸ªæ°æ®çé¿åº¦ï¼æå¹¿æ³æå¸¸ç¨ï¼ï¼
2. è§£å³æ¥æ¶æ¹ç²å
* è§£ææ°æ®å
头é¨ä¿¡æ¯ï¼æ ¹æ®é¿åº¦æ¥æ¥æ¶ï¼
* èªå®ä¹æ°æ®æ ¼å¼ï¼å¨æ°æ®ä¸æ¾å
¥å¼å§ãç»ææ è¯ï¼è§£ææ¶æ ¹æ®æ ¼å¼æåæ°æ®ï¼ç¼ºç¹æ¯æ°æ®å
ä¸è½å«æå¼å§æç»ææ è¯ï¼
* çè¿æ¥ä¼ è¾ï¼å»ºç«ä¸æ¬¡è¿æ¥åªä¼ è¾ä¸æ¬¡æ°æ®å°±å
³éï¼ï¼ä¸æ¨èï¼
**5. OSI çä¸å±æ¨¡å齿åªäºï¼TCP/IPå屿åªäºï¼äºå±åè®®åæåªäºï¼ä¸å±æ¨¡åä¸åå±é½æåªäºåè®®ï¼**
OSIï¼ç©çå±ãæ°æ®é¾è·¯å±ãç½ç»å±ãä¼ è¾å±ãä¼è¯å±ã表示å±ãåºç¨å±
TCP/IPï¼ç½ç»æ¥å£å±ãç½é
å±ãè¿è¾å±ãåºç¨å±
äºå±ï¼ç©çå±ãæ°æ®é¾è·¯å±ãç½ç»å±ãè¿è¾å±ãåºç¨å±
ç©çå±ï¼RJ45ãCLOCKãIEEE802.3 æ¯ç¹ä¼ è¾
æ°æ®é¾è·¯å±ï¼PPPãVLANãMACç å¸§ä¼ è¾
ç½ç»å±ï¼IPãICMPãARPãOSPFç å
ä¼ è¾
ä¼ è¾å±ï¼TCPãUDPãSPX æ®µä¼ è¾
ä¼è¯å±ï¼NFSãSQLãRPCç ä¼è¯åè®®æ°æ®åå
ä¼ è¾
表示å±ï¼JPEGãMPEGãASII ç 表示åè®®æ°æ®åå
ä¼ è¾
åºç¨å±ï¼FTPãDNSãHTTPç åºç¨åè®®æ°æ®åå
ä¼ è¾
**6. 讲述ARPåè®®ï¼**
1. æ¯ä¸ªä¸»æºé½ä¼å¨èªå·±çARPç¼å²åºä¸å»ºç«ARPå表ï¼è¡¨ç¤ºIPä¸MACå°åä¹é´çå
³ç³»
2. å½ä¸»æºåéæ°æ®æ¶ï¼é¦å
å
æ£æ¥ARPåè¡¨ä¸æ¯å¦åå¨å¯¹åºIPå°åç®ç主æºçMACå°åï¼å¦æä¸åå¨ï¼å°±åæ¬ç½æ®µçææä¸»æºåéARPæ°æ®å
ãè¯¥æ°æ®å
å
æ¬ï¼æºä¸»æºIPå°åï¼æºä¸»æºMACå°åï¼ç®ç主æºIPå°åã
3. 彿¬ç½æ®µææä¸»æºé½æ¶å°äºè¯¥ARPæ°æ®å
ï¼å
æ£æ¥æ°æ®å
ä¸IPå°åæ¯å¦æ¯èªå·±çIPï¼å¦æä¸æ¯ï¼å忽ç¥ã妿æ¯ï¼åå
仿°æ®å
ä¸ååºæºä¸»æºIPåMACåå
¥å°ARPå表ä¸ï¼å¦æåå¨ï¼åè¦çï¼ç¶åå°èªå·±çMACå°ååå
¥ARPååºä¸ï¼åè¯æºä¸»æºèªå·±æ¯è¦æ¾çMACå°åã
4. æºä¸»æºæ¶å°ARPååºåï¼å°ç®ç主æºçIPåMACå°ååå
¥ARPå表ä¸ï¼å¹¶å©ç¨æ¤ä¿¡æ¯åéæ°æ®ã妿æºä¸»æºä¸ç´æ²¡ææ¶å°ARPç¸åºæ°æ®å
ï¼å表示ARPæ¥è¯¢å¤±è´¥ã广æARP请æ±ï¼åæARPååºã
**7. æè¿°æµè§å¨è¾å
¥ www.baidu.com 访é®çè¿ç¨ï¼**

åéHTTPä¼è¯å°220.181.27.48è¿ç¨æè§£
1. 客æ·ç«¯éè¿TCPè¿è¡å°è£
æ°æ®å
ï¼è¾å
¥å°ç½ç»å±ï¼ç½ç»å±éè¿æ¥æ¾è·¯ç±è¡¨ç¡®å®å¦ä½è¾¾å°æå¡å¨
2. å¨å®¢æ·ç«¯ä¼ è¾å±ï¼æHTTP请æ±åææ¥ææ®µï¼æ·»å æºåç®ç端å£ãæå¡ç«¯ä½¿ç¨80端å£çå¬å®¢æ·ç«¯è¯·æ±ï¼å®¢æ·ç«¯ç±ç³»ç»éæºéæ©ä¸ä¸ªç«¯å£ï¼å设5000ï¼ä¸æå¡å¨äº¤äºï¼æå¡å¨å°ç¸åºç请æ±è¿åç»å®¢æ·ç«¯5000端å£ï¼ç¶å使IPæ¾å°ç®ç端ã
3. å¨å®¢æ·ç«¯é¾è·¯å±ï¼å
éè¿é¾è·¯å±åéå°è·¯ç±å¨ï¼éè¿é»å±
åè®®æ¥æ¾ç»å®çIPå°åçMACå°åï¼ç¶ååéARPè¯·æ±æ¥æ¾ç®çå°åï¼å¦æå¾å°ååºåå°±å¯ä»¥ä½¿ç¨ARPç请æ±åºç交æ¢IPæ°æ®å
ï¼å°±å¯ä»¥ä¼ è¾äºï¼ç¶ååéIPæ°æ®å
å°æå¡å¨å°åã
**8. DNSç³»ç»åçï¼**
å½ä¸ä¸ªåºç¨è¿ç¨éè¦ææä¸ªååè§£æä¸ºIPå°åæ¶ï¼è¯¥åºç¨è¿ç¨ä¼è°ç¨è§£æç¨åºï¼å¹¶æä¸ºä¸ä¸ªDNSç¨æ·ï¼æå¾
è§£æçååæ¾å¨DNSè¯·æ±æ¥æä¸ï¼ä»¥UDPæ°æ®æ¥çå½¢å¼åéç»æ¬å°ååæå¡å¨ï¼æ¬å°ååæå¡å¨æ¥æ¾å°ç¸åºååçIPå°ååï¼å°±å°è¯¥ååIPå°åä¿¡æ¯æ¾å
¥åºçæ¥æä¸è¿åç»å®¢æ·ç«¯è¿ç¨ï¼å¦ææ¬å°ååæå¡å¨æ²¡æç´æ¥æ¥æ¾å°å¯¹åºIPå°åï¼ååæ ¹ååæå¡å¨ååºè¿ä»£æ¥è¯¢ï¼åå°æ¥è¯¢å°çIPå°åä¿¡æ¯ä¼ å客æ·ç«¯ç¨åºã
### Springé¨å
**1. 为ä»ä¹è¦ä½¿ç¨ spring ï¼è§£éä¸ä¸ä»ä¹æ¯ aopï¼è§£éä¸ä¸ä»ä¹æ¯ iocï¼**
Springæ¯ä¸ä¸ªè½»é级æ§å¶å转(IoC)åé¢ååé¢(AOP)ç容卿¡æ¶ï¼ä¸ºäºè§£å³è½¯ä»¶å¼åç夿æ§èå建çï¼ä½¿ç¨åºæ¬çJavaBean代æ¿EJBï¼å¹¶æä¾äºæ´å¤çä¼ä¸åºç¨åè½ãå¯å¨ä»»ä½Javaåºç¨ä¸ä½¿ç¨ã
**_AOPï¼_**
* AOPï¼å¯ä»¥è¯´æ¯OOPçè¡¥å
åå®åãOOPå¼å
¥å°è£
ãç»§æ¿å夿æ§çæ¦å¿µæ¥å»ºç«ä¸ç§å¯¹è±¡å±æ¬¡ç»æï¼ç¨ä»¥æ¨¡æå
Œ
±è¡ä¸ºçä¸ä¸ªéåã彿们éè¦ä¸ºåæ£ç对象å¼å
¥å
Œ
±è¡ä¸ºçæ¶åï¼OOP忾徿 è½ä¸ºåãä¹å°±æ¯è¯´ï¼**OOPå
è®¸ä½ å®ä¹ä»ä¸å°ä¸çå
³ç³»ï¼ä½å¹¶ä¸éåå®ä¹ä»å·¦å°å³çå
³ç³»**ãä¾å¦æ¥å¿åè½ãæ¥å¿ä»£ç å¾å¾æ°´å¹³å°æ£å¸å¨ææå¯¹è±¡å±æ¬¡ä¸ï¼èä¸å®ææ£å¸å°çå¯¹è±¡çæ ¸å¿åè½æ¯«æ å
³ç³»ã对äºå
¶ä»ç±»åç代ç ï¼å¦å®å
¨æ§ãå¼å¸¸å¤çåéæçæç»æ§ä¹æ¯å¦æ¤ãè¿ç§æ£å¸å¨åå¤çæ å
³ç代ç 被称为横å代ç ï¼å¨OOP设计ä¸ï¼å®å¯¼è´äºå¤§é代ç çéå¤ï¼èä¸å©äºå个模åçéç¨ã
* èAOPææ¯åæ°æ°ç¸åï¼å®å©ç¨ä¸ç§ç§°ä¸ºâ横åâçææ¯ï¼åè§£å¼å°è£
ç对象å
é¨ï¼å¹¶å°é£äºå½±åäºå¤ä¸ªç±»çå
Œ
±è¡ä¸ºå°è£
å°ä¸ä¸ªå¯éç¨æ¨¡åï¼å¹¶å°å
¶å为 âAspectâï¼å³æ¹é¢ãæè°âæ¹é¢âï¼ç®åå°è¯´ï¼å°±æ¯å°é£äºä¸ä¸å¡æ å
³ï¼å´ä¸ºä¸å¡æ¨¡åæå
±åè°ç¨çé»è¾æè´£ä»»å°è£
èµ·æ¥ï¼ä¾¿äºåå°ç³»ç»çéå¤ä»£ç ï¼é使¨¡åé´çè¦å度ï¼å¹¶æå©äºæªæ¥ç坿使§åå¯ç»´æ¤æ§ãAOPä»£è¡¨çæ¯ä¸ä¸ªæ¨ªåçå
³ç³»ï¼å¦æè¯´âå¯¹è±¡âæ¯ä¸ä¸ªç©ºå¿çåæ±ä½ï¼å
¶ä¸å°è£
çæ¯å¯¹è±¡ç屿§åè¡ä¸ºï¼ é£ä¹é¢åæ¹é¢ç¼ç¨çæ¹æ³ï¼å°±ä»¿ä½ä¸æå©åï¼å°è¿äºç©ºå¿åæ±ä½åå¼ï¼ä»¥è·å¾å
¶å
é¨çæ¶æ¯ãèåå¼çåé¢ï¼ä¹å°±æ¯æè°çâæ¹é¢âäºãç¶åå®å以巧夺天åç妿å°è¿äºåå¼çåé¢å¤åï¼ä¸çç迹ã
* 使ç¨â横åâææ¯ï¼AOPæè½¯ä»¶ç³»ç»å为两个é¨åï¼**æ ¸å¿å
³æ³¨ç¹å横åå
³æ³¨ç¹**ãä¸å¡å¤ççä¸»è¦æµç¨æ¯æ ¸å¿å
³æ³¨ç¹ï¼ä¸ä¹å
³ç³»ä¸å¤§çé¨åæ¯æ¨ªåå
³æ³¨ç¹ã横 åå
³æ³¨ç¹çä¸ä¸ªç¹ç¹æ¯ï¼ä»ä»¬ç»å¸¸åç卿 ¸å¿å
³æ³¨ç¹çå¤å¤ï¼èåå¤é½åºæ¬ç¸ä¼¼ãæ¯å¦æé认è¯ãæ¥å¿ãäºå¡å¤çãAop çä½ç¨å¨äºå离系ç»ä¸çåç§å
³æ³¨ç¹ï¼å°æ ¸å¿å
³æ³¨ç¹å横åå
³æ³¨ç¹åç¦»å¼æ¥ãæ£å¦Avanadeå
¬å¸çé«çº§æ¹æ¡ææ¶å¸Adam Mageeæè¯´ï¼AOPçæ ¸å¿ææ³å°±æ¯âå°åºç¨ç¨åºä¸çåä¸é»è¾å对å
¶æä¾æ¯æçéç¨æå¡è¿è¡å离ãâ
**_AOPçå®ç°ï¼_**
å®ç°AOPçææ¯ï¼ä¸»è¦å为两大类ï¼ä¸æ¯éç¨**å¨æä»£çææ¯**ï¼å©ç¨æªåæ¶æ¯çæ¹å¼ï¼å¯¹è¯¥æ¶æ¯è¿è¡è£
饰ï¼ä»¥å代åæå¯¹è±¡è¡ä¸ºçæ§è¡ï¼äºæ¯éç¨**éæç»å
¥**ç æ¹å¼ï¼å¼å
¥ç¹å®çè¯æ³åå»ºâæ¹é¢âï¼ä»è使å¾ç¼è¯å¨å¯ä»¥å¨ç¼è¯æé´ç»å
¥æå
³âæ¹é¢âç代ç ãç¶èæ®éåå½ï¼å®ç°AOPçææ¯ç¹æ§å´æ¯ç¸åçï¼åå«ä¸ºï¼
* join pointï¼è¿æ¥ç¹ï¼ï¼æ¯ç¨åºæ§è¡ä¸çä¸ä¸ªç²¾ç¡®æ§è¡ç¹ï¼ä¾å¦ç±»ä¸çä¸ä¸ªæ¹æ³ã宿¯ä¸ä¸ªæ½è±¡çæ¦å¿µï¼å¨å®ç°AOPæ¶ï¼å¹¶ä¸éè¦å»å®ä¹ä¸ä¸ªjoin pointã
* point cutï¼åå
¥ç¹ï¼ï¼æ¬è´¨ä¸æ¯ä¸ä¸ªæè·è¿æ¥ç¹çç»æãå¨AOPä¸ï¼å¯ä»¥å®ä¹ä¸ä¸ªpoint cutï¼æ¥æè·ç¸å
³æ¹æ³çè°ç¨ã
* adviceï¼éç¥ï¼ï¼æ¯point cutçæ§è¡ä»£ç ï¼æ¯æ§è¡âæ¹é¢âçå
·ä½é»è¾ã
* aspectï¼æ¹é¢ï¼ï¼point cutåadviceç»åèµ·æ¥å°±æ¯aspectï¼å®ç±»ä¼¼äºOOPä¸å®ä¹çä¸ä¸ªç±»ï¼ä½å®ä»£è¡¨çæ´å¤æ¯å¯¹è±¡é´æ¨ªåçå
³ç³»ã
* introduceï¼å¼å
¥ï¼ï¼ä¸ºå¯¹è±¡å¼å
¥éå çæ¹æ³æå±æ§ï¼ä»èè¾¾å°ä¿®æ¹å¯¹è±¡ç»æçç®çãæçAOPå·¥å
·åå°å
¶ç§°ä¸ºmixinã
_**IoCï¼**_
**2. spring æåªäºä¸»è¦æ¨¡åï¼**
ä¸ä¸ªå®ä¹æç¡®ç模åç»æï¼
_**æ ¸å¿å®¹å¨**_
è¿æ¯Springæ¡æ¶æåºç¡çé¨åï¼å®æä¾äºä¾èµæ³¨å
¥ï¼DependencyInjectionï¼ç¹å¾æ¥å®ç°å®¹å¨å¯¹Beanç管çãè¿éæåºæ¬çæ¦å¿µæ¯BeanFactoryï¼å®æ¯ä»»ä½Springåºç¨çæ ¸å¿ãBeanFactoryæ¯å·¥å模å¼çä¸ä¸ªå®ç°ï¼å®ä½¿ç¨IoCå°åºç¨é
ç½®åä¾èµè¯´æä»å®é
çåºç¨ä»£ç ä¸åç¦»åºæ¥ã
_**åºç¨ä¸ä¸æï¼Contextï¼æ¨¡å**_
æ ¸å¿æ¨¡åçBeanFactory使Springæä¸ºä¸ä¸ªå®¹å¨ï¼èä¸ä¸ææ¨¡åä½¿å®æä¸ºä¸ä¸ªæ¡æ¶ãè¿ä¸ªæ¨¡åæ©å±äºBeanFactoryçæ¦å¿µï¼å¢å äºå¯¹å½é
åï¼I18Nï¼æ¶æ¯ãäºä»¶ä¼ æä»¥åéªè¯çæ¯æãå¦å¤ï¼è¿ä¸ªæ¨¡åæä¾äºè®¸å¤ä¼ä¸æå¡ï¼ä¾å¦çµåé®ä»¶ãJNDI访é®ãEJBéæãè¿ç¨ä»¥åæ¶åºè°åº¦ï¼schedulingï¼æå¡ãä¹å
æ¬äºå¯¹æ¨¡çæ¡æ¶ä¾å¦VelocityåFreeMarkeréæçæ¯æã
_**SpringçAOP模å**_
Springå¨å®çAOP模å䏿ä¾äºå¯¹é¢ååé¢ç¼ç¨ç䏰坿¯æãè¿ä¸ªæ¨¡åæ¯å¨Springåºç¨ä¸å®ç°åé¢ç¼ç¨çåºç¡ã为äºç¡®ä¿Springä¸å
¶å®AOPæ¡æ¶çäºç¨æ§ï¼SpringçAOPæ¯æåºäºAOPèçå®ä¹çAPIãAOPèçæ¯ä¸ä¸ªå¼æºé¡¹ç®ï¼å®çç®æ æ¯éè¿å®ä¹ä¸ç»å
±åçæ¥å£åç»ä»¶æ¥ä¿è¿AOPç使ç¨ä»¥åä¸åçAOPå®ç°ä¹é´çäºç¨æ§ãéè¿è®¿é®ä»ä»¬çç«ç¹ï¼ä½ å¯ä»¥æ¾å°å
³äºAOPèççæ´å¤å
容ãSpringçAOP模åä¹å°å
æ°æ®ç¼ç¨å¼å
¥äºSpringã使ç¨Springçå
æ°æ®æ¯æï¼ä½ å¯ä»¥ä¸ºä½ çæºä»£ç å¢å 注éï¼æç¤ºSpringå¨ä½å¤ä»¥åå¦ä½åºç¨åé¢å½æ°ã
_**JDBCæ½è±¡åDAO模å**_
使ç¨JDBCç»å¸¸å¯¼è´å¤§éçéå¤ä»£ç ï¼åå¾è¿æ¥ãå建è¯å¥ãå¤çç»æéï¼ç¶åå
³éè¿æ¥ãSpringçJDBCåDAOæ¨¡åæ½åäºè¿äºéå¤ä»£ç ï¼å æ¤ä½ å¯ä»¥ä¿æä½ çæ°æ®åºè®¿é®ä»£ç å¹²åç®æ´ï¼å¹¶ä¸å¯ä»¥é²æ¢å å
³éæ°æ®åºèµæºå¤±è´¥èå¼èµ·çé®é¢ãè¿ä¸ªæ¨¡åè¿å¨å ç§æ°æ®åºæå¡å¨ç»åºçéè¯¯æ¶æ¯ä¹ä¸å»ºç«äºä¸ä¸ªææä¹çå¼å¸¸å±ãä½¿ä½ ä¸ç¨åè¯å¾ç ´è¯ç¥ç§çç§æçSQLéè¯¯æ¶æ¯ï¼å¦å¤ï¼è¿ä¸ªæ¨¡åè¿ä½¿ç¨äºSpringçAOP模å为Springåºç¨ä¸ç对象æä¾äºäºå¡ç®¡çæå¡ã
_**对象/å
³ç³»æ å°éææ¨¡å**_
对é£äºæ´å欢使ç¨å¯¹è±¡/å
³ç³»æ å°å·¥å
·è䏿¯ç´æ¥ä½¿ç¨JDBCç人ï¼Springæä¾äºORM模åãSpringå¹¶ä¸è¯å¾å®ç°å®èªå·±çORMè§£å³æ¹æ¡ï¼èæ¯ä¸ºå ç§æµè¡çORMæ¡æ¶æä¾äºéææ¹æ¡ï¼å
æ¬HibernateãJDOåiBATIS SQLæ å°ãSpringçäºå¡ç®¡çæ¯æè¿äºORMæ¡æ¶ä¸çæ¯ä¸ä¸ªä¹å
æ¬JDBCã
_**SpringçWeb模å**_
Webä¸ä¸ææ¨¡å建ç«äºåºç¨ä¸ä¸ææ¨¡åä¹ä¸ï¼æä¾äºä¸ä¸ªéåäºWebåºç¨çä¸ä¸æãå¦å¤ï¼è¿ä¸ªæ¨¡åè¿æä¾äºä¸äºé¢åæå¡æ¯æãä¾å¦ï¼å®ç°æä»¶ä¸ä¼ çmultipart请æ±ï¼å®ä¹æä¾äºSpringåå
¶å®Webæ¡æ¶çéæï¼æ¯å¦StrutsãWebWorkã
_**SpringçMVCæ¡æ¶**_
Spring为æå»ºWebåºç¨æä¾äºä¸ä¸ªåè½å
¨é¢çMVCæ¡æ¶ãè½ç¶Springå¯ä»¥å¾å®¹æå°ä¸å
¶å®MVCæ¡æ¶éæï¼ä¾å¦Strutsï¼ä½SpringçMVCæ¡æ¶ä½¿ç¨IoC对æ§å¶é»è¾åä¸å¡å¯¹è±¡æä¾äºå®å
¨çå离ãå®ä¹å
è®¸ä½ å£°ææ§å°å°è¯·æ±åæ°ç»å®å°ä½ çä¸å¡å¯¹è±¡ä¸ï¼æ¤å¤ï¼SpringçMVCæ¡æ¶è¿å¯ä»¥å©ç¨Springçä»»ä½å
¶å®æå¡ï¼ä¾å¦å½é
åä¿¡æ¯ä¸éªè¯ã
**3. spring 常ç¨ç注å
¥æ¹å¼æåªäºï¼**
常ç¨ç注å
¥æ¹å¼ä¸»è¦æä¸ç§ï¼æé æ¹æ³æ³¨å
¥ï¼setter注å
¥ï¼åºäºæ³¨è§£ç注å
¥ï¼é常使ç¨åºäºæ³¨è§£æ³¨å
¥ã
_**åºäºæ³¨è§£ç注å
¥**_
å¨ä»ç»æ³¨è§£æ³¨å
¥çæ¹å¼åï¼å
ç®åäºè§£beançä¸ä¸ªå±æ§autowireï¼autowireä¸»è¦æä¸ä¸ªå±æ§å¼ï¼constructorï¼byNameï¼byTypeã
* constructorï¼éè¿æé æ¹æ³è¿è¡èªå¨æ³¨å
¥ï¼springä¼å¹é
ä¸æé æ¹æ³åæ°ç±»åä¸è´çbeanè¿è¡æ³¨å
¥ï¼å¦ææä¸ä¸ªå¤åæ°çæé æ¹æ³ï¼ä¸ä¸ªåªæä¸ä¸ªåæ°çæé æ¹æ³ï¼å¨å®¹å¨ä¸æ¥æ¾å°å¤ä¸ªå¹é
å¤åæ°æé æ¹æ³çbeanï¼é£ä¹springä¼ä¼å
å°bean注å
¥å°å¤åæ°çæé æ¹æ³ä¸ã
* byNameï¼è¢«æ³¨å
¥beançidåå¿
é¡»ä¸setæ¹æ³ååæªå¹é
ï¼å¹¶ä¸idåç§°ç第ä¸ä¸ªåè¯é¦åæ¯å¿
é¡»å°åï¼è¿ä¸ç¹ä¸æå¨set注å
¥æç¹ä¸åã
* byTypeï¼æ¥æ¾ææçsetæ¹æ³ï¼å°ç¬¦å符ååæ°ç±»åçbean注å
¥ã
ä¸é¢è¿å
¥æ£é¢ï¼æ³¨è§£æ¹å¼æ³¨åbeanï¼æ³¨å
¥ä¾èµ ãä¸»è¦æåç§æ³¨è§£å¯ä»¥æ³¨åbeanï¼æ¯ç§æ³¨è§£å¯ä»¥ä»»æä½¿ç¨ï¼åªæ¯è¯ä¹ä¸ææå·®å¼ï¼
1. @Componentï¼å¯ä»¥ç¨äºæ³¨åææbean
2. @Repositoryï¼ä¸»è¦ç¨äºæ³¨ådaoå±çbean
3. @Controllerï¼ä¸»è¦ç¨äºæ³¨åæ§å¶å±çbean
4. @Serviceï¼ä¸»è¦ç¨äºæ³¨åæå¡å±çbean
_æè¿°ä¾èµå
³ç³»ä¸»è¦æä¸¤ç§ï¼_
* @Resourceï¼javaçæ³¨è§£ï¼é»è®¤ä»¥byNameçæ¹å¼å»å¹é
ä¸å±æ§åç¸åçbeançidï¼å¦ææ²¡ææ¾å°å°±ä¼ä»¥byTypeçæ¹å¼æ¥æ¾ï¼å¦æbyTypeæ¥æ¾å°å¤ä¸ªçè¯ï¼ä½¿ç¨@Qualifier注解ï¼springæ³¨è§£ï¼æå®æä¸ªå
·ä½åç§°çbeanã
```
@Resource
@Qualifier("userDaoMyBatis")
private IUserDao userDao;
public UserService(){
```
* @Autowiredï¼spring注解ï¼é»è®¤æ¯ä»¥byTypeçæ¹å¼å»å¹é
ä¸å±æ§åç¸åçbeançidï¼å¦ææ²¡ææ¾å°ï¼å°±éè¿byNameçæ¹å¼å»æ¥æ¾ï¼
```
@Autowired
@Qualifier("userDaoJdbc")
private IUserDao userDao;
```
**4. spring ä¸ç bean æ¯çº¿ç¨å®å
¨çåï¼spring æ¯æå ç§ bean çä½ç¨åï¼**
Spring容å¨ä¸çBeanæ¯å¦çº¿ç¨å®å
¨ï¼å®¹å¨æ¬èº«å¹¶æ²¡ææä¾Beanç线ç¨å®å
¨çç¥ï¼å æ¤å¯ä»¥è¯´spring容å¨ä¸çBeanæ¬èº«ä¸å
·å¤çº¿ç¨å®å
¨çç¹æ§ï¼ä½æ¯å
·ä½è¿æ¯è¦ç»åå
·ä½scopeçBeanå»ç ç©¶ã
_spring ç bean æåªäºscope[ä½ç¨å]_
1. singleton:åä¾ããé»è®¤ã
2. prototype:ååï¼æ¯æ¬¡å建ä¸ä¸ªæ°å¯¹è±¡
3. request:请æ±ï¼æ¯æ¬¡Http请æ±å建ä¸ä¸ªæ°å¯¹è±¡ï¼éç¨äºWebApplicationContextç¯å¢ä¸ã
4. session:ä¼è¯ï¼åä¸ä¸ªä¼è¯å
±äº«ä¸ä¸ªå®ä¾ãä¸åä¼è¯ä½¿ç¨ä¸ç¨çå®ä¾ã
5. global-session:å
¨å±ä¼è¯ï¼ææä¼è¯å
±äº«ä¸ä¸ªå®ä¾ã
* åä¾Bean,ææçº¿ç¨é½å
±äº«ä¸ä¸ªåä¾å®ä¾Bean,å æ¤æ¯åå¨èµæºçç«äºã妿åä¾Bean,æ¯ä¸ä¸ªæ ç¶æBeanï¼é£ä¹çº¿ç¨å®å
¨ã
* 对äºååBean,线ç¨å®å
¨ã
* æ¯å¦spring mvc ç ControllerãServiceãDaoçï¼è¿äºBean大夿¯æ ç¶æçï¼åªå
³æ³¨äºæ¹æ³æ¬èº«ã
* å¯¹äºæç¶æçbeanï¼spring宿¹æä¾çbeanï¼ä¸è¬æä¾äºéè¿ThreadLocalå»è§£å³çº¿ç¨å®å
¨çæ¹æ³ãæ¯å¦RequestContextHolderãTransactionSynchronizationManagerãLocaleContextHolderçã使ç¨ThreadLocalç好夿¯ä½¿å¾å¤çº¿ç¨åºæ¯ä¸ï¼å¤ä¸ªçº¿ç¨å¯¹è¿ä¸ªåä¾Beançæååéå¹¶ä¸åå¨èµæºçç«äºï¼å 为ThreadLocal为æ¯ä¸ªçº¿ç¨ä¿å线ç¨ç§æçæ°æ®ãè¿æ¯ä¸ç§ä»¥ç©ºé´æ¢æ¶é´çæ¹å¼ãå½ç¶ä¹å¯ä»¥éè¿å éçæ¹æ³æ¥è§£å³çº¿ç¨å®å
¨ï¼è¿ç§ä»¥æ¶é´æ¢ç©ºé´çåºæ¯å¨é«å¹¶ååºæ¯ä¸æ¾ç¶æ¯ä¸å®é
çã
**5. spring èªå¨è£
é
bean æåªäºæ¹å¼ï¼**
**6. spring äºå¡å®ç°æ¹å¼æåªäºï¼è¯´ä¸ä¸ spring çäºå¡é离ï¼**
**7. 说ä¸ä¸ spring mvc è¿è¡æµç¨ï¼**
**8. spring mvc æåªäºç»ä»¶ï¼**
**9. @RequestMapping çä½ç¨æ¯ä»ä¹ï¼**
**10. @Autowired çä½ç¨æ¯ä»ä¹ï¼**
**11.Springæ¡æ¶Web页é¢ä¹±ç é®é¢çè§£å³ï¼**
å¯ä»¥éç¨Springæ¡æ¶èªå¸¦çè¿æ»¤å¨CharacterEncodingFilterï¼è¿æ ·å¯ä»¥å¤§å¤§åè½»äºæä»¬çå·¥ä½éï¼å³ç®åæ¹ä¾¿å容æçè§£ï¼é
ç½®æ¹å¼å¦ä¸ï¼å¨web.xmlæä»¶ä¸filterçä½ç½®å ä¸å¦ä¸å
容ï¼
```xml
Interceptor interceptor = new LogInterceptor();//å¦ææ¦æªaä¸çsaveæ¹æ³
å°A b = (A)interceptor.plugin(a);è¿ébå°±æ¯aç代çå®ä¾ï¼å¨è°ç¨aä¸çsaveæ¹æ³æ¶ï¼å®é
å°è°ç¨interceptorçinterceptæ¹æ³ï¼å¨è¯¥æ¹æ³ä¸ä¸å®è¦è°ç¨Invocationçproceedæ¹æ³å¹¶å°è¿åå¼è¿åã
**9.MyBatisè¿è¡åç**

å¨ MyBatis è¿è¡å¼å§æ¶éè¦å
éè¿ Resourceså è½½å
¨å±é
ç½®æä»¶.
ä¸é¢éè¦å®ä¾å SqlSessionFactoryBuilder æå»ºå¨.
å¸®å© SqlSessionFactory æ¥å£å®ç°ç±» DefaultSqlSessionFactory.
å¨å®ä¾å DefaultSqlSessionFactory ä¹åéè¦å
å建 XmlConfigBuilderè§£æå
¨å±é
ç½®æä»¶æµ,å¹¶æè§£æç»æåæ¾å¨ Configuration ä¸.
ä¹åæConfiguratin ä¼ éç» DefaultSqlSessionFactory.å°æ¤ SqlSessionFactory å·¥åå建æå.
ç± SqlSessionFactory å·¥åå建 SqlSession. æ¯æ¬¡å建 SqlSession æ¶,é½éè¦ç± TransactionFactory å建 Transaction对象,åæ¶è¿éè¦å建 SqlSession çæ§è¡å¨ Excutor,æåå®ä¾åDefaultSqlSession,ä¼ éç» SqlSession æ¥å£. æ ¹æ®é¡¹ç®éæ±ä½¿ç¨ SqlSession æ¥å£ä¸ç API 宿å
·ä½çäºå¡æä½.
妿äºå¡æ§è¡å¤±è´¥,éè¦è¿è¡ rollback åæ»äºå¡. 妿äºå¡æ§è¡æåæäº¤ç»æ°æ®åº.å
³é SqlSession