1.djangoä¸mvcåå«ä»£è¡¨ä»ä¹ç¨(djangomvc)
2.java webå¼å ä¼çè¿
3.如何快速读懂项目源码javaWeb
4.Java Web中“apper,源码service,源码controller,源码model”分别是源码什么作用?
djangoä¸mvcåå«ä»£è¡¨ä»ä¹ç¨(djangomvc)
导读ï¼å¾å¤æåé®å°å ³äºdjangoä¸mvcåå«ä»£è¡¨ä»ä¹ç¨çç¸å ³é®é¢ï¼æ¬æé¦å¸CTOç¬è®°å°±æ¥ä¸ºå¤§å®¶å个详ç»è§£çï¼ä¾å¤§å®¶åèï¼å¸æ对大家ææ帮å©ï¼ä¸èµ·æ¥ççå§ï¼mvcä¸çmvcåå«æä»ä¹MVCæ¯Javaä¸çä¸ç§è®¾è®¡æ¨¡å¼ï¼å¨ä½ åç¨åºçæ¶åä¸å®å¾æç §è¿æ ·ç模å¼å代ç ï¼ä»çç®çæ¯ä¸ºäºåå°å±ä¸å±ä¹é´çè¦åï¼æ¹ä¾¿åç»çç»´æ¤
Mââæçæ¯Modelï¼å³æ¨¡åï¼å¨å®é çå¼åä¸æ们çå®ä½ç±»å°±æ¯æ们ç模åï¼åéä¿ä¸ç¹å°±æ¯ä½ åäºå¾å¤private修饰çåéï¼ç¶ååäºå¾å¤getãsetæ¹æ³ç类就å«æ¨¡å
Vââæçæ¯Viewï¼å³è§å¾ï¼å°±æ¯æ们JavaWEBä¸çè§å¾ï¼ä¹å°±æ¯JSPäºï¼éä¿ä¸ç¹å°±æ¯ç¨æ·å¯ä»¥çå°ç页é¢å°±å«åè§å¾
Cââæçæ¯Controllerï¼å³æ§å¶å¨ï¼å°±æ¯æ们å¨æ¥æ¶å端穿è¿æ¥ç请æ±çé£ä¸ªç±»å°±å«åæ§å¶å¨ï¼æ¯å¦æ们çservletï¼å模ååéæ°æ®ï¼æ§å¶ç¨æ·è¾å ¥ï¼è¯»åè§å¾çæ°æ®
mvcæ¯ä»ä¹,æä»ä¹ç¨mvcï¼modelâviewâcontrollerï¼æ¯è½¯ä»¶å·¥ç¨ä¸çä¸ç§è½¯ä»¶æ¶æ模å¼ï¼æ软件系ç»å为ä¸ä¸ªåºæ¬é¨åï¼
模åï¼modelï¼ï¼è§å¾ï¼viewï¼åæ§å¶å¨ï¼controllerï¼ã
mæ
模åãå³ç¨åºåç¼åç¨åºåºæçåè½ï¼å®ç°ç®æ³ççï¼ï¼æ°æ®åºä¸å®¶è¿è¡æ°æ®ç®¡çåæ°æ®åºè®¾è®¡(å¯ä»¥å®ç°å ·ä½çåè½)ã
模åï¼modelï¼
ç¨äºå°è£ ä¸åºç¨ç¨åºçä¸å¡é»è¾ç¸å ³çæ°æ®ä»¥å对æ°æ®çå¤çæ¹æ³ãâ
model
âæ对æ°æ®ç´æ¥è®¿é®çæåï¼ä¾å¦å¯¹æ°æ®åºç访é®ãâmodelâä¸ä¾èµâviewâåâcontrollerâï¼ä¹å°±æ¯è¯´ï¼
model
ä¸å ³å¿å®ä¼è¢«å¦ä½æ¾ç¤ºææ¯å¦ä½è¢«æä½ãä½æ¯
model
ä¸æ°æ®çååä¸è¬ä¼éè¿ä¸ç§å·æ°æºå¶è¢«å ¬å¸ã为äºå®ç°è¿ç§æºå¶ï¼é£äºç¨äºçè§æ¤
model
ç
view
å¿ é¡»äºå å¨æ¤
model
ä¸æ³¨åï¼ä»èï¼view
å¯ä»¥äºè§£å¨æ°æ®
model
ä¸åççæ¹åã
微软msvc++è§çªç¨åº
ç
mfc
document/viewæ¶æ
æ¯æ©æ对äºmvc模å¼çå®ç°ï¼mfcå°ç¨å¼åæcview以åcdocument两大类å«ï¼å ¶ä¸çdocument对åºmvcä¸ç
model
ï¼view
ç¸å½äºmvcä¸ç
viewï¼controllerï¼åå ä¸cwinappç±»å«ï¼åæä¸å¤§é¡¹ãä½æ¯åºæ¬ä¸mfcæ¯ä¸ä¸ªå¤±è´¥çmvc模å¼ä½åã
python+djangoMTVæ¡æ¶åphpMVCæ¡æ¶çä¸åä¹å¤
python+djangoMTVæ¡æ¶åphpMVCæ¡æ¶çä¸åä¹å¤
æè¿å¦ä¹ äºpythonè¯è¨ådjangoMTVæ¡æ¶ï¼æè§ç¨çå¾ç½åãè¿éç»å¤§å®¶ç²ç¥çä»ç»ä¸ä¸ã
Djangoæ¯ä¸ä¸ªå¼æ¾æºä»£ç çWebåºç¨æ¡æ¶ï¼ç±Pythonåæãéç¨äºMTVç设计模å¼ï¼å³æ¨¡åMï¼æ¨¡çTåè§å¾æ§å¶å¨Vãå®æåæ¯è¢«å¼åæ¥ç¨äºç®¡çå³ä¼¦æ¯åºçéå¢æä¸çä¸äºä»¥æ°é»å 容为主çç½ç«çã并äºå¹´7æå¨BSD许å¯è¯ä¸åå¸ãè¿å¥æ¡æ¶æ¯ä»¥æ¯å©æ¶çåæ®èµçµå£«åä»æDjangoReinhardtæ¥å½åçã
Djangoç主è¦ç®æ æ¯ä½¿å¾å¼åå¤æçãæ°æ®åºé©±å¨çç½ç«åå¾ç®åãDjango注éç»ä»¶çéç¨æ§åâå¯æææ§âï¼ææ·å¼ååDRYæ³åï¼Don'tRepeatYourselfï¼ãå¨Djangoä¸Python被æ®é使ç¨ï¼çè³å æ¬é ç½®æ件åæ°æ®æ¨¡åã
å ³é®ä¸ç¹æ¯Djangoæ¡æ¶ææ§å¶å±(Ctronllayer)ç»å°è£ äºï¼æ éä¸æ°æ®äº¤äºè¿å±é½æ¯æ°æ®åºè¡¨ç读,å,å é¤,æ´æ°çæä½.å¨åç¨åºçæ¶åï¼åªè¦è°ç¨æ¹æ³å°±è¡äº.æè§å¾æ¹ä¾¿.ç¨æ·å¯ä»¥ç¨å¾å°ç代ç å®æå¾å¤çäºæ .代ç å¯è¯»æ§å¼º.è¿è¡çé度æ¯phpè¦å¿«.
pythonæ¯åµå ¥å¼çè¯è¨,å®å¯ä»¥æCåJAVAè¯è¨çåçä¸è¥¿ç»åå¨ä¸èµ·.ä¹é¾æªGoogleå ¬å¸ä¸»å¯¼è®®è¯è¨ç¨python,c++,javaçæ¯è¾å¤.大çå ¬å¸æ¯è¾éè§ç³»ç»ç®¡çåæ»ä½çæ¶æ.
æ人说ææåå±çè¯è¨æ¯python,ä¸è¿é½å¼å¾å¤§å®¶å»æ¢è®¨ç.å 为ç»æé½å¾é¢æ,å段æ¶é´é¹çå¾ççæ¯Rubyè¯è¨,Rubyååºæ¥æ¶,ä¼ è¯´ä¹å¾äºå¾,ç°å¨çèµ·æ¥ä¹ä¸æä¹è¡äº.
Pythonçåæ¯
Pythonå¨ç¼ç¨é¢åçå æçä¸ç´å¤äºç¨³æ¥ä¸åä¹ä¸ï¼æ ¹æ®ææ°çæ°æ®ï¼Pythonæå第ä¸ãåå ååå«æ¯Java,C,VB,C++,PHPåPerl.ä½ä¸ºä¸ä¸ªå¾å¹´è½»çè¯è¨ï¼Pythonçä½ç½®å·²ç»ç¸å½ä»¤äººæ¯å¥äºãéç微软å°Pythonçº³å ¥.Netå¹³å°ï¼ç¸ä¿¡Pythonçå°æ¥ä¼æ´å 强å²åå±ãPythonå¾å¯è½ä¼æ为.Netå¹³å°å¿«éå¼åç主æµè¯è¨ã
欲äºè§£è¿æ¹é¢æ åµï¼è¯·åèIronPythonçç¸å ³ä¿¡æ¯.
èåçæç´¢å¼æGoogleä¹å¤§é使ç¨Pythonãç°å¨ä¸å½çæç(sohu)ç½ç«é®ç®±ç³»ç»ä¹æ¯ç¨pythonå¼åç.æ´å 令人åæçæ¯ï¼å¨Nokiaæºè½ææºæéç¨çSymbianæä½ç³»ç»ä¸ï¼Pythonæ为继C++,Javaä¹åç第ä¸ä¸ªç¼ç¨è¯è¨ï¼å¯è§Pythonçå½±ååä¹å·¨å¤§ã
æå¨å¦pythonè¯è¨ådjangoMTVæ¡æ¶çä¸ç¹ä½ä¼,æ¿æ¥æç¨,é½è¯´è¯¥è¯è¨å¦ä½ç®åæå¦,é½æ¯ä¹±è¯´,å ¥é¨å¾ç®å,æ³è¦å¦æ·±ç¹,é½ä¸å®¹æç.
个人æè§è¿æ¯å¦PHPå ¥é¨æ¶æç®å,ä¸è¿ç°å¨å¼åºåªä¹æ¡æ¶,ç»ä»¶,ä¹åå¾è¶æ¥è¶ä¸ç®å,PHPä¹è¶æ¥è¶åJAVAçå¿åJSP(å½ç¶PHPæ¯Cè¯è¨çå¿å),个人è§å¾ä»ä»¬è¶æ¥è¶æ¥è¿,ä½åæ好å¤å·®å¼.
pythonè¯è¨ä¸ä» å¯ä»¥åWEBåºç¨,èä¸å¯ä»¥åæ¡é¢,æå¡å¨è½¯ä»¶åææºè½¯ä»¶å¼å(æç诺åºäºææºç³»ç»å°±æ¯ç¨pythonåç),èPHPä¸æ³¨åWEBåºç¨ç,PHPå¼åç¥å¸ä¹ä¸ºPHP为ä»ä¹ä¸è½è½¬åç §é¡¾å°åæ¡é¢,æå¡å¨è½¯ä»¶åææºè½¯ä»¶å¼åçåºç¨å¬è¯´ä¹è¦èäºå¥½ä¹ ,ä½æç»æ²¡è½æå转å.åªæ¯å 为ä»ä»¬å¨æåçåºå±å®ä½ææ»äº(ç½ä¸è¯è®ºè§ç¹).
ä¸è¿æçå°ç½ä¸è¯è¨æå,PHPå¨Pythonä¹å,ä¹è¯´æPHPå¨è¿æ表ç°ä¸ä¿.
æå欢ç¨Python,Django,ä¹å¾å欢ç¨php,thinkphp,ç¹å«æ¯å级åç1.5ç,ä½æ¯å¯ä¸å¯ä¹åæMTVçæ¡æ¶æ¨¡å¼å¢.ç¨ç²¾è¯ç代ç å®æå¾å¤å·¥ä½.å å¿«å¼åé度å¢.大家é½è¦åªåå¦.å æ²¹å å¼ä»¬.
2楼åå¤ï¼
ç¾å½å¤ªç©ºæ»ç½²NASA使ç¨Pythonï¼Google使ç¨Pythonï¼Youtube使ç¨Python.é¿éå·´å·´ä¹ç¨pythonå¼å,æçé®ç®±æ¯ç¨python2.6å¼åç
5楼åå¤ï¼
MVCä¸MTVæä»ä¹ä¸åå¢.
大家é½ç¥é
MVCä¸çMæ¯ä»£è¡¨MODLEå±,V代表VIEWå±,C代表Contrlå±.
MTVä¸çMæ¯ä»£è¡¨MODLEå±,T代表Template(模æ¿å±),V代表VIEWå±.
Djangoæ¯MTV模å¼æ¡æ¶,å®æControlæ§å¶å±å®¹åå°Djangoæ¡æ¶éè¾¹äº,
ç¨åºåæControlæ§å¶å±ä¸è¥¿äº¤ç»Djangoèªå¨å®æäº,åªéè¦ç¼åé常å°ç代ç å®æå¾å¤çäºæ .æ以,å®æ¯MVCæ¡æ¶èèçé®é¢è¦æ·±ä¸æ¥.å 为æ们ç¨åºå大é½åç¨åºå¨Contrlå±,ç°å¨è¿ä¸ªå·¥ä½äº¤ç»äºæ¡æ¶,ä» éåå¾å°çè°ç¨ä»£ç ,èªç¶å·¥ä½æçå°±æé«äº.
javaçMVCæ¯ä»ä¹ï¼æä»ä¹ç¨ï¼mvcåå«æ¯æ¨¡åè§å¾åæ§å¶æ¯ä¸ç§è®¾è®¡æ¨¡å¼ï¼è¿ç§æ¨¡å¼åºç¨äºåºç¨ç¨åºåå±å¼åã
Modelï¼æ¨¡åï¼-模å代表ä¸ä¸ªååæ°æ®ç对象æJAVAPOJOãå®ä¹å¯ä»¥å¸¦æé»è¾ï¼å¨æ°æ®ååæ¶æ´æ°æ§å¶å¨ã
Viewï¼è§å¾ï¼-è§å¾ä»£è¡¨æ¨¡åå å«çæ°æ®çå¯è§åã
Controllerï¼æ§å¶å¨ï¼-æ§å¶å¨ä½ç¨äºæ¨¡ååè§å¾ä¸ãå®æ§å¶æ°æ®æµå模å对象ï¼å¹¶å¨æ°æ®ååæ¶æ´æ°è§å¾ãå®ä½¿è§å¾ä¸æ¨¡åå离å¼ã
ä»ä¹æ¯MVCï¼ä½¿ç¨MVCç好å¤æ¯ä»ä¹ï¼MVCæ¯ä¸ä¸ªåè¯ç缩å,åå«ä¸ºï¼æ¨¡å(Model),è§å¾(View)åæ§å¶Controller)ãMVC模å¼çç®çå°±æ¯å®ç°Webç³»ç»çèè½åå·¥ãModelå±å®ç°ç³»ç»ä¸çä¸å¡é»è¾ï¼é常å¯ä»¥ç¨JavaBeanæEJBæ¥å®ç°ãViewå±ç¨äºä¸ç¨æ·ç交äºï¼é常ç¨JSPæ¥å®ç°ãControllerå±æ¯Modelä¸Viewä¹é´æ²éçæ¡¥æ¢ï¼å®å¯ä»¥åæ´¾ç¨æ·ç请æ±å¹¶éæ©æ°å½çè§å¾ä»¥ç¨äºæ¾ç¤ºï¼åæ¶å®ä¹å¯ä»¥è§£éç¨æ·çè¾å ¥å¹¶å°å®ä»¬æ å°ä¸ºæ¨¡åå±å¯æ§è¡çæä½ã
ä½è¦åæ§
MVCç好å¤
è§å¾å±åä¸å¡å±å离ï¼è¿æ ·å°±å 许æ´æ¹è§å¾å±ä»£ç èä¸ç¨éæ°ç¼è¯æ¨¡ååæ§å¶å¨ä»£ç ï¼åæ ·ï¼ä¸ä¸ªåºç¨çä¸å¡æµç¨æè ä¸å¡è§åçæ¹ååªéè¦æ¹å¨MVCç模åå±å³å¯ãå 为模åä¸æ§å¶å¨åè§å¾ç¸å离ï¼æ以å¾å®¹ææ¹ååºç¨ç¨åºçæ°æ®å±åä¸å¡è§åã
é«éç¨æ§åå¯éç¨æ§
éçææ¯çä¸æè¿æ¥ï¼ç°å¨éè¦ç¨è¶æ¥è¶å¤çæ¹å¼æ¥è®¿é®åºç¨ç¨åºãMVC模å¼å è®¸ä½ ä½¿ç¨åç§ä¸åæ ·å¼çè§å¾æ¥è®¿é®åä¸ä¸ªæå¡å¨ç«¯ç代ç ãå®å æ¬ä»»ä½WEBï¼HTTPï¼æµè§å¨æè æ 线æµè§å¨ï¼wapï¼ï¼æ¯å¦ï¼ç¨æ·å¯ä»¥éè¿çµèä¹å¯éè¿ææºæ¥è®¢è´ææ ·äº§åï¼è½ç¶è®¢è´çæ¹å¼ä¸ä¸æ ·ï¼ä½å¤ç订è´äº§åçæ¹å¼æ¯ä¸æ ·çãç±äºæ¨¡åè¿åçæ°æ®æ²¡æè¿è¡æ ¼å¼åï¼æ以åæ ·çæ件è½è¢«ä¸åççé¢ä½¿ç¨ãä¾å¦ï¼å¾å¤æ°æ®å¯è½ç¨HTMLæ¥è¡¨ç¤ºï¼ä½æ¯ä¹æå¯è½ç¨WAPæ¥è¡¨ç¤ºï¼èè¿äºè¡¨ç¤ºæéè¦çå½ä»¤æ¯æ¹åè§å¾å±çå®ç°æ¹å¼ï¼èæ§å¶å±å模åå±æ éåä»»ä½æ¹åã
è¾ä½ççå½å¨æææ¬
MVC使éä½å¼ååç»´æ¤ç¨æ·æ¥å£çææ¯å«éæ为å¯è½ã
å¿«éçé¨ç½²
使ç¨MVC模å¼ä½¿å¼åæ¶é´å¾å°ç¸å½å¤§ç缩åï¼å®ä½¿ç¨åºåï¼Javaå¼å人åï¼éä¸ç²¾åäºä¸å¡é»è¾ï¼çé¢ç¨åºåï¼HTMLåJSPå¼å人åï¼éä¸ç²¾åäºè¡¨ç°å½¢å¼ä¸ã
å¯ç»´æ¤æ§
å离è§å¾å±åä¸å¡é»è¾å±ä¹ä½¿å¾WEBåºç¨æ´æäºç»´æ¤åä¿®æ¹ã
æå©äºè½¯ä»¶å·¥ç¨å管ç
ç±äºä¸åçå±åå¸å ¶èï¼æ¯ä¸å±ä¸åçåºç¨å ·ææäºç¸åçç¹å¾ï¼æå©äºéè¿å·¥ç¨åãå·¥å ·å管çç¨åºä»£ç ã
ç»è¯ï¼ä»¥ä¸å°±æ¯é¦å¸CTOç¬è®°ä¸ºå¤§å®¶æ´ççå ³äºdjangoä¸mvcåå«ä»£è¡¨ä»ä¹ç¨çå ¨é¨å 容äºï¼æè°¢æ¨è±æ¶é´é 读æ¬ç«å 容ï¼å¸æ对æ¨ææ帮å©ï¼æ´å¤å ³äºdjangoä¸mvcåå«ä»£è¡¨ä»ä¹ç¨çç¸å ³å 容å«å¿äºå¨æ¬ç«è¿è¡æ¥æ¾åã
java webå¼å ä¼çè¿
å¦æè¿è¡Webå¼åï¼å ¨é¨ç¨JSPåJavaæ¥å®ç°ï¼ä¹æ¯å¯ä»¥çãä½æ¯ä½ ç代ç ä¼é常å¤æï¼å®ç°èµ·æ¥å¾éº»ç¦ï¼ä»ä¹é½æé头åã使ç¨SSHä¸å¤§æ¡æ¶ï¼å ¶å®æ¯æå¾å¤å¥½å¤çãä¼å°è£ å¾å¤å®ç°ï¼ä½ å ·ä½å¼åæ¶ï¼å°±è½æ¯è¾è½»æ¾ãä½æ¯SSHæ¡æ¶é 置对äºåå¦è è¿æ¯æ¯è¾å¤æçã
Strutsçåçåä¼ç¹.
Strutså·¥ä½åç
MVCå³Model-View-Controllerç缩åï¼æ¯ä¸ç§å¸¸ç¨ç设计模å¼ãMVC åå¼±äºä¸å¡é»è¾æ¥å£åæ°æ®æ¥å£ä¹é´çè¦åï¼ä»¥å让è§å¾å±æ´å¯äºååãMVCçå·¥ä½åç,å¦ä¸å¾1æç¤ºï¼ Struts æ¯MVCçä¸ç§å®ç°ï¼å®å° Servletå JSP æ è®°ï¼å±äº J2EE è§èï¼ç¨ä½å®ç°çä¸é¨åãStruts继æ¿äºMVCçå项ç¹æ§ï¼å¹¶æ ¹æ®J2EEçç¹ç¹ï¼åäºç¸åºçååä¸æ©å±ãStrutsçå·¥ä½åçï¼
è§å¾ï¼ä¸»è¦ç±JSPçæ页é¢å®æè§å¾ï¼Strutsæä¾ä¸°å¯çJSP æ ç¾åºï¼ Htmlï¼Beanï¼Logicï¼Templateçï¼è¿æå©äºåå¼è¡¨ç°é»è¾åç¨åºé»è¾ã
æ§å¶ï¼å¨Strutsä¸ï¼æ¿æ MVCä¸Controllerè§è²çæ¯ä¸ä¸ªServletï¼å«ActionServletãActionServletæ¯ä¸ä¸ªéç¨çæ§å¶ç»ä»¶ãè¿ä¸ªæ§å¶ç»ä»¶æä¾äºå¤çææåéå°StrutsçHTTP请æ±çå ¥å£ç¹ãå®æªååååè¿äºè¯·æ±å°ç¸åºçå¨ä½ç±»ï¼è¿äºå¨ä½ç±»é½æ¯Actionç±»çåç±»ï¼ãå¦å¤æ§å¶ç»ä»¶ä¹è´è´£ç¨ç¸åºç请æ±åæ°å¡«å Action Fromï¼é常称ä¹ä¸ºFromBeanï¼,å¹¶ä¼ ç»å¨ä½ç±»ï¼é常称ä¹ä¸ºActionBeanï¼ãå¨ä½ç±»å®ç°æ ¸å¿åä¸é»è¾ï¼å®å¯ä»¥è®¿é®java bean æè°ç¨EJBãæåå¨ä½ç±»ææ§å¶æä¼ ç»åç»çJSP æ件ï¼åè çæè§å¾ãææè¿äºæ§å¶é»è¾å©ç¨Struts-config.xmlæ件æ¥é ç½®ã
模åï¼æ¨¡å以ä¸ä¸ªæå¤ä¸ªjava beançå½¢å¼åå¨ãè¿äºbeanå为ä¸ç±»ï¼Action FormãActionãJavaBean or EJBãAction Formé常称ä¹ä¸ºFormBeanï¼å°è£ äºæ¥èªäºClientçç¨æ·è¯·æ±ä¿¡æ¯ï¼å¦è¡¨åä¿¡æ¯ãActioné常称ä¹ä¸ºActionBeanï¼è·åä»ActionSevletä¼ æ¥çFormBeanï¼ååºFormBeanä¸çç¸å ³ä¿¡æ¯ï¼å¹¶ååºç¸å ³çå¤çï¼ä¸è¬æ¯è°ç¨Java BeanæEJBçã
æµç¨ï¼å¨Strutsä¸ï¼ç¨æ·ç请æ±ä¸è¬ä»¥*.doä½ä¸ºè¯·æ±æå¡åï¼ææç*.do请æ±å被æåActionSevletï¼ActionSevletæ ¹æ®Struts-config.xmlä¸çé 置信æ¯ï¼å°ç¨æ·è¯·æ±å°è£ æä¸ä¸ªæå®å称çFormBeanï¼å¹¶å°æ¤FormBeanä¼ è³æå®å称çActionBeanï¼ç±ActionBeanå®æç¸åºçä¸å¡æä½ï¼å¦æ件æä½ï¼æ°æ®åºæä½çãæ¯ä¸ä¸ª*.doåæ对åºçFormBeanå称åActionBeanå称ï¼è¿äºå¨Struts-config.xmlä¸é ç½®ã
æ ¸å¿ï¼Strutsçæ ¸å¿æ¯ActionSevletï¼ActionSevletçæ ¸å¿æ¯Struts-config.xmlã
Strutsä¼ç¼ºç¹
ä¼ç¹ï¼ 1. å¼æºè½¯ä»¶ï¼è½æ´æ·±å ¥çäºè§£å ¶å é¨å®ç°æºå¶ã 2.Taglib æ è®°åºï¼çµæ´»å¨ç¨ï¼è½å¤§å¤§æé«å¼åæçã
3.页é¢å¯¼èªä½¿ç³»ç»çèç»æ´å æ¸ æ°ãéè¿ä¸ä¸ªé ç½®æ件ï¼å³å¯ææ¡æ´ä¸ªç³»ç»åé¨åä¹é´çèç³»ï¼è¿å¯¹äºåæçç»´æ¤æçè«å¤§ç好å¤ãå°¤å ¶æ¯å½å¦ä¸æ¹å¼åè æ¥æè¿ä¸ªé¡¹ç®æ¶ï¼è¿ç§ä¼å¿ä½ç°å¾æ´å ææ¾ã
4. æä¾Exceptionå¤çæºå¶ . 5. æ°æ®åºé¾æ¥æ± 管ç
6. Struts çActionå¿ éæ¯threadï¼safeæ¹å¼ï¼å®ä» ä» å 许ä¸ä¸ªå®ä¾å»å¤çææç请æ±ãæ以actionç¨å°çææçèµæºé½å¿ éç»ä¸åæ¥ï¼è¿ä¸ªå°±å¼èµ·äºçº¿ç¨å®å ¨çé®é¢ã 缺ç¹ï¼ Taglib æ¯Strutsçä¸å¤§ä¼å¿ï¼ä½å¯¹äºåå¦è èè¨ï¼å´éè¦ä¸ä¸ªæç»å¦ä¹ çè¿ç¨ï¼çè³è¿ä¼æä¹±ä½ ç½é¡µç¼åçä¹ æ¯ï¼ä½æ¯ï¼å½ä½ ä¹ æ¯äºå®æ¶ï¼ä½ ä¼è§å¾å®ççå¾æ£ã Struts å°MVCçControllerä¸å为ä¸ï¼å¨è·å¾ç»ææ´å æ¸ æ°çåæ¶ï¼ä¹å¢å äºç³»ç»çå¤æ度ã ActionForms 使ç¨ä¸ä¾¿ãæ æ³è¿è¡åå æµè¯ï¼StrutsTestCaseåªè½ç¨äºéæï¼
Springçåçåä¼ç¹
Springçæ£çç²¾åæ¯å®ç Iocæ¨¡å¼ å®ç°çBeanFactoryå AOP ï¼å®èªå·±å¨è¿ä¸ªåºç¡ä¸å»¶ä¼¸çåè½æäºç»è添足ã
Ioc模å¼æ¯ä»ä¹
å¯ä¼¸ç¼©æ§åé/è½»éï¼è°æ¯å®ç¨ç³»ç»çæ¶æ主éï¼
Springå®æ¯ä¸ä¸ªå¼æºç项ç®ï¼èä¸ç®åé常活è·ï¼å®åºäºIoCï¼Inversion of Controlï¼ååæ§å¶ï¼åAOPçææ¶å¤å±j2eeç³»ç»çæ¡æ¶ï¼ä½å®ä¸å¼ºè¿«ä½ å¿ é¡»å¨æ¯ä¸å± ä¸å¿ 须使ç¨Springï¼å 为å®æ¨¡ååçå¾å¥½ï¼å è®¸ä½ æ ¹æ®èªå·±çéè¦éæ©ä½¿ç¨å®çæä¸ä¸ªæ¨¡åï¼å®å®ç°äºå¾ä¼é çMVCï¼å¯¹ä¸åçæ°æ®è®¿é®ææ¯æä¾äºç»ä¸ç æ¥å£ï¼éç¨IoC使å¾å¯ä»¥å¾å®¹æçå®ç°beançè£ é ï¼æä¾äºç®æ´çAOP并æ®æ¤å®ç°Transcation Managmentï¼çç
ä¼ç¹
a. Springè½ææå°ç»ç»ä½ çä¸é´å±å¯¹è±¡ï¼ä¸ç®¡ä½ æ¯å¦éæ©ä½¿ç¨äºEJBãå¦æä½ ä» ä» ä½¿ç¨äºStrutsæå ¶ä»ä¸ºJ2EEç APIç¹å¶çframeworkï¼Springè´åäºè§£å³å©ä¸çé®é¢ã b. Springè½æ¶é¤å¨è®¸å¤å·¥ç¨ä¸å¸¸è§ç对Singletonçè¿å¤ä½¿ç¨ãæ ¹æ®æçç»éªï¼è¿æ¯ä¸ä¸ªå¾å¤§çé®é¢ï¼å®éä½äºç³»ç»çå¯æµè¯æ§åé¢å对象çç¨åº¦ã c. éè¿ä¸ç§å¨ä¸ååºç¨ç¨åºå项ç®é´ä¸è´çæ¹æ³æ¥å¤çé ç½®æ件ï¼Springè½æ¶é¤åç§åæ ·èªå®ä¹æ ¼å¼çå±æ§æ件çéè¦ãæ¾ç»å¯¹æ个类è¦å¯»æ¾çæ¯åªä¸ªéæ³è¬çå±æ§é¡¹æç³»ç»å±æ§æå°ä¸è§£ï¼ä¸ºæ¤ä¸å¾ä¸å»è¯»Javadocçè³æºç¼ç ï¼æäºSpringï¼ä½ ä» ä» éè¦ççç±»çJavaBeanå±æ§ãInversion of Controlç使ç¨ï¼å¨ä¸é¢è®¨è®ºï¼å¸®å©å®æäºè¿ç§ç®åã d.? éè¿æ对æ¥å£ç¼ç¨èä¸æ¯å¯¹ç±»ç¼ç¨ç代价å ä¹åå°å°æ²¡æï¼Springè½å¤ä¿è¿å »æ好çç¼ç¨ä¹ æ¯ã e. Spring被设计为让使ç¨å®å建çåºç¨å°½å¯è½å°çä¾èµäºä»çAPIsãå¨Springåºç¨ä¸ç大å¤æ°ä¸å¡å¯¹è±¡æ²¡æä¾èµäºSpringã f. 使ç¨Springæ建çåºç¨ç¨åºæäºåå æµè¯ã g. Springè½ä½¿EJBç使ç¨æ为ä¸ä¸ªå®ç°éæ©,èä¸æ¯åºç¨æ¶æçå¿ ç¶éæ©ãä½ è½éæ©ç¨POJOsælocal EJBsæ¥å®ç°ä¸å¡æ¥å£ï¼å´ä¸ä¼å½±åè°ç¨ä»£ç ã h. Spring帮å©ä½ 解å³è®¸å¤é®é¢èæ é使ç¨EJBãSpringè½æä¾ä¸ç§EJBçæ¿æ¢ç©ï¼å®ä»¬éç¨äºè®¸å¤webåºç¨ãä¾å¦ï¼Springè½ä½¿ç¨AOPæä¾å£°ææ§äºå¡ç®¡çèä¸éè¿EJB容å¨ï¼å¦æä½ ä» ä» éè¦ä¸å个æ°æ®åºæ交éï¼çè³ä¸éè¦ä¸ä¸ªJTAå®ç°ã i. Spring为æ°æ®ååæä¾äºä¸ä¸ªä¸è´çæ¡æ¶,ä¸è®ºæ¯ä½¿ç¨çæ¯JDBCè¿æ¯O/R mapping产åï¼å¦Hibernateï¼ã Springç¡®å®ä½¿ä½ è½éè¿æç®åå¯è¡ç解å³åæ³æ¥è§£å³ä½ çé®é¢ãèè¿æ¯ææå¾å¤§ä»·å¼çã 缺ç¹ï¼ä½¿ç¨äººæ°ä¸å¤ãjspä¸è¦åå¾å¤ä»£ç ãæ§å¶å¨è¿äºçµæ´»ï¼ç¼ºå°ä¸ä¸ªå ¬ç¨æ§å¶å¨
Hibernateçåçåä¼ç¹ã
Hibernate使ç¨äºJ2EEæ¶æä¸çå¦ä¸ææ¯ï¼JDBCãJTAãJNDIãå ¶ä¸JDBCæ¯ä¸ä¸ªæ¯æå ³ç³»æ°æ®åºæä½çä¸ä¸ªåºç¡å±ï¼å®ä¸JNDIåJTAä¸èµ·ç»åï¼ä½¿å¾Hibernateå¯ä»¥æ¹ä¾¿å°éæå°J2EEåºç¨æå¡å¨ä¸å»ã å¨è¿éï¼æ们ä¸ä¼è¯¦ç»å°å»è®¨è®ºHibernate APIæ¥å£ä¸çæææ¹æ³ï¼æ们åªç®è¦è®²ä¸ä¸æ¯ä¸ªä¸»è¦æ¥å£çåè½ï¼å¦æä½ æ³äºè§£å¾æ´å¤çè¯ï¼ä½ å¯ä»¥å¨Hibernateçæºç å ä¸çnet.sf.hibernateåå ä¸å»æ¥çè¿äºæ¥å£çæºä»£ç ãä¸é¢æ们ä¾æ¬¡è®²ä¸ä¸ææç主è¦æ¥å£ï¼ æ ¸å¿æ¥å£ 以ä¸5ä¸ªæ ¸å¿æ¥å£å ä¹å¨ä»»ä½å®é å¼åä¸é½ä¼ç¨å°ãéè¿è¿äºæ¥å£ï¼ä½ ä¸ä» å¯ä»¥åå¨åè·å¾æä¹ å¯¹è±¡ï¼å¹¶ä¸è½å¤è¿è¡äºå¡æ§å¶ã
Sessionæ¥å£ Sessionæ¥å£å¯¹äºHibernate å¼å人åæ¥è¯´æ¯ä¸ä¸ªæéè¦çæ¥å£ãç¶èå¨Hibernateä¸ï¼å®ä¾åçSessionæ¯ä¸ä¸ªè½»é级çç±»ï¼å建åéæ¯å®é½ä¸ä¼å ç¨å¾å¤èµæºãè¿å¨å®é 项ç®ä¸ç¡®å®å¾éè¦ï¼å 为å¨å®¢æ·ç¨åºä¸ï¼å¯è½ä¼ä¸æå°å建以åéæ¯Session对象ï¼å¦æSessionçå¼é太大ï¼ä¼ç»ç³»ç»å¸¦æ¥ä¸è¯å½±åã
SessionFactory æ¥å£ è¿éç¨å°äºä¸ä¸ªè®¾è®¡æ¨¡å¼ââå·¥å模å¼ï¼ç¨æ·ç¨åºä»å·¥åç±»SessionFactoryä¸åå¾Sessionçå®ä¾ã ä»¤ä½ æå°å¥æªçæ¯SessionFactory并ä¸æ¯è½»é级çï¼å®é ä¸å®ç设计è çæå¾æ¯è®©å®è½å¨æ´ä¸ªåºç¨ä¸å ±äº«ãå ¸åå°æ¥è¯´ï¼ä¸ä¸ªé¡¹ç®é常åªéè¦ä¸ä¸ªSessionFactoryå°±å¤äºï¼ä½æ¯å½ä½ ç项ç®è¦æä½å¤ä¸ªæ°æ®åºæ¶ï¼é£ä½ å¿ é¡»ä¸ºæ¯ä¸ªæ°æ®åºæå®ä¸ä¸ªSessionFactoryã SessionFactoryå¨Hibernateä¸å®é èµ·å°äºä¸ä¸ªç¼å²åºçä½ç¨ï¼å®ç¼å²äºHibernateèªå¨çæçSQLè¯å¥åä¸äºå ¶å®çæ å°æ°æ®ï¼è¿ç¼å²äºä¸äºå°æ¥æå¯è½éå¤å©ç¨çæ°æ®ã
Configuration æ¥å£ Configurationæ¥å£çä½ç¨æ¯å¯¹Hibernateè¿è¡é ç½®ï¼ä»¥å对å®è¿è¡å¯å¨ãå¨Hibernateçå¯å¨è¿ç¨ä¸ï¼Configurationç±»çå®ä¾é¦å å®ä½æ å°ææ¡£çä½ç½®ï¼è¯»åè¿äºé ç½®ï¼ç¶åå建ä¸ä¸ªSessionFactory对象ã
QueryåCriteriaæ¥å£ Queryæ¥å£è®©ä½ æ¹ä¾¿å°å¯¹æ°æ®åºåæä¹ å¯¹è±¡è¿è¡æ¥è¯¢ï¼å®å¯ä»¥æ两ç§è¡¨è¾¾æ¹å¼ï¼HQLè¯è¨ææ¬å°æ°æ®åºçSQLè¯å¥ãQueryç»å¸¸è¢«ç¨æ¥ç»å®æ¥è¯¢åæ°ãéå¶æ¥è¯¢è®°å½æ°éï¼å¹¶æç»æ§è¡æ¥è¯¢æä½ã Criteriaæ¥å£ä¸Queryæ¥å£é常类似ï¼å®å è®¸ä½ å建并æ§è¡é¢å对象çæ ååæ¥è¯¢ã å¼å¾æ³¨æçæ¯Queryæ¥å£ä¹æ¯è½»é级çï¼å®ä¸è½å¨Sessionä¹å¤ä½¿ç¨ã
Callback æ¥å£ å½ä¸äºæç¨çäºä»¶åçæ¶ââä¾å¦æä¹ å¯¹è±¡çè½½å ¥ãåå¨ãå é¤æ¶ï¼Callbackæ¥å£ä¼éç¥Hibernateå»æ¥æ¶ä¸ä¸ªéç¥æ¶æ¯ãä¸è¬èè¨ï¼Callbackæ¥å£å¨ç¨æ·ç¨åºä¸å¹¶ä¸æ¯å¿ é¡»çï¼ä½ä½ è¦å¨ä½ ç项ç®ä¸å建审计æ¥å¿æ¶ï¼ä½ å¯è½ä¼ç¨å°å®ã以ä¸æ¯å®ççç¥æ¥å£ï¼
· 主é®ççæ (IdentifierGenerator æ¥å£)
· æ¬å°SQLè¯è¨æ¯æ (Dialect æ½è±¡ç±»)
· ç¼å²æºå¶ (Cache åCacheProvider æ¥å£)
· JDBC è¿æ¥ç®¡ç (ConnectionProvideræ¥å£)
.äºå¡ç®¡ç (TransactionFactory, Transaction, å TransactionManagerLookup æ¥å£)
· ORM çç¥ (ClassPersister æ¥å£)
· å±æ§è®¿é®çç¥ (PropertyAccessor æ¥å£)
· 代ç对象çå建 (ProxyFactoryæ¥å£)
Hibernate为以ä¸æåçæºå¶åå«å建äºä¸ä¸ªç¼ºççå®ç°ï¼å æ¤å¦æä½ åªæ¯è¦å¢å¼ºå®çæ个çç¥çåè½çè¯ï¼åªéç®åå°ç»§æ¿è¿ä¸ªç±»å°±å¯ä»¥äºï¼æ²¡æå¿ è¦ä»å¤´å¼å§å代ç ã
Hibernateè¿è¡å¨ä¸¤ç§ç¯å¢ä¸ï¼å¯ç®¡çç¯å¢åä¸å¯ç®¡çç¯å¢
· å¯ç®¡çç¯å¢ââè¿ç§ç¯å¢å¯ç®¡çå¦ä¸èµæºï¼æ± èµæºç®¡çï¼è¯¸å¦æ°æ®åºè¿æ¥æ± åï¼è¿æäºå¡ç®¡çãå®å ¨å®ä¹ãä¸äºå ¸åçJ2EEæå¡å¨ï¼JBossãWeblogicãWebSphereï¼å·²ç»å®ç°äºè¿äºã
· ä¸å¯ç®¡çç¯å¢ââåªæ¯æä¾äºä¸äºåºæ¬çåè½ï¼è¯¸å¦åJettyæTomcatè¿æ ·çservlet容å¨ç¯å¢ã
ä¼ç¹ï¼
Hibernateæ¯JDBCçè½»é级ç对象å°è£ ï¼å®æ¯ä¸ä¸ªç¬ç«ç对象æä¹ å±æ¡æ¶ãHibernateå¯ä»¥ç¨å¨ä»»ä½JDBCå¯ä»¥ä½¿ç¨çåºåï¼ä¾å¦Javaåºç¨ç¨åºçæ°æ®åºè®¿é®ä»£ç ï¼DAOæ¥å£çå®ç°ç±»ï¼çè³å¯ä»¥æ¯BMPéé¢ç访é®æ°æ®åºç代ç ã
Hibernateæ¯ä¸ä¸ªåJDBCå¯åå ³èçæ¡æ¶ï¼æ以Hibernateçå ¼å®¹æ§åJDBC驱å¨ï¼åæ°æ®åºé½æä¸å®çå ³ç³»ï¼ä½æ¯å使ç¨å®çJavaç¨åºï¼åApp Server没æä»»ä½å ³ç³»ï¼ä¹ä¸åå¨å ¼å®¹æ§é®é¢ã
Hibernateä¸è½ç¨æ¥ç´æ¥åEntity Beanå对æ¯ï¼åªææ¾å¨æ´ä¸ªJ2EE项ç®çæ¡æ¶ä¸æè½æ¯è¾ã并ä¸å³ä½¿æ¯æ¾å¨è½¯ä»¶æ´ä½æ¡æ¶ä¸æ¥çï¼Hibernateä¹æ¯å为JDBCçæ¿ä»£è åºç°çï¼èä¸æ¯Entity Beançæ¿ä»£è åºç°çï¼
Hibernateæ¯ä¸ä¸ªå¼æ¾æºä»£ç çå¯¹è±¡å ³ç³»æ å°æ¡æ¶ï¼å®å¯¹JDBCè¿è¡äºé常轻é级ç对象å°è£ ï¼ä½¿å¾Javaç¨åºåå¯ä»¥éå¿æ欲ç使ç¨å¯¹è±¡ç¼ç¨æç»´æ¥æ纵æ°æ®åºã
Hibernateå¯ä»¥åºç¨å¨ä»»ä½ä½¿ç¨JDBCçåºåã
Hibernate ä½¿ç¨ Java åå°æºå¶ èä¸æ¯åèç å¢å¼ºç¨åºæ¥å®ç°éææ§ã
Hibernate çæ§è½é常好ï¼å 为å®æ¯ä¸ªè½»é级æ¡æ¶ã æ å°ççµæ´»æ§å¾åºè²ã
å®æ¯æåç§å ³ç³»æ°æ®åºï¼ä»ä¸å¯¹ä¸å°å¤å¯¹å¤çåç§å¤æå ³ç³»ã 缺ç¹ï¼å®éå¶æ¨æ使ç¨ç对象模åã(ä¾å¦ï¼ä¸ä¸ªæä¹ æ§ç±»ä¸è½æ å°å°å¤ä¸ªè¡¨)ã
让æååä¸æ¬¡æå·²ç»ån次çæ¡æ¶ç»æï¼
ä¼ ç»çæ¶æï¼ 1) Session Bean Entity Bean DB
为äºè§£å³æ§è½éç¢çæ¿ä»£æ¶æï¼ 2) Session Bean DAO JDBC DB
使ç¨Hibernateæ¥æé«ä¸é¢æ¶æçå¼åæççæ¶æï¼ 3) Session Bean DAO Hibernate DB
å°±ä¸é¢3个æ¶ææ¥åæï¼ 1 ãå åæ¶èï¼éç¨JDBCçæ¶æ2æ çæ¯æçå åçï¼Hibernateçæ¶æ次ä¹ï¼EBçæ¶æ1æå·®ã 2 ãè¿è¡æçï¼å¦æJDBCç代ç åçé常ä¼åï¼é£ä¹JDBCæ¶æè¿è¡æçæé«ï¼ä½æ¯å®é 项ç®ä¸ï¼è¿ä¸ç¹å ä¹åä¸å°ï¼è¿éè¦ç¨åºåé常精éJDBCï¼è¿ç¨Batchè¯å¥ï¼è°æ´PreapredStatementçBatch SizeåFetch Sizeçåæ°ï¼ä»¥åå¨å¿ è¦çæ åµä¸éç¨ç»æécacheççãèä¸è¬æ åµä¸ç¨åºåæ¯åä¸å°è¿ä¸ç¹çãå æ¤Hibernateæ¶æ表ç°åºæå¿«çè¿è¡æçãEBçæ¶ææçä¼å·®çå¾è¿ã 3 ãå¼åæçï¼å¨æJBuilderçæ¯æä¸ä»¥åç®åç项ç®ï¼EBæ¶æå¼åæçæé«ï¼JDBC次ä¹ï¼Hibernateæå·®ãä½æ¯å¨å¤§ç项ç®ï¼ç¹å«æ¯æä¹ å±å ³ç³»æ å°å¾å¤æçæ åµä¸ï¼Hibernateæçé«çæ人ï¼JDBC次ä¹ï¼èEBæ¶æå¾å¯è½ä¼å¤±è´¥ã
如何快速读懂项目源码javaWeb
一:学会如何读一个JavaWeb项目源代码 步骤:表结构->web.xml->mvc->db->spring
ioc->log-> 代码
1、先了解项目数据库的源码表结构,这个方面是源码div轮播效果源码最容易忘记 的,有时候我们只顾着看每一个方法是源码怎么进行的,却没
有去了解数据库之间的源码主外键关联。其实如果先了解数据 库表结构,源码再去看一个方法的源码实现会更加容易。
2、源码然后需要过一遍web.xml,源码知道项目中用到了什么拦
截器,源码监听器,源码过滤器,源码拥有哪些配置文件。如果是拦截 器,一般负责过滤请求,进行AOP 等;如果是安卓qq源码、监 可能是定时任务,初始化任务;配置文件有如使用了 spring
后的读取mvc 相关,db 相关,service 相关,aop 相关的文件。
3、查看拦截器,监听器代码,知道拦截了什么请求,这
个类完成了怎样的php+游戏源码工作。有的人就是因为缺少了这一步, 自己写了一个action,配置文件也没有写错,但是却怎么
调试也无法进入这个action,直到别人告诉他,请求被拦
4、接下来,看配置文件,首先一定是web插件+源码下载mvc相关的,如 springmvc
中,要请求哪些请求是静态资源,使用了哪些 view 策略,controller 注解放在哪个包下等。 然后是db 相关配置文件,看使用了什么数据库,使用了
什么orm框架,是否开启了二级缓存,使用哪种产品作 为二级缓存,白鹭引擎+修改源码事务管理的处理,需要扫描的实体类放在什 么位置。最后是spring 核心的ioc
功能相关的配置文件, 知道接口与具体类的注入大致是怎样的。当然还有一些如 apectj 置文件,也是在这个步骤中完成
5、log
相关文件,日志的各个级别是如何处理的,在哪些 地方使用了log 记录日志
6、从上面几点后知道了整个开源项目的整体框架,阅读 每个方法就不再那么难了。
7、当然如果有项目配套的开发文档也是要阅读的。
Java Web中“apper,service,controller,model”分别是什么作用?
java web中mapper是对象持久化映射层,一般会继承ibatis或者mybatis servive是一些业务逻辑的处理层,controller是控制层,相当于mvc的c层,model是数据模型层相当于mvc的m层。Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。
不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。但在 J2SE 1.4.2 发布后,Java 的执行速度有了大幅提升。
与传统程序不同,Sun 公司在推出 Java 之际就将其作为一种开放的技术。全球数以万计的 Java 开发公司被要求所设计的 Java 软件必须相互兼容。
“Java 语言靠群体的力量而非公司的力量”是 Sun 公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。
北京平谷:查获17万只过期口罩
前美國海軍陸戰隊成員:美國隱瞞在俄烏衝突中的軍事人員投入
民法典时代的消费者权益保护法治保障
國防部:中方將參加「安全紐帶
告别格子间,去干体力活:一场并不完美的职场自救试验
國防部:中方將參加「安全紐帶