第1章JavaWeb技術(shù)基礎(chǔ)知識課件_第1頁
第1章JavaWeb技術(shù)基礎(chǔ)知識課件_第2頁
第1章JavaWeb技術(shù)基礎(chǔ)知識課件_第3頁
第1章JavaWeb技術(shù)基礎(chǔ)知識課件_第4頁
第1章JavaWeb技術(shù)基礎(chǔ)知識課件_第5頁
已閱讀5頁,還剩89頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

JavaWeb技術(shù)整合應(yīng)用與項(xiàng)目實(shí)戰(zhàn)

--JSP+Servlet+Struts2+Hibernate+Spring3

張志鋒朱顥東等編著

清華大學(xué)出版社6/7/20231

|海有|壁無|一份耕耘。

|納容|立欲|一份收獲!|百乃|千則|豈能事事如意,但求無愧于心!|川大|仞剛|把微笑留給世界,讓世界因你微笑!6/7/20232第1章JavaWeb技術(shù)基礎(chǔ)知識

1.1Web基礎(chǔ)知識

1.1.1Web技術(shù)的由來與發(fā)展

1.1.2Web動態(tài)網(wǎng)頁技術(shù)1.2JSP基礎(chǔ)知識

1.2.1JSP的工作原理

1.2.2JSP的兩種體系結(jié)構(gòu)

1.2.3JSP開發(fā)JavaWeb站點(diǎn)的主要方式1.3Struts2基礎(chǔ)知識

1.3.1Struts2的由來與發(fā)展

1.3.2Struts2的工作原理1.4Hibernate基礎(chǔ)知識

1.4.1Hibernate的由來與發(fā)展

1.4.2Hibernate的工作原理1.5Spring3基礎(chǔ)知識

1.5.1Spring3的由來與發(fā)展

1.5.2Spring3框架的體系結(jié)構(gòu)6/7/20233第2章JSP技術(shù)

2.1HTML頁面的基本構(gòu)成

2.1.1使用NetBeans7開發(fā)HTML頁面

2.1.2使用MyEclipse10開發(fā)HTML頁面2.2HTML常用標(biāo)簽

2.2.1列表標(biāo)簽

2.2.2多媒體和超鏈接標(biāo)簽

2.2.3表格標(biāo)簽

2.2.4表單標(biāo)簽

2.2.5框架標(biāo)簽2.3CSS基礎(chǔ)知識

2.3.1CSS樣式表定義

2.3.2HTML中加入CSS的方法

2.3.3CSS的優(yōu)先級

2.3.4CSS基本屬性2.4JSP頁面的基本結(jié)構(gòu)2.5JSP三種常用注釋

2.5.1隱藏注釋

2.5.2HTML注釋

2.5.3Java注釋6/7/202342.6JSP常用腳本元素

2.6.1變量和方法的聲明

2.6.2表達(dá)式和腳本2.7JSP常用指令

2.7.1page指令

2.7.2include指令

2.7.3taglib指令2.8JSP常用動作

2.8.1<jsp:param>動作

2.8.2<jsp:include>動作

2.8.3<jsp:useBean>動作

2.8.4<jsp:setProperty>動作

2.8.5<jsp:getProperty>動作

2.8.6<jsp:forward>動作2.9JSP常用內(nèi)置對象

2.9.1out對象

2.9.2request對象

2.9.3response對象

2.9.4session對象

2.9.5pageContext對象

2.9.6exception對象

2.9.7application對象6/7/20235第3章JavaBean技術(shù)

3.1JavaBean基礎(chǔ)知識3.2編寫和使用JavaBean

3.2.1編寫JavaBean組件

3.2.2在JSP頁面中使用JavaBean3.3JavaBean的作用域3.4JavaBean應(yīng)用實(shí)例

3.4.1使用JavaBean訪問數(shù)據(jù)庫

3.4.2使用JavaBean實(shí)現(xiàn)猜數(shù)游戲

3.4.3使用JavaBean實(shí)現(xiàn)購物系統(tǒng)

6/7/20236第4章JDBC技術(shù)4.1JDBC基礎(chǔ)知識4.2通過JDBC-ODBC橋訪問數(shù)據(jù)庫

4.2.1通過橋訪問Access

4.2.2通過橋訪問Excel

4.2.3通過橋訪問MicrosoftSQLServer20084.3通過JDBC驅(qū)動訪問數(shù)據(jù)庫

4.3.1訪問MySQL5.5數(shù)據(jù)庫

4.3.2訪問MicrosoftSQLServer2000數(shù)據(jù)庫

4.3.3訪問MicrosoftSQLServer2008數(shù)據(jù)庫4.4查詢數(shù)據(jù)庫 4.5更新數(shù)據(jù)庫(增、刪、改)4.6JSP在數(shù)據(jù)庫應(yīng)用中的相關(guān)問題

4.6.1JSP的分頁技術(shù)

4.6.2漢字處理4.7學(xué)生信息管理系統(tǒng)應(yīng)用實(shí)例

6/7/20237第5章企業(yè)信息管理系統(tǒng)

5.1項(xiàng)目需求說明5.2項(xiàng)目系統(tǒng)分析5.3項(xiàng)目數(shù)據(jù)庫設(shè)計(jì)5.4項(xiàng)目實(shí)現(xiàn)

5.4.1項(xiàng)目文件結(jié)構(gòu)

5.4.2登錄功能的實(shí)現(xiàn)

5.4.3系統(tǒng)主頁面功能的實(shí)現(xiàn)

5.4.4客戶管理功能的實(shí)現(xiàn)

5.4.5合同管理功能的實(shí)現(xiàn)

5.4.6售后管理功能的實(shí)現(xiàn)

5.4.7產(chǎn)品管理功能的實(shí)現(xiàn)

5.4.8員工管理功能的實(shí)現(xiàn)

6/7/20238第6章JavaServlet技術(shù)

6.1Servlet基礎(chǔ)知識

6.1.1什么是Servlet

6.1.2Servlet生命周期

6.1.3Servlet的技術(shù)特點(diǎn)

6.1.4Servlet與JSP的區(qū)別

6.1.5Servlet在JavaWeb項(xiàng)目中的作用

6.1.6Servlet部署

6.1.7開發(fā)一個(gè)簡單的Servlet6.2JSP與Servlet常見用法

6.2.1通過Servlet獲取表單中的數(shù)據(jù)

6.2.2重定向與轉(zhuǎn)發(fā)及其應(yīng)用實(shí)例6.3基于JSP+Servlet留言系統(tǒng)6/7/20239第7章基于MVC設(shè)計(jì)模式的個(gè)人信息管理系統(tǒng)7.1MVC設(shè)計(jì)模式基礎(chǔ)知識

7.1.1什么是MVC設(shè)計(jì)模式

7.1.2MVC設(shè)計(jì)模式的工作原理7.2項(xiàng)目需求說明7.3項(xiàng)目系統(tǒng)分析7.4項(xiàng)目數(shù)據(jù)庫設(shè)計(jì)7.5項(xiàng)目實(shí)現(xiàn)

7.5.1項(xiàng)目文件結(jié)構(gòu)

7.5.2登錄和注冊功能的實(shí)現(xiàn)

7.5.3系統(tǒng)主頁面功能的實(shí)現(xiàn)

7.5.4個(gè)人信息管理功能的實(shí)現(xiàn)

7.5.5通訊錄管理功能的實(shí)現(xiàn)

7.5.6日程安排管理功能的實(shí)現(xiàn)

7.5.7個(gè)人文件管理功能的實(shí)現(xiàn)6/7/202310第8章Struts2框架技術(shù)入門8.1Struts2軟件包

8.1.1Struts2軟件包的下載

8.1.2Struts2軟件包介紹8.2Struts2的配置

8.2.1在NetBeans7中安裝Struts2插件

8.2.2使用NetBeans7新建Struts2項(xiàng)目

8.2.3在NetBeans7中配置Struts2

8.2.4在MyEclipse10中配置Struts28.3Struts2的核心組件入門

8.3.1Struts2的控制器組件

8.3.2Struts2的模型組件

8.3.3Struts2的視圖組件8.4基于Struts2的登錄系統(tǒng)

8.4.1使用NetBeans7開發(fā)項(xiàng)目

8.4.2使用MyEclipse10開發(fā)項(xiàng)目6/7/202311第9章Struts2核心組件詳解9.1Struts2的配置文件struts.xml

9.1.1struts.xml配置文件的結(jié)構(gòu)

9.1.2Bean配置

9.1.3常量配置

9.1.4包含配置

9.1.5包配置

9.1.6命名空間配置

9.1.7Action配置

9.1.8結(jié)果配置

9.1.9攔截器配置6/7/2023129.2Struts2的核心控制器FilterDispatcher9.3Struts2的業(yè)務(wù)控制器Action 9.3.1Action接口和ActionSupport類

9.3.2Action實(shí)現(xiàn)類

9.3.3Action訪問ActionContext 9.3.4Action直接訪問Servlet 9.3.5Action中的動態(tài)方法調(diào)用9.4Struts2的OGNL表達(dá)式

9.4.1Struts2的OGNL表達(dá)式

9.4.2Struts2的OGNL集合6/7/202313第10章Struts2的標(biāo)簽庫10.1Struts2的標(biāo)簽庫概述10.2Struts2的表單標(biāo)簽

10.2.1<s:checkbox>標(biāo)簽

10.2.2<s:checkboxlist>標(biāo)簽

10.2.3<s:combobox>標(biāo)簽

10.2.4<s:doubleselect>標(biāo)簽

10.2.5<s:file>標(biāo)簽

10.2.6<s:select>標(biāo)簽

10.2.7<s:radio>標(biāo)簽

10.2.8<s:textarea>標(biāo)簽

10.2.9<s:token>標(biāo)簽

10.2.10<s:optiontransferselect>標(biāo)簽

10.2.11<s:updownselect>標(biāo)簽10.3Struts2的非表單標(biāo)簽

10.3.1<s:a>標(biāo)簽

10.3.2<s:actionerror>和<s:actionmessage>標(biāo)簽

10.3.3<s:component>標(biāo)簽6/7/20231410.4Struts2的數(shù)據(jù)標(biāo)簽

10.4.1<s:action>標(biāo)簽

10.4.2<s:bean>標(biāo)簽

10.4.3<s:include>標(biāo)簽

10.4.4<s:param>標(biāo)簽

10.4.5<s:set>標(biāo)簽

10.4.6<s:property>標(biāo)簽

10.4.7<s:url>標(biāo)簽

10.4.8<s:date>標(biāo)簽10.5Struts2的控制標(biāo)簽

10.5.1<s:if>標(biāo)簽、<s:elseif>標(biāo)簽和<s:else>標(biāo)簽

10.5.2<s:iterator>標(biāo)簽

10.5.3<s:append>標(biāo)簽

10.5.4<s:merge>標(biāo)簽

10.5.5<s:generator>標(biāo)簽

10.5.6<s:subset>標(biāo)簽

10.5.7<s:sort>標(biāo)簽6/7/20231510.6Struts2的Ajax標(biāo)簽

10.6.1ajax主題

10.6.2<s:div>標(biāo)簽

10.6.3<s:a>標(biāo)簽

10.6.4<s:submit>標(biāo)簽

10.6.5<s:tabbedPanel>標(biāo)簽

10.6.6<s:autocompleter>標(biāo)簽6/7/202316第11章Struts2國際化與文件上傳下載11.1Struts2的國際化

11.1.1Struts2實(shí)現(xiàn)國際化的流程

11.1.2Struts2國際化應(yīng)用實(shí)例11.2Struts2的文件上傳和下載

11.2.1文件上傳

11.2.2文件下載6/7/202317第12章Struts2的攔截器與輸入校驗(yàn)12.1Struts2的攔截器

12.1.1Struts2攔截器的基礎(chǔ)知識

12.1.2Struts2攔截器實(shí)現(xiàn)類

12.1.3Struts2攔截器應(yīng)用實(shí)例12.2Struts2的輸入校驗(yàn)

12.2.1Struts2輸入驗(yàn)證的基礎(chǔ)知識

12.2.2Struts2的手工驗(yàn)證

12.2.3Struts2內(nèi)置校驗(yàn)器的使用

12.2.4Struts2內(nèi)置校驗(yàn)器應(yīng)用實(shí)例6/7/202318第13章基于Struts2的個(gè)人信息管理系統(tǒng)13.1項(xiàng)目需求說明13.2項(xiàng)目系統(tǒng)分析13.3項(xiàng)目數(shù)據(jù)庫設(shè)計(jì)13.4項(xiàng)目實(shí)現(xiàn)

13.4.1項(xiàng)目文件結(jié)構(gòu)

13.4.2用戶登錄和注冊功能的實(shí)現(xiàn)

13.4.3系統(tǒng)主頁面功能的實(shí)現(xiàn)

13.4.4個(gè)人信息管理功能實(shí)現(xiàn)

13.4.5通訊錄管理功能實(shí)現(xiàn)

13.4.6日程安排管理功能實(shí)現(xiàn)

13.4.7個(gè)人文件管理功能實(shí)現(xiàn)6/7/202319第14章Hibernate框架技術(shù)入門14.1Hibernate軟件包

14.1.1Hibernate軟件包下載

14.1.2Hibernate軟件包介紹14.2Hibernate的配置14.3Hibernate的核心組件入門14.4基于Struts2+Hibernate的登錄和注冊系統(tǒng)

14.4.1項(xiàng)目介紹

14.4.2在web.xml中配置核心控制器FilterDispatcher 14.4.3編寫視圖組件(JSP頁面)

14.4.4編寫業(yè)務(wù)控制器Action 14.4.5修改struts.xml配置Action 14.4.6Hibernate的配置文件

14.4.7加載Hibernate配置文件的類(JavaBean)

14.4.8PO對象以及對應(yīng)的映射文件

14.4.9完成登錄和注冊功能業(yè)務(wù)功能的JavaBean 14.4.10項(xiàng)目部署和運(yùn)行6/7/202320第15章Hibernate核心組件詳解15.1Hibernate的配置文件

15.1.1hibernate.cfg.xml 15.1.2perties15.2Hibernate的PO對象

15.2.1Hibernate的PO對象基礎(chǔ)知識

15.2.2Hibernate的PO對象狀態(tài)15.3Hibernate的映射文件15.4Hibernate的Configuration類15.5Hibernate的SessionFactory接口15.6Hibernate的Session接口

15.6.1Session接口的基礎(chǔ)知識

15.6.2通過方法獲取持久化對象(PO)

15.6.3操作持久化對象(PO)的常用方法6/7/20232115.7Hibernate的Transaction接口15.8Hibernate的Query接口

15.8.1Query接口的基本知識

15.8.2Query接口的常用方法15.9基于Struts2+Hibernate的學(xué)生信息管理系統(tǒng)

15.9.1項(xiàng)目介紹、主頁面以及查看學(xué)生信息功能的實(shí)現(xiàn)

15.9.2添加學(xué)生信息功能的實(shí)現(xiàn)

15.9.3修改學(xué)生信息功能的實(shí)現(xiàn)

15.9.4刪除學(xué)生信息功能的實(shí)現(xiàn)6/7/202322第16章Hibernate的關(guān)聯(lián)關(guān)系16.1一對一關(guān)聯(lián)關(guān)系

16.1.1主鍵關(guān)聯(lián)

16.1.2外鍵關(guān)聯(lián)

16.1.3一對一關(guān)聯(lián)關(guān)系的應(yīng)用實(shí)例16.2一對多關(guān)聯(lián)關(guān)系

16.2.1單向關(guān)聯(lián)

16.2.2雙向關(guān)聯(lián)

16.2.3一對多關(guān)聯(lián)關(guān)系的應(yīng)用實(shí)例16.3多對多關(guān)聯(lián)關(guān)系6/7/202323第17章Hibernate的其它常用功能17.1Hibernate數(shù)據(jù)查詢

17.1.1HibernateQueryLanguage 17.1.2CriteriaQuery方式

17.1.3NativeSQL查詢 17.2Hibernate的事務(wù)管理

17.2.1事務(wù)的特性

17.2.2事務(wù)隔離

17.2.3在Hibernate配置文件中設(shè)置隔離級別

17.2.4在Hibernate中使用JDBC事務(wù)

17.2.5在Hibernate中使用JTA事務(wù)17.3Hibernate的Cache管理

17.3.1一級Cache 17.3.2二級Cache6/7/202324第18章基于Struts2+Hibernate的項(xiàng)目系統(tǒng) 18.1基于Struts2+Hibernate的教務(wù)管理系統(tǒng)

18.1.1項(xiàng)目需求分析與設(shè)計(jì)

18.1.2項(xiàng)目數(shù)據(jù)庫設(shè)計(jì)

18.1.3項(xiàng)目實(shí)現(xiàn)18.2基于Struts2+Hibernate的考勤系統(tǒng)

18.2.1系統(tǒng)需求分析與設(shè)計(jì)

18.2.2項(xiàng)目數(shù)據(jù)庫設(shè)計(jì)

18.2.3項(xiàng)目實(shí)現(xiàn)6/7/202325第19章Spring3框架技術(shù)入門19.1Spring3軟件包

19.1.1Spring3軟件包下載

19.1.2Spring3軟件包的介紹19.2Spring3的配置19.3Spring3IoC的原理和主要組件

19.3.1IoC的基礎(chǔ)知識以及原理

19.3.2IoC的主要組件

19.3.3IoC的應(yīng)用實(shí)例

19.3.4注入的兩種方式6/7/20232619.4基于Struts2+Hibernate+Spring3的登錄系統(tǒng)

19.4.1項(xiàng)目介紹

19.4.2在web.xml中配置Struts2和Spring3 19.4.3編寫視圖組件(JSP頁面)

19.4.4Action和JavaBean 19.4.5Struts2、Spring3和Hibernate的配置文件

19.4.6Struts2、Spring3和Hibernate整合中常見問題

19.4.7項(xiàng)目部署和運(yùn)行6/7/202327第20章Spring3的AOP框架20.1AOP框架基礎(chǔ)知識

20.1.1AOP框架簡介

20.1.2Spring3的AOP框架主要術(shù)語20.2代理(Proxy)

20.2.1靜態(tài)代理

20.2.2動態(tài)代理20.3創(chuàng)建通知(Advice)

20.3.1前置通知(BeforeAdvice)

20.3.2后置通知(AfterAdvice)

20.3.3環(huán)繞通知(AroundAdvice)

20.3.4異常通知(ThrowsAdvice)

20.3.5引入通知(IntroductionAdvice)20.4定義切入點(diǎn)(Pointcut)

20.4.1靜態(tài)切入點(diǎn)和動態(tài)切入點(diǎn)

20.4.2切入點(diǎn)的應(yīng)用實(shí)例20.5創(chuàng)建引入(Introduction)6/7/202328第21章基于Struts2+Hibernate+Spring3的BBS系統(tǒng)21.1項(xiàng)目需求分析21.2項(xiàng)目系統(tǒng)分析21.3項(xiàng)目的數(shù)據(jù)庫設(shè)計(jì)21.4項(xiàng)目實(shí)現(xiàn)

21.4.1項(xiàng)目的文件結(jié)構(gòu)和主頁面

21.4.2BBS登錄功能的實(shí)現(xiàn)

21.4.3BBS板塊管理功能的實(shí)現(xiàn)

21.4.4BBS帖子管理功能的實(shí)現(xiàn)

21.4.5個(gè)人信息管理功能的實(shí)現(xiàn)6/7/202329第1章JavaWeb技術(shù)基礎(chǔ)知識

1.1Web基礎(chǔ)知識1.2JSP基礎(chǔ)知識1.3Struts2基礎(chǔ)知識1.4Hibernate基礎(chǔ)知識1.5Spring3基礎(chǔ)知識6/7/2023301.1Web基礎(chǔ)知識1.1.1Web技術(shù)的由來與發(fā)展1.1.2Web動態(tài)網(wǎng)頁技術(shù)6/7/2023311.1.1Web技術(shù)的由來與發(fā)展Web(WorldWideWeb,簡稱WWW或者Web)是由蒂姆·伯納斯-李(TimBerners-Lee,萬維網(wǎng)之父,1955年出生于英國、不列顛帝國勛章獲得者、英國皇家學(xué)會會員、英國皇家工程師學(xué)會會員、美國國家科學(xué)院院士)于1989年3月提出的萬維網(wǎng)設(shè)想而發(fā)展起來的。1980年,TimBerners-Lee負(fù)責(zé)的Enquire(EnquireWithinUponEverything的簡稱)項(xiàng)目是Web項(xiàng)目的起源。1989年,TimBerners-Lee發(fā)明的分布式應(yīng)用架構(gòu),向人們提供信息和信息服務(wù)。

1990年,第一個(gè)Web服務(wù)器開始運(yùn)行。

1991年,CERN(EuropeanParticlePhysicsLaboratory)正式發(fā)布了Web技術(shù)標(biāo)準(zhǔn)。6/7/202332早期的Web應(yīng)用主要是使用HTML語言編寫、運(yùn)行在服務(wù)器端的的靜態(tài)頁面。6/7/202333HTML(HypertextMarkupLanguage,超文本標(biāo)記語言)是一種描述文檔結(jié)構(gòu)的語言,不能描述實(shí)際的表現(xiàn)形式。1945年,范內(nèi)瓦·布什(VannevarBush)提出了文本和文本之間通過超級鏈接相互關(guān)聯(lián)的思想,并給出設(shè)計(jì)方案。范內(nèi)瓦·布什具有6個(gè)不同學(xué)位的科學(xué)家、教育家和政府官員與本世紀(jì)許多著名的事件都有著千絲萬縷的聯(lián)系,如組織和領(lǐng)導(dǎo)了制造第一顆原子彈著名的“曼哈頓計(jì)劃”、氫彈的發(fā)明、登月飛行、“星球大戰(zhàn)計(jì)劃”。正如歷史學(xué)家邁克爾·雪利所言,“要理解比爾·蓋茨和比爾·克林頓的世界,你必須首先認(rèn)識范內(nèi)瓦·布什?!闭且蚱湓谛畔⒓夹g(shù)領(lǐng)域多方面的貢獻(xiàn)和超人遠(yuǎn)見,范內(nèi)瓦·布什獲得了“信息時(shí)代的教父”的美譽(yù)。1960年后正式將這種信息關(guān)聯(lián)技術(shù)命名為超文本(Hypertext)技術(shù)。1991年HTML語言正式誕生以來推出了多個(gè)不同的版本,其中對Web技術(shù)發(fā)展具有重大影響的主要是兩個(gè)版本:1996年推出的HTML3.2;1998年推出的HTML4.0。1999年W3C頒布了HTML4.01。6/7/202334為了滿足人們對信息豐富性和多樣性的強(qiáng)烈需求。促使Web技術(shù)由靜態(tài)技術(shù)向動態(tài)技術(shù)的轉(zhuǎn)化。第一種使服務(wù)器能根據(jù)運(yùn)行時(shí)的具體情況,動態(tài)生成HTML頁面的技術(shù)是CGI(CommonGatewayInterface,公共網(wǎng)關(guān)接口)技術(shù)。1993年,CGI1.0的標(biāo)準(zhǔn)草案由NCSA(NationalCenterforSupercomputingApplications)提出,1995年,NCSA開始制定CGI1.1標(biāo)準(zhǔn)。CGI技術(shù)允許服務(wù)端的應(yīng)用程序根據(jù)客戶端的請求,動態(tài)生成HTML頁面,這使客戶端和服務(wù)端的動態(tài)信息交換成為了可能。6/7/2023351994年,Rasmus

Lerdorf發(fā)明了專用于Web服務(wù)端編程的PHP(PersonalHomePageTools)語言。1996年,Microsoft借鑒PHP的思想,推出ASP技術(shù)。借助MicrosoftVisualStudio等開發(fā)工具在市場上的成功,ASP迅速成為了Windows系統(tǒng)下Web服務(wù)端的主流開發(fā)技術(shù)。1997年,SUN公司推出了Servlet技術(shù),作為Java陣營的CGI解決方案。1998年,SUN公司又推出了JSP技術(shù),允許在HTML頁面中嵌入Java腳本代碼,從而實(shí)現(xiàn)動態(tài)網(wǎng)頁功能。2009年4月20日,甲骨文(Oracle)公司以74億美元收購Sun公司。6/7/2023362000年以后,隨著Web應(yīng)用程序復(fù)雜性不斷提高,人們逐漸意識到,單純依靠某種技術(shù),很難能夠?qū)崿F(xiàn)快速開發(fā)、快速驗(yàn)證和快速部署的效果,必須整合Web開發(fā)技術(shù)形成完整的開發(fā)框架或應(yīng)用模型,來滿足各種復(fù)雜的應(yīng)用程序的需求。Web技術(shù)出現(xiàn)了幾種主要的技術(shù)整合方式:MVC設(shè)計(jì)模式、門戶服務(wù)和Web內(nèi)容管理。Struts、Spring、Hibernate框架技術(shù)等都是開源世界里與MVC設(shè)計(jì)模式、門戶服務(wù)和Web內(nèi)容管理相關(guān)的優(yōu)秀解決方案。6/7/2023371.1Web基礎(chǔ)知識1.1.1Web技術(shù)的由來與發(fā)展1.1.2Web動態(tài)網(wǎng)頁技術(shù)6/7/2023381.1.2Web動態(tài)網(wǎng)頁技術(shù)動態(tài)網(wǎng)頁技術(shù)是運(yùn)行在服務(wù)器端的Web應(yīng)用程序,根據(jù)用戶的請求,在服務(wù)器端進(jìn)行動態(tài)處理后,把處理的結(jié)果以HTML文件格式返回給客戶端。當(dāng)前主流的三大動態(tài)Web開發(fā)技術(shù)是:

PHPASP/ASP.NETJSP6/7/202339PHP1994年Rasmus

Lerdorf創(chuàng)建了PHP。1995年初PersonalHomePageTools(PHPTools)發(fā)布了PHP1.0。1995年又發(fā)布PHP2.0。1997年發(fā)布PHP3.0。2000年,發(fā)布PHP4.0。2009年發(fā)布PHP5.3版本。2011年發(fā)布PHP5.4。6/7/202340PHP是一個(gè)基于服務(wù)端來創(chuàng)建動態(tài)網(wǎng)站的腳本語言,可以用PHP和HTML生成網(wǎng)站主頁。當(dāng)一個(gè)訪問者打開主頁時(shí),服務(wù)端便執(zhí)行PHP的命令并將執(zhí)行結(jié)果發(fā)送至訪問者的瀏覽器中,這類似于ASP和JSP。然而PHP和它們的不同之處在于PHP開放源碼和跨越平臺,PHP可以運(yùn)行在WindowsNT和多種版本的UNIX上。PHP消耗的資源較少,當(dāng)PHP作為ApacheWeb服務(wù)器一部分時(shí),運(yùn)行代碼不需要調(diào)用外部二進(jìn)制程序,服務(wù)器不需要承擔(dān)任何額外的負(fù)擔(dān)。6/7/202341ASP/ASP.NETASP是Microsoft公司開發(fā)用于代替CGI腳本程序的一種Web應(yīng)用技術(shù),可以與數(shù)據(jù)庫和其它程序進(jìn)行交互,是一種簡單、方便的編程工具。ASP是基于Web的一種編程技術(shù),是CGI的一種。ASP可以輕松地實(shí)現(xiàn)對頁面內(nèi)容的動態(tài)控制,根據(jù)不同的瀏覽者,顯示不同的頁面內(nèi)容。1996年,Microsoft公司推出ASP1.0;1998年,Microsoft公司推出ASP2.0;1999年,Microsoft公司推出ASP3.0;2001年,推出ASP.NET。6/7/202342ASP.NET技術(shù)又稱為ASP+,是在ASP基礎(chǔ)上發(fā)展起來的,是ASP3.0升級版本,保留ASP的最大優(yōu)點(diǎn)并全力使其擴(kuò)大化,是Microsoft公司推出的新一代Web開發(fā)技術(shù),是.NET戰(zhàn)略中的重要一員,它全新的技術(shù)架構(gòu)使編程變得更加簡單,是創(chuàng)建動態(tài)網(wǎng)站和Web應(yīng)用程序的最好技術(shù)之一。6/7/202343JSPJSP(JavaServerPages)是由SunMicrosystems公司倡導(dǎo)、許多公司參與一起建立的一種動態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn)。SUN公司JSP1998年推出JSP0.9版本1999年推出1.1版本2000年推出1.2版本現(xiàn)在流行的是JSP2.0版本。6/7/202344第1章JavaWeb技術(shù)基礎(chǔ)知識

1.1Web基礎(chǔ)知識1.2JSP基礎(chǔ)知識1.3Struts2基礎(chǔ)知識1.4Hibernate基礎(chǔ)知識1.5Spring3基礎(chǔ)知識6/7/2023451.2JSP基礎(chǔ)知識1.2.1JSP的工作原理1.2.2JSP的兩種體系結(jié)構(gòu)1.2.3JSP開發(fā)JavaWeb站點(diǎn)的主要方式6/7/2023461.2.1JSP的工作原理6/7/202347所有的JSP應(yīng)用程序在首次載入時(shí)都被編譯成Servlet文件,然后再運(yùn)行,這個(gè)工作主要是由JSP引擎來完成。當(dāng)?shù)谝淮芜\(yùn)行一個(gè)JSP頁面時(shí),JSP引擎要完成以下操作:當(dāng)用戶訪問一個(gè)JSP頁面時(shí),JSP頁面將被編譯成Servlet文件(Java文件)。JSP引擎調(diào)用Java編譯器,編譯Servlet文件為可執(zhí)行的代碼文件(.class文件)。用Java虛擬機(jī)(JVM)解釋執(zhí)行.class文件,并將執(zhí)行結(jié)果返回給服務(wù)器。服務(wù)器將執(zhí)行結(jié)果以HTML格式發(fā)送給客戶端的瀏覽器。6/7/2023481.2JSP基礎(chǔ)知識1.2.1JSP的工作原理1.2.2JSP的兩種體系結(jié)構(gòu)1.2.3JSP開發(fā)JavaWeb站點(diǎn)的主要方式6/7/2023491.2.2JSP的兩種體系結(jié)構(gòu)兩種體系結(jié)構(gòu)1.JSPModel1在Model1體系中,JSP頁面獨(dú)自響應(yīng)請求并將處理結(jié)果返回客戶,如圖1-2所示。這里仍然存在顯示與內(nèi)容的分離,因?yàn)樗械臄?shù)據(jù)存取都是由JavaBean來完成的。盡管Model1體系十分適合簡單應(yīng)用的需要,它卻不能滿足復(fù)雜的大型JavaWeb應(yīng)用程序需要。不加選擇地隨意運(yùn)用Model1,會導(dǎo)致JSP頁內(nèi)被嵌入大量的腳本片段或Java代碼。盡管這對于Java程序員來說可能不是什么大問題,但如果JSP頁面是由網(wǎng)頁設(shè)計(jì)人員開發(fā)并維護(hù)的,這就確實(shí)是個(gè)問題了。從根本上講,將導(dǎo)致角色定義不清和職責(zé)分配不明,給項(xiàng)目管理帶來不必要的麻煩。6/7/2023506/7/2023512.JSPModel2Model2體系結(jié)構(gòu)是一種把JSP與Servlet聯(lián)合使用來實(shí)現(xiàn)動態(tài)內(nèi)容服務(wù)的方法,如圖1-3所示。它吸取了兩種技術(shù)各自的優(yōu)點(diǎn),用JSP生成表示層(view)的內(nèi)容,讓Servlet完成深層次的處理任務(wù)。Servlet充當(dāng)控制者(Controller)的角色,負(fù)責(zé)管理對請求的處理,創(chuàng)建JSP頁面需要使用的JavaBean和對象,同時(shí)根據(jù)用戶的動作決定把哪個(gè)JSP頁面?zhèn)鹘o請求者。在JSP頁面內(nèi)沒有處理邏輯,它僅負(fù)責(zé)檢索原先由Servlet創(chuàng)建的對象或者JavaBean,從Servlet中提取動態(tài)內(nèi)容插入靜態(tài)模板。分離了顯示和內(nèi)容,明確了角色的定義以及實(shí)現(xiàn)了開發(fā)者與網(wǎng)頁設(shè)計(jì)者的分開。項(xiàng)目越復(fù)雜,使用Model2體系結(jié)構(gòu)的優(yōu)勢就越突出。6/7/2023526/7/2023531.2JSP基礎(chǔ)知識1.2.1JSP的工作原理1.2.2JSP的兩種體系結(jié)構(gòu)1.2.3JSP開發(fā)JavaWeb站點(diǎn)的主要方式6/7/202354JSP開發(fā)Web站點(diǎn)主要有以下幾種方式:直接使用JSPJSP+JavaBean

JSP+JavaBean+Servlet

J2EE開發(fā)模型SSH開發(fā)框架

6/7/202355第1章JavaWeb技術(shù)基礎(chǔ)知識

1.1Web基礎(chǔ)知識1.2JSP基礎(chǔ)知識1.3Struts2基礎(chǔ)知識1.4Hibernate基礎(chǔ)知識1.5Spring3基礎(chǔ)知識6/7/2023561.3Struts2基礎(chǔ)知識1.3.1Struts2的由來與發(fā)展1.3.2Struts2的工作原理6/7/2023571.3.1Struts2的由來與發(fā)展Struts是整合了當(dāng)前動態(tài)網(wǎng)站開發(fā)中的Servlet、JSP、JavaBean、JDBC、XML等相關(guān)技術(shù)的一種主流Web開發(fā)框架,是一種基于經(jīng)典MVC的框架。采用Struts可以簡化MVC設(shè)計(jì)模式的Web應(yīng)用開發(fā)工作,很好地實(shí)現(xiàn)代碼重用,使開發(fā)人員從繁瑣的工作中解脫出來,開發(fā)具有強(qiáng)擴(kuò)展性的Web應(yīng)用程序。6/7/202358Struts是Apache軟件基金會下Jakarta項(xiàng)目(Apache組織下的一套Java解決方案的開源軟件的名稱)的一部分。該基金會下除Struts之外,還有其它優(yōu)秀的開源產(chǎn)品,如Tomcat。2000年CraigR.McClanahan(1960年出生于丹麥,程序員,原Sun公司的高級員工,JSF技術(shù)規(guī)范組負(fù)責(zé)人,ApacheStrutsframework創(chuàng)始人,Servlet2.2,2.3和JSP1.1,1.2規(guī)范的專家組成員之一,Tomcat4的架構(gòu)師)貢獻(xiàn)了他編寫的JSPModel2架構(gòu)之ApplicationFramework原始程序代碼給Apache基金會,成為ApacheJakarta計(jì)劃StrutsFramework的前身。從2000年5月開始開發(fā)Struts,到2001年6月發(fā)布Struts1.0版本。有30多個(gè)開發(fā)者參與進(jìn)來,并有數(shù)千人參與到討論組中。Struts框架開始由一個(gè)志愿者團(tuán)隊(duì)來管理。到2002年,Struts小組共有9個(gè)志愿者團(tuán)隊(duì)。Struts框架的主要架構(gòu)設(shè)計(jì)和開發(fā)者是CraigR.McClanahan。6/7/202359Struts自2001年推出,2004年開始升溫,并逐漸成為JavaWeb應(yīng)用開發(fā)最流行的框架技術(shù)之一。在目前的Java工程師招聘要求中,通常會強(qiáng)調(diào)Struts框架技術(shù)。精通Struts框架技術(shù)已經(jīng)成為Java工程師必備的技能。6/7/202360Struts1.X系列的版本一般稱為Struts1。經(jīng)過六年多的發(fā)展,Struts1已經(jīng)成為了一個(gè)高度成熟的框架,不管是穩(wěn)定性還是可靠性都得到了廣泛的認(rèn)可。市場占有率也很高,擁有豐富的開發(fā)人群,幾乎已經(jīng)成為了事實(shí)上的工業(yè)標(biāo)準(zhǔn)。但是隨著時(shí)間的流逝,技術(shù)的進(jìn)步,Struts1的局限性也越來越多地暴露出來,并且制約了Struts1的繼續(xù)發(fā)展。目前,Struts已經(jīng)分化成了兩個(gè)框架:一個(gè)是在傳統(tǒng)的Struts1基礎(chǔ)上融合了另外一個(gè)優(yōu)秀的Web框架WebWork的Struts2;另外一個(gè)就是Struts1。Struts2雖然是在Struts1的基礎(chǔ)上發(fā)展起來的,但是實(shí)質(zhì)上是以WebWork為核心的。2007年,Apache發(fā)布Struts2.0,Struts2是Struts的下一代產(chǎn)品,是在Struts1和WebWork框架基礎(chǔ)上進(jìn)行整合的全新的Struts框架。其全新的Struts2體系結(jié)構(gòu)與Struts1體系結(jié)構(gòu)差別巨大。Struts2以WebWork為核心,采用攔截器機(jī)制來處理用戶的請求,這樣的設(shè)計(jì)也使得業(yè)務(wù)邏輯控制器能夠與Servlet完全脫離開,所以Struts2可以理解為WebWork的更新產(chǎn)品。因此Struts2和Struts1有著很大的區(qū)別,但是相對于WebWork而言,Struts2只有很小的變化。6/7/2023611.3Struts2基礎(chǔ)知識1.3.1Struts2的由來與發(fā)展1.3.2Struts2的工作原理6/7/2023621.3.2Struts2的工作原理6/7/202363Struts2中使用攔截器來處理用戶請求,從而允許用戶的業(yè)務(wù)控制器Action與Servlet分離。Struts2的工作原理如圖1-4所示,用戶請求提交后經(jīng)過多個(gè)攔截器攔截后交給核心控制器FilterDispatcher處理。核心控制器讀取配置文件struts.xml,根據(jù)配置文件中的信息指定由某一個(gè)業(yè)務(wù)控制器Action來處理用戶數(shù)據(jù)。業(yè)務(wù)控制器調(diào)用某些業(yè)務(wù)組件進(jìn)行處理,在處理的過程中可以調(diào)用其它模型組件共同完成數(shù)據(jù)的處理。Action處理完后會返回給核心控制器FilterDispatcher一個(gè)處理結(jié)果,核心控制器根據(jù)返回的處理結(jié)果讀取配置文件struts.xml,根據(jù)配置文件中的配置信息,決定下一步跳轉(zhuǎn)到哪一個(gè)頁面或者調(diào)用哪一個(gè)Action。6/7/202364一個(gè)客戶請求在Struts2框架中處理的過程大概有以下幾個(gè)步驟:客戶提交請求到服務(wù)器。請求被提交到一系列的過濾器或者攔截器,最后到達(dá)FilterDispatcher;FilterDispatcher是核心控制器,是Struts2中MVC模式的控制器部分。FilterDispatcher讀取配置文件struts.xml,根據(jù)配置信息調(diào)用某個(gè)Action來處理客戶請求。Action處理后,返回處理結(jié)果,F(xiàn)ilterDispatcher根據(jù)struts.xml的配置找到對應(yīng)的頁面跳轉(zhuǎn)。6/7/202365第1章JavaWeb技術(shù)基礎(chǔ)知識

1.1Web基礎(chǔ)知識1.2JSP基礎(chǔ)知識1.3Struts2基礎(chǔ)知識1.4Hibernate基礎(chǔ)知識1.5Spring3基礎(chǔ)知識6/7/2023661.4Hibernate基礎(chǔ)知識1.4.1Hibernate的由來與發(fā)展1.4.2Hibernate的工作原理6/7/2023671.4.1Hibernate的由來與發(fā)展Hibernate是封裝了JDBC的一種開放源代碼的對象/關(guān)系映射(Object-RelationMapping,ORM)框架,使程序員可以使用面向?qū)ο蟮乃枷雭聿僮鲾?shù)據(jù)庫。Hibernate是一種對象/關(guān)系映射的解決方案,即將Java對象與對象之間的關(guān)系映射到數(shù)據(jù)庫表與表之間的關(guān)系。6/7/202368目前,Hibernate是企業(yè)Java工程師招聘中要求必備的一門技能,也是JavaWeb三大經(jīng)典框架之一。ChristianBauer是Hibernate之父,現(xiàn)是Redhat公司負(fù)責(zé)開發(fā)和維護(hù)Hibernate的項(xiàng)目經(jīng)理。2001年,Hibernate1發(fā)布,即Hibernate的第一個(gè)版本;2003年,Hibernate2發(fā)布,并在當(dāng)年獲得Jolt2003大獎(jiǎng)(Jolt大獎(jiǎng)素有“軟件業(yè)界的奧斯卡”之美譽(yù),共設(shè)通用類圖書、技術(shù)類圖書、語言和開發(fā)環(huán)境、框架庫和組件、開發(fā)者網(wǎng)站等十余個(gè)分類大獎(jiǎng)),2003年Hibernate被JBoss公司收購,成為該公司的子項(xiàng)目之一;2005年,JBoss發(fā)布Hibernate3;2006年,JBoss公司被Redhat公司收購;2012年11月發(fā)布Hibernate4.1.8。6/7/202369Hibernate自發(fā)布以來受到業(yè)界的歡迎,目前許多Java程序員學(xué)習(xí)和使用它來開發(fā)商業(yè)應(yīng)用軟件。另外網(wǎng)絡(luò)上有大量介紹和討論Hibernate應(yīng)用的文章,JBoss網(wǎng)站也提供了一個(gè)完善的社區(qū),所以一旦在使用中遇到問題,開發(fā)者可以輕松地在網(wǎng)絡(luò)上搜索到相應(yīng)的解決方法,這又進(jìn)一步吸引了更多的程序員來學(xué)習(xí)Hibernate,吸引更多的公司采用Hibernate開發(fā)軟件。Hibernate為使用者考慮得十分周全,對于一個(gè)普通的程序員來說,只需學(xué)習(xí)不到10個(gè)類的用法就可以開發(fā)基于Hibernate框架的應(yīng)用系統(tǒng),實(shí)際使用起來十分方便。Hibernate提供了透明持久化功能,支持第三方框架,即能與其它框架進(jìn)行整合,如Struts、Spring等等,不但提供面向?qū)ο蟮腍QL,而且支持傳統(tǒng)的SQL語句。6/7/2023701.4Hibernate基礎(chǔ)知識1.4.1Hibernate的由來與發(fā)展1.4.2Hibernate的工作原理6/7/2023711.4.2Hibernate的工作原理6/7/202372Hibernate的工作原理如圖1-5所示。Hibernate的工作過程如下:首先,Configuration讀取Hibernate的配置文件hibernate.cfg.xml和映射文件*.hbm.xml中的信息,即加載配置文件和映射文件,并通過Hibernate配置文件生成一個(gè)多線程的SessionFactory對象;然后,多線程SessionFactory對象生成一個(gè)線程Session對象;Session對象生成Query對象或者Transaction對象;可通過Session對象的get(),load(),save(),update(),delete()和saveOrUpdate()等方法對PO進(jìn)行加載、保存、更新、刪除等操作;也可利用Query對象執(zhí)行查詢操作;如果沒有異常,Transaction對象將提交這些數(shù)據(jù)到數(shù)據(jù)庫中。6/7/202373第1章JavaWeb技術(shù)基礎(chǔ)知識

1.1Web基礎(chǔ)知識1.2JSP基礎(chǔ)知識1.3Struts2基礎(chǔ)知識1.4Hibernate基礎(chǔ)知識1.5Spring3基礎(chǔ)知識6/7/2023741.5Spring3基礎(chǔ)知識1.5.1Spring3的由來與發(fā)展1.5.2Spring3框架的體系結(jié)構(gòu)6/7/2023751.5.1Spring3的由來與發(fā)展Spring3是JavaWeb三大經(jīng)典框架(Struts、Spring、Hibernate,SSH)中主要用于降低模塊之間耦合度的框架,實(shí)際上Spring3除了能夠通過IoC降低模塊之間的耦合度外,還提供了其它功能。6/7/2023762002年,RodJohnson編著出版了《ExpertonetooneJ2EEdesignanddevelopment》,該書中對JavaEE框架臃腫、低效、脫離現(xiàn)實(shí)的種種現(xiàn)狀提出了質(zhì)疑,并積極尋求探索革新之道。以此書為指導(dǎo)思想,他編寫了interface21框架,這是一個(gè)力圖沖破J2EE傳統(tǒng)開發(fā)的困境,從實(shí)際需求出發(fā),著眼于輕便、靈巧,易于開發(fā)、測試和部署的輕量級開發(fā)框架。Spring框架即以interface21框架為基礎(chǔ),經(jīng)過重新設(shè)計(jì),并不斷豐富其內(nèi)涵,2003年推出Spring1.0測試版。2004年3月24日,發(fā)布了1.0正式版;同年他又推出了一部堪稱經(jīng)典的力作《Expertone-to-oneJ2EEDevelopmentwithoutEJB》,該書在Java世界掀起了軒然大波,不斷改變著Java開發(fā)者程序設(shè)計(jì)和開發(fā)的思考方式。在該書中,作者根據(jù)自己多年豐富的實(shí)踐經(jīng)驗(yàn),對EJB的各種笨重臃腫的結(jié)構(gòu)進(jìn)行了逐一的分析和否定,并分別以簡潔實(shí)用的方式替換之。至此一戰(zhàn)功成,RodJohnson成為一個(gè)改變Java世界的大師級人物。6/7/202377傳統(tǒng)J2EE應(yīng)用的開發(fā)效率低,應(yīng)用服務(wù)器廠商對各種技術(shù)的支持并沒有真正統(tǒng)一,導(dǎo)致J2EE的應(yīng)用沒有真正實(shí)現(xiàn)“一次編寫,到處運(yùn)行”的承諾。Spring作為開源的中間件,獨(dú)立于各種應(yīng)用服務(wù)器,甚至無須應(yīng)用服務(wù)器的支持,也能提供應(yīng)用服務(wù)器的功能,如聲明式事務(wù)、事務(wù)處理等。Spring致力于J2EE應(yīng)用的各層的解決方案,而不是僅僅專注于某一層的方案。可以說Spring是企業(yè)應(yīng)用開發(fā)的“一站式”選擇,并貫穿表現(xiàn)層、業(yè)務(wù)層及持久層。然而,Spring并不想取代那些已有的框架,而是與它們無縫地整合。2006年,推出Spring2.02007年推出Spring2.52008年推出Spring3.02011年推出Spring3.1。目前,Spring最新版本是Spring3.1.3,2012年10月發(fā)布。6/7/2023781.5Spring3基礎(chǔ)知識1.5.1Spring3的由來與發(fā)展1.5.2Spring3框架的體系結(jié)構(gòu)6/7/2023791.5.2Spring3框架的體系結(jié)構(gòu)Spring3是一個(gè)輕量級的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。輕量級是指從軟件大小與開銷兩方面而言Spring3都是輕量的。完整的Spring3框架可以在一個(gè)大小只有1MB多的JAR文件里發(fā)布。并且Spring3所需的處理開銷也是微不足道的。此外,Spring3是非侵入式的,Spring3應(yīng)用中的對象不依賴于Spring3的特定類。一般說EJB是重量級的容器,Spring3是輕量級容器。Spring3通過一種稱作控制反轉(zhuǎn)(IoC)技術(shù)促進(jìn)了耦合度降低。當(dāng)應(yīng)用了IoC,一個(gè)對象依賴的其它對象會通過被動的方式傳遞進(jìn)來,而不是這個(gè)對象自己創(chuàng)建或者查找依賴對象。6/7/202380AOP是指Spring3提供了對面向切面編程的豐富支持,允許通過分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級服務(wù)(如事務(wù)管理)進(jìn)行內(nèi)聚性的開發(fā)。應(yīng)用對象只實(shí)現(xiàn)它們應(yīng)該做的即完成業(yè)務(wù)邏輯,僅此而已。它們并不負(fù)責(zé)其它的系統(tǒng)級關(guān)注點(diǎn),例如日志或事務(wù)支持。容器是指Spring3包含并管理應(yīng)用對象的配置和生命周期,在這個(gè)意義上它是一種容器,可以配置每個(gè)Bean如何被創(chuàng)建以及它們是如何相互關(guān)聯(lián)的。然而,Spring3不應(yīng)該被混同于傳統(tǒng)的重量級的EJB容器,EJB經(jīng)常是龐大與笨重的,難以使用??蚣苁侵窼pring3可以將簡單的組件配置、組合成為復(fù)雜的應(yīng)用。在Spring3中,應(yīng)用對象被聲明式地組合,典型地是在一個(gè)XML文件里。Spring3也提供了很多基礎(chǔ)功能(事務(wù)管理、持久化框架集成等等),將應(yīng)用邏輯的開發(fā)留給開發(fā)者。6/7/202381Spring3框架提供了“一站式服務(wù)”。Spring3框架既可用在Java程序設(shè)計(jì)中,也可以用在JavaWeb程序設(shè)計(jì)中,甚至可以用在.NET程序設(shè)計(jì)中。另外,Spring3框架中提供了多種框架技術(shù),也可以集成其它框架技術(shù),例如Struts2、Hibernate等。Spring3框架具有以下特點(diǎn):1.方便解耦,簡化開發(fā)通過Spring3提供的IoC容器,可以將對象之間的依賴關(guān)系交由Spring3進(jìn)行控制,避免硬編碼所造成的程序過度耦合。6/7/2023822.AOP編程的支持通過Spring3提供的AOP功能,方便進(jìn)行面向切面的編程,許多不容易使用OOP(ObjectOrient

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論