1.如何快速读懂项目源码javaWeb
2.javawebç¨ä»ä¹ç¼è¯å¨(javawebç¨ä»ä¹è½¯ä»¶ç¼å)
3.javaweb的开b开源码是是开放的吗?
4.java webå¼å ä¼çè¿
如何快速读懂项目源码javaWeb
一:学会如何读一个JavaWeb项目源代码 步骤:表结构->web.xml->mvc->db->spring
ioc->log-> 代码
1、先了解项目数据库的发框发框表结构,这个方面是架源架最容易忘记 的,有时候我们只顾着看每一个方法是开b开怎么进行的,却没
有去了解数据库之间的发框发框主外键关联。其实如果先了解数据 库表结构,架源架nio源码 epoll再去看一个方法的开b开实现会更加容易。
2、发框发框然后需要过一遍web.xml,架源架知道项目中用到了什么拦
截器,开b开监听器,发框发框过滤器,架源架拥有哪些配置文件。开b开如果是发框发框拦截 器,一般负责过滤请求,架源架进行AOP 等;如果是监 可能是定时任务,初始化任务;配置文件有如使用了 spring
后的fla鼠标源码读取mvc 相关,db 相关,service 相关,aop 相关的文件。
3、查看拦截器,监听器代码,知道拦截了什么请求,这
个类完成了怎样的趋势 叠加 源码工作。有的人就是因为缺少了这一步, 自己写了一个action,配置文件也没有写错,但是却怎么
调试也无法进入这个action,直到别人告诉他,请求被拦
4、接下来,看配置文件,kx 3552源码首先一定是mvc相关的,如 springmvc
中,要请求哪些请求是静态资源,使用了哪些 view 策略,controller 注解放在哪个包下等。 然后是db 相关配置文件,看使用了什么数据库,使用了
什么orm框架,分析软件源码是否开启了二级缓存,使用哪种产品作 为二级缓存,事务管理的处理,需要扫描的实体类放在什 么位置。最后是spring 核心的ioc
功能相关的配置文件, 知道接口与具体类的注入大致是怎样的。当然还有一些如 apectj 置文件,也是在这个步骤中完成
5、log
相关文件,日志的各个级别是如何处理的,在哪些 地方使用了log 记录日志
6、从上面几点后知道了整个开源项目的整体框架,阅读 每个方法就不再那么难了。
7、当然如果有项目配套的开发文档也是要阅读的。
javawebç¨ä»ä¹ç¼è¯å¨(javawebç¨ä»ä¹è½¯ä»¶ç¼å)
javawebå¯ä»¥ç¨ä»ä¹å¼å
1ãå¹³å°ï¼ä¸è¬çjavawebå¼åé½ä½¿ç¨myeclipseï¼å¤ç¨ï¼ææ¡åºæ¬çè°å¼ãæéï¼ä¸»è¦å¨å®é å¼åä¸ç§¯ç´¯å·¥å ·ä½¿ç¨çç»éªï¼ä»¥åæéè½åã
2ãJAVAæ¯ä¸ç§å¼åè¯è¨ï¼å¯ä»¥ç¨äºå¼åWEBåºç¨è½¯ä»¶ï¼ä½ç°å¨å¼åWEB软件æ´å¤æ¯ç¨å¿«éå¼åæ¡æ¶ï¼è¿æ ·å¯ä»¥å®ç°å¿«éå¼åï¼èä¸éä½äºå¼åé¾åº¦ï¼æ¯å¦å¤©çºµæºè½å¼åå¹³å°ï¼åºæ¬å®ç°äºæ 代ç å¼åï¼ä»»ä½äººé½å¯ä»¥å¼å软件äºã
3ãï¼å端å¼å人åï¼ç²¾éJSï¼è½çç»åºç¨JQueryï¼æCSSï¼è½çç»è¿ç¨è¿äºç¥è¯ï¼è¿è¡äº¤äºææçå¼åã2ï¼å端å¼å人åï¼ä¼åJava代ç ï¼ä¼åSQLè¯å¥ï¼è½åç®åçæ°æ®åºè®¾è®¡ï¼ä¼SpringåiBatisï¼æä¸äºè®¾è®¡æ¨¡å¼çã
4ãSunJavaStudioæ¯Sunå ¬å¸ææ°åå¸çåç¨å ¨åè½JavaIDEï¼æ¯æSolarisãLinuxåWindowså¹³å°ï¼éäºå建åé¨ç½²2å±JavaWebåºç¨ånå±J2EEåºç¨çä¼ä¸å¼å人å使ç¨ãNetBeansæ¯ä¸ç第ä¸æ¬¾æ¯æåæ°åJavaå¼åçå¼æ¾æºç IDEã
5ãNetBeansï¼NetBeansæ¯å¼æºè½¯ä»¶å¼åéæç¯å¢ï¼æ¯ä¸ä¸ªå¼æ¾æ¡æ¶ï¼å¯æ©å±çå¼åå¹³å°ï¼å¯ä»¥ç¨äºJavaãC/C++ï¼PHPçè¯è¨çå¼åï¼æ¬èº«æ¯ä¸ä¸ªå¼åå¹³å°ï¼å¯ä»¥éè¿æ©å±æ件æ¥æ©å±åè½ãå¨javaå¼åæ¹é¢ç±»ä¼¼äºå两个ï¼ç¨èµ·æ¥ä¸è¬ã
6ãçç»ç使ç¨Javaè¯è¨è¿è¡é¢å对象ç¨åºè®¾è®¡ï¼æè¯å¥½çç¼ç¨ä¹ æ¯ï¼çæ常ç¨çJavaAPIï¼å æ¬***æ¡æ¶ãå¤çº¿ç¨ï¼å¹¶åç¼ç¨ï¼ãI/Oï¼NIOï¼ãSocketãJDBCãXMLãåå°çã
åJavaWebç¨åº,ç¨ä»ä¹å¼åå·¥å ·?Javawebä¼ä½¿ç¨å°çå¼åå·¥å ·å软件æå¾å¤ï¼ä¸é¢ä¸ºæ¨ä»ç»å¸¸è§çå ç§ï¼Tomcatï¼ä½ä¸ºjavawebå¼åçç¨åºåï¼ä¸ä¸ªè½»é级çwebæå¡å¨å¿ ä¸å¯å°ï¼tomcatå¨å®é å¼åä¸ä½¿ç¨çè¾ä¸ºå¹¿æ³ï¼å®ä»¥è½»é级ï¼åè½å ¨è称ã
JDK(JavaDevelopmentKit)Javaå¼åå·¥å ·éSUNçJavaä¸ä» æäºä¸ä¸ªä¸°å¯çè¯è¨åè¿è¡ç¯å¢ï¼èä¸è¿æäºä¸ä¸ªå è´¹çJavaå¼åå·¥å ·é(JDK)ãå¼å人ååæç»ç¨æ·å¯ä»¥å©ç¨è¿ä¸ªå·¥å ·æ¥å¼åjavaç¨åºã
BootstrapBootstrapæ¯å¿«éå¼åWebåºç¨ç¨åºçåç«¯å·¥å ·å ãå®æ¯ä¸ä¸ªCSSåHTMLçéåï¼å®ä½¿ç¨äºæ°çæµè§å¨ææ¯ï¼ç»ä½ çWebå¼åæä¾äºæ¶å°ççå¼ï¼è¡¨åï¼buttonsï¼è¡¨æ ¼ï¼ç½æ ¼ç³»ç»ççã
请é®javaç¼åç¨åºé¤äºç¨eclipse,è¿å¯ä»¥ç¨ä»ä¹?æ主è¦æ¯æ³åwebå端ç...
NetBeansæ¯å¼æ¾æºç çJavaéæå¼åç¯å¢(IDE)ï¼éç¨äºåç§å®¢æ·æºåWebåºç¨ãSunJavaStudioæ¯Sunå ¬å¸ææ°åå¸çåç¨å ¨åè½JavaIDEï¼æ¯æSolarisãLinuxåWindowså¹³å°ï¼éäºå建åé¨ç½²2å±JavaWebåºç¨ånå±J2EEåºç¨çä¼ä¸å¼å人å使ç¨ã
ç¨myeclipseæè eclipseï¼è®°äºæ¬é½å¯ä»¥ãåå¦è çè¯ä¸å»ºè®®ä¸æ¥å°±ç¨IDEå¼åå·¥å ·æ¯å¦è¯´EclipseãMyEclipseãIntelliJIDEAãnetbeanãä½æ¯ä¹å¯ä»¥ä½¿ç¨è¿äºï¼ä¸å»ºè®®çåå ä¸ä¾¿äºä½ äºè§£JavaAPIï¼åç¸å ³çç¼è¯åçï¼ç¼è¯è¿ç¨ä¹ç±»çã
javaç¯å¢æ³è¦ä»äºJavaå¼åï¼é£ä¹Javaè¿è¡ç¯å¢è¯å®æ¯ä½ é¦å éè¦å®è£ ç软件ï¼åå¦ä»¬å¯ä»¥èªè¡å»ç¾åº¦ä¸æç´¢Javaè¿å ¥å°å®ç½ä¸è½½å³å¯ï¼Javaç¯å¢çå®è£ åé ç½®æç¨ä¹åæè¿ä»ç»ï¼åå¦ä»¬ç¹å»ç¸å ³é 读å³å¯ã
Eclipse-IBMç©åºæ¥ç»å¼æºç¤¾åºçIDEï¼å ¶æ¬èº«å°±æ¯ä½¿ç¨Javaå¼åçã\x0d\MyEclipse-æEclipseå è£ äºä¸ä¸ï¼å äºJ2EEä¼ä¸å¼åç许å¤åè½å¼ºå¤§çæ件ã
netbeans.è¿ä¸ªè½¯ä»¶æç¨äºå¥½å¤å¹´äºï¼æºå¥½ç¨çï¼ç±å ¶å¨EJBå¼åæ¶ã
JAVAç¼ç¨å¸¸ç¨ç软件ï¼Eclipseï¼Eclipseæ¯ä¸ä¸ªå¼æ¾æºä»£ç çãåºäºJavaçå¯æ©å±å¼åå¹³å°ãå°±å ¶æ¬èº«èè¨ï¼å®åªæ¯ä¸ä¸ªæ¡æ¶åä¸ç»æå¡ï¼ç¨äºéè¿æ件ç»ä»¶æ建å¼åç¯å¢ã
javaç¨åºæ¯ç¨ä»ä¹è½¯ä»¶ç¼åçå?1ãJAVAç¼ç¨å¸¸ç¨ç软件ï¼IntellijIDEAIntellijIDEAæ¯å½åJavaå¼å人åå¼å£°å¾é«çä¸æ¬¾IDEï¼å ·æç¾è§ï¼é«æçä¼å¤ç¹ç¹ï¼å°ç¼è¿æ¯é常å欢çï¼æ以以å¾æé½æ¯å¨èªå·±çµèå®è£ è¿æ¬¾è½¯ä»¶çã
2ãæ°æ§ç¼ç¨ç°å¨ç¨çå¤çè¿æ¯MastercamãUGãCimtronãPowerMILLç软件ãå½å ä¹æCaxaï¼åèªç å¶ï¼ãNPUï¼è¥¿åå·¥ä¸å¤§å¦ç å¶ï¼çåè½ä¹å¾å¼ºå¤§ï¼éå大åä¸ç¨å·¥ä»¶çå å·¥ç¼ç¨ã
3ãç®ç§°IDEAï¼åæ ·æ¯ä¸æ¬¾å¾å¸¸ç¨çjava软件ãè½ç¶æ¯ä»è´¹è½¯ä»¶ï¼ä¸è¿javaçè¯è¨æ¯å è´¹çï¼ä¸è±é±å°±å¯ä»¥ä½¿ç¨ãå®çç¹ç¹å¨äºç¾è§ãé«æï¼å·ç§°æ¯âææºæ §çJavaideâï¼è½æä¾å¾å¼ºçåé æ§ã
4ãIntelliJIDEAç°å¨å¤§é¨åjavaå¼åè åºè¯¥é½ç¨çæ¯è¿ä¸ªãIntelliJIDEAæ两个çæ¬ï¼ä¸ä¸ªæ¯å è´¹ç社åºçï¼å¦å¤ä¸ä¸ªæ¯ä»è´¹çãä»è´¹çæ¥æçåè½æ´å¤ãç±JetBrainså¼åã
5ãIDEAæ¯Javaè¯è¨å¼åçéæç¯å¢ï¼IDEAå¨ä¸çè¢«å ¬è®¤ä¸ºæ好çJavaå¼åå·¥å ·ä¹ä¸ï¼ä½æ¯æ¶è´¹ç软件ï¼å¯¹åºæ们è¿äºç©·å°åæ¥è¯´ï¼æ¯ä¸ªåæ¶æ¯ãæææ们æä¸å½éæ³ã
6ãç¨myeclipseæè eclipseï¼è®°äºæ¬é½å¯ä»¥ãåå¦è çè¯ä¸å»ºè®®ä¸æ¥å°±ç¨IDEå¼åå·¥å ·æ¯å¦è¯´EclipseãMyEclipseãIntelliJIDEAãnetbeanãä½æ¯ä¹å¯ä»¥ä½¿ç¨è¿äºï¼ä¸å»ºè®®çåå ä¸ä¾¿äºä½ äºè§£JavaAPIï¼åç¸å ³çç¼è¯åçï¼ç¼è¯è¿ç¨ä¹ç±»çã
javaçç¼è¯å¨æ¯ä»ä¹æ¨èJcreatorï¼å®å¯¹äºåå¦è æ¯ä¸ªå¾å¥½çå¼åå·¥å ·ï¼åå°è¿è¡ä¹å¾å¿«ãå®è¦ç¨å°JDKï¼å¤§çIDEæJBuilderï¼netbeanï¼sunstdioï¼eclipseãç¼è¯å¨å°±æ¯å°ä¸ç§è¯è¨(é常为é«çº§è¯è¨)ç¿»è¯ä¸ºå¦ä¸ç§è¯è¨(é常为ä½çº§è¯è¨)çç¨åºã
JDKæä¾çç¼è¯å¨æ¯javacï¼å®æ¯Javaç¼è¯å¨çæ åå®ç°ãå®å¯ä»¥å°Javaæºä»£ç ç¼è¯æJavaåèç ï¼è¿äºåèç å¯ä»¥å¨Javaèææºï¼JVMï¼ä¸è¿è¡ãJavacæ¯ä¸ä¸ªå½ä»¤è¡å·¥å ·ï¼å¯ä»¥ä½¿ç¨å®æ¥ç¼è¯Javaæºä»£ç ã
javacæ¯Javaç¼è¯å¨ï¼è´è´£å°Javaæºä»£ç 转æ¢æåèç æ件ãjavacå¯ä»¥éå¼ç¼è¯ä¸äºæ²¡æå¨å½ä»¤è¡ä¸æåçæºæ件ãç¨-verboseé项å¯è·è¸ªèªå¨ç¼è¯ãå½ç¼è¯æºæ件æ¶ï¼ç¼è¯å¨å¸¸å¸¸éè¦å®è¿æ²¡æè¯å«åºçç±»åçæå ³ä¿¡æ¯ã
ä¸eclipse/myeclipseå½å¹´å¦ä¹ javaï¼æå æ¥è§¦å°çå°±æ¯eclipseãåäºä¸ªå»ï¼å½æ¶æè§eclipse好çåï¼æ好å¤å è¿çåè½ï¼å¯ä»¥æ¹ä¾¿å°è¿è¡å 管çã
javaweb的源码是是开放的吗?
Java Web 是一种使用 Java 技术构建 Web 应用程序的框架,它的源代码并不是完全开放的。
Java Web 的源代码由 Oracle 公司维护和开发,并且 Oracle 公司拥有 Java 平台的版权和知识产权。因此,Java Web 的源代码并不是开源的,也不向公众开放。
然而,Java Web 的规范是由一个开放的、跨组织的 JCP(Java Community Process)社区进行开发和维护的。这个社区包括了来自不同公司和组织的 Java 开发者,他们共同制定和改进 Java Web 的规范。这些规范定义了 Java Web 应用程序的架构、API 和行为,并且被所有遵循这些规范的 Java Web 框架所遵循。
因此,虽然 Java Web 的源代码不是开放的,但是它的规范和标准是由一个开放的社区进行开发和维护的。
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æ¶æå¾å¯è½ä¼å¤±è´¥ã