# JavaEE @toc ### 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çåºå«ï¼** **3. tcp 为ä»ä¹è¦ä¸æ¬¡æ¡æï¼ä¸¤æ¬¡ä¸è¡åï¼ä¸ºä»ä¹ï¼** **4. 说ä¸ä¸ tcp ç²å æ¯æä¹äº§ççï¼** **5. OSI çä¸å±æ¨¡å齿åªäºï¼** **6. get å post è¯·æ±æåªäºåºå«ï¼** **7. å¦ä½å®ç°è·¨åï¼** ### Springé¨å **1. 为ä»ä¹è¦ä½¿ç¨ springï¼** **2. è§£éä¸ä¸ä»ä¹æ¯ aopï¼** **3. è§£éä¸ä¸ä»ä¹æ¯ iocï¼** **4. spring æåªäºä¸»è¦æ¨¡åï¼** **5. spring 常ç¨çæ³¨å ¥æ¹å¼æåªäºï¼** **6. spring ä¸ç bean æ¯çº¿ç¨å®å ¨çåï¼** **7. spring æ¯æå ç§ bean çä½ç¨åï¼** **8. spring èªå¨è£ é bean æåªäºæ¹å¼ï¼** **9. spring äºå¡å®ç°æ¹å¼æåªäºï¼** **10. 说ä¸ä¸ spring çäºå¡é离ï¼** **11. 说ä¸ä¸ spring mvc è¿è¡æµç¨ï¼** **12. spring mvc æåªäºç»ä»¶ï¼** **13. @RequestMapping çä½ç¨æ¯ä»ä¹ï¼** **14. @Autowired çä½ç¨æ¯ä»ä¹ï¼** ### Hibernateé¨å **1. hibernate ä¸å¦ä½å¨æ§å¶å°æ¥çæå°ç sql è¯å¥ï¼** **2. hibernate æå ç§æ¥è¯¢æ¹å¼ï¼** **3. hibernate å®ä½ç±»å¯ä»¥è¢«å®ä¹ä¸º final åï¼** **4. å¨ hibernate ä¸ä½¿ç¨ Integer å int åæ å°æä»ä¹åºå«ï¼** **5. hibernate æ¯å¦ä½å·¥ä½çï¼** **6. get()å load()çåºå«ï¼** **7. 说ä¸ä¸ hibernate çç¼åæºå¶ï¼** **8. hibernate 对象æåªäºç¶æï¼** **9. å¨ hibernate ä¸ getCurrentSession å openSession çåºå«æ¯ä»ä¹ï¼** **10. hibernate å®ä½ç±»å¿ é¡»è¦ææ åæé 彿°åï¼ä¸ºä»ä¹ï¼** ### MyBatisé¨å **1. mybatis ä¸ #{}å ${}çåºå«æ¯ä»ä¹ï¼** **2. mybatis æå ç§å页æ¹å¼ï¼** **3. RowBounds æ¯ä¸æ¬¡æ§æ¥è¯¢å ¨é¨ç»æåï¼ä¸ºä»ä¹ï¼** **4. mybatis é»è¾å页åç©çå页çåºå«æ¯ä»ä¹ï¼** **5. mybatis æ¯å¦æ¯æå»¶è¿å è½½ï¼å»¶è¿å è½½çåçæ¯ä»ä¹ï¼** **6. 说ä¸ä¸ mybatis çä¸çº§ç¼ååäºçº§ç¼åï¼** **7. mybatis å hibernate çåºå«æåªäºï¼** **8. mybatis æåªäºæ§è¡å¨ï¼Executorï¼ï¼** **9. mybatis å页æä»¶çå®ç°åçæ¯ä»ä¹ï¼** **10. mybatis å¦ä½ç¼åä¸ä¸ªèªå®ä¹æä»¶ï¼** ### ZooKeeperé¨å **1. zookeeper æ¯ä»ä¹ï¼** **2. zookeeper 齿åªäºåè½ï¼** **3. zookeeper æå ç§é¨ç½²æ¨¡å¼ï¼** **4. zookeeper æä¹ä¿è¯ä¸»ä»èç¹çç¶æåæ¥ï¼** **5. é群ä¸ä¸ºä»ä¹è¦æä¸»èç¹ï¼** **6. éç¾¤ä¸æ 3 å°æå¡å¨ï¼å ¶ä¸ä¸ä¸ªèç¹å®æºï¼è¿ä¸ªæ¶å zookeeper è¿å¯ä»¥ä½¿ç¨åï¼** **7. 说ä¸ä¸ zookeeper çéç¥æºå¶ï¼**