Java Web程序設(shè)計(jì)(慕課版 第3版)-基于SSM 課件 第8-13章 程序日志組件 - 程序源論壇_第1頁
Java Web程序設(shè)計(jì)(慕課版 第3版)-基于SSM 課件 第8-13章 程序日志組件 - 程序源論壇_第2頁
Java Web程序設(shè)計(jì)(慕課版 第3版)-基于SSM 課件 第8-13章 程序日志組件 - 程序源論壇_第3頁
Java Web程序設(shè)計(jì)(慕課版 第3版)-基于SSM 課件 第8-13章 程序日志組件 - 程序源論壇_第4頁
Java Web程序設(shè)計(jì)(慕課版 第3版)-基于SSM 課件 第8-13章 程序日志組件 - 程序源論壇_第5頁
已閱讀5頁,還剩168頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第8章程序日志組件01 日志組件簡介02Loggers03Appenders04Layouts1 日志組件簡介什么是Log4j?Log4j是Apache的開源項(xiàng)目,通過使用Log4j,可以控制每一條日志的輸出格式、級別,能夠更加細(xì)致地控制日志的生成過程。LoggerAppenderLayoutLog4jLog4j的3大組件2 LoggersLoggers概述Logger是Log4j的日志記錄器,它是Log4j的核心組件。日志級別消息類型描述DEBUGObject輸出調(diào)試級別的日志信息,它是所有日志級別中最低的INFOObject輸出消息日志,它高于DEBUG級別日志W(wǎng)ARNObject輸出警告級別的日志信息,它高于INFO日志級別ERRORObject輸出錯誤級別的日志信息,它高于WARN日志級別FATALObject輸出致命錯誤級別的日志信息,它是最高的日志級別5種級別的日志信息日志輸出級別方法舉例DEBUElogger.debug(Objectmessage)logger.debug("調(diào)試日志");INFO(Objectmessage)logger.info("消息日志")WARNlogger.warn(Objectmessage)logger.warn("警告日志")ERRORlogger.error(Objectmessage)logger.error("數(shù)據(jù)庫連接失敗")FATALlogger.fatal(Objectmessage)logger.fatal("內(nèi)存不足")在程序中可以使用Logger類的不同的方法來輸出各種級別的日志信息,Log4j會根據(jù)配置的當(dāng)前日志級別決定輸出那些日志。對應(yīng)各種級別日志的輸出方法如下。配置日志在配置文件中配置Logger日志時(shí),可以定義日志的級別、輸出目標(biāo)等。log4j.[loggerName]=[loggerLevel],appenderName,……語法log4j.logger.onelogger=debug,file示例日志的繼承l(wèi)og4j.rootLogger=WARN,consoleLogger日志的最頂層是rootLogger日志,它類似于Java的Object類,所有日志都繼承了rootLogger日志的定義,log4j.logger.onelogger.newlogger=,file除了配置rootLogger日志定義所有日志都會繼承的配置外,在配置日志時(shí)還可以指定的繼承某個以存在的日志。例如,繼承以存在的onelogger日志去定義一個新的newlogger日志,1

AppendersAppenders接口在配置文件中定義Logger日志時(shí),需要指定日志的輸出目標(biāo)即實(shí)現(xiàn)Appenders接口的對象。Appender接口的實(shí)現(xiàn)類描述org.apache.log4j.ConsoleAppender輸出日志到控制臺org.apache.log4j.FileAppender輸出日志到文件org.apache.log4j.DailyRollingFileAppender每天只生成一個對應(yīng)的日志文件org.apache.log4j.RollingFileAppender當(dāng)文件大小超出限制時(shí),從新生成新的日志文件,可以設(shè)置日志文件的備份數(shù)量org.apache.log4j.WriterAppender以流的形式輸出日志信息到任意目的.SMTPAppender當(dāng)特定的日志事件發(fā)生時(shí),一般是指發(fā)生錯誤或者重大錯誤時(shí),發(fā)送郵件.SocketAppender給遠(yuǎn)程日志服務(wù)器的網(wǎng)絡(luò)套接字節(jié)點(diǎn)發(fā)送日志事件LoggingEvent對象.SocketHubAppender給遠(yuǎn)程日志服務(wù)器群組網(wǎng)絡(luò)套接字節(jié)點(diǎn),發(fā)送日志事件LoggingEvent對象.SyslogAppender給遠(yuǎn)程異步日志記錄的后臺程序(daemon)發(fā)送消息。.TelnetAppender一個專用于向只讀網(wǎng)絡(luò)套接字發(fā)送消息的log4jappender。4 LayoutsLayouts簡介Appender必須使用一個與之相關(guān)聯(lián)的Layout附加在Appender上,它可以根據(jù)用戶的個人習(xí)慣格式化日志的輸出格式,例如文本文件、HTML文件、郵件、網(wǎng)絡(luò)套接字等。Layout的子類描述org.apache.log4j.HTMLLayout將日志以HTML格式布局輸出org.apache.log4j.PatternLayout日志將根據(jù)指定的轉(zhuǎn)換模式格式化并輸出日志,如果沒有指定任何轉(zhuǎn)換模式,將采用默認(rèn)的轉(zhuǎn)換模式org.apache.log4j.SimpleLayout將日志以一種非常簡單的方式格式化日志輸出,它先輸出日志級別,然后跟著一個破折號“-“,最后才是日志消息org.apache.log4j.TTCCLayout這種布局格式包含日志的線程、級別、日志名稱跟著一個破折號“-“,然后才是日志消息PatternLayout布局的轉(zhuǎn)義字符Appender必須使用一個與之相關(guān)聯(lián)的Layout附加在Appender上,它可以根據(jù)用戶的個人習(xí)慣格式化日志的輸出格式,例如文本文件、HTML文件、郵件、網(wǎng)絡(luò)套接字等。轉(zhuǎn)換字符描述%c日志名稱%C日志操作所在的類的名稱(不包含擴(kuò)展名稱)%d產(chǎn)生日志的時(shí)間和日期%F日志操作所在的類的源文件名稱(既.java文件)%l日志操作代碼所在的類的名稱以“.”字符連接所在的方法,其后的()中包含日志操作代碼所在的源文件名稱以“:”連接所在行號。例如Test.main(Test.java:19)%L只包含日志操作代碼所在源代碼的行號。%m除了輸出日志信息之外,不包含任何信息。%M只輸出日志操作代碼所在源文件中的方法名。例如main%n日志信息中的換行符%p以大寫格式輸出日志的級別%r產(chǎn)生日志所耗費(fèi)的時(shí)間(以毫秒為單位)%t輸出日志信息的線程名稱%%輸出%符號小結(jié)這一章我們學(xué)習(xí)了Java中最常用的Log4j日志組件,這個組件可以將后臺的日志按照我們制定的格式展示或者保存,上機(jī)指導(dǎo)使用Log4j將控制臺異常日志保存到文件中。使用如下配置:log4j.rootLogger=DEBUG,Rlog4j.appender.R=org.apache.log4j.FileAppenderlog4j.appender.R.file=console.loglog4j.appender.R.Append=true??log4j.appender.R.layout.ConversionPattern=%n%d:%m%nlog4j.appender.R.layout=org.apache.log4j.PatternLayout第9章SpringMVC框架01MVC設(shè)計(jì)模式02SpringMVC概述03搭建SpringMVC環(huán)境04處理器映射器和適配器05前端控制器和視圖解析器06

請求映射和參數(shù)綁定07攔截器08

SpringMVC其它操作1 MVC設(shè)計(jì)模式MVC模式MVC(Model-View-Controller模型-視圖-控制器)是一個存在于服務(wù)器表達(dá)層的模型。在MVC經(jīng)典架構(gòu)中,強(qiáng)制性地把應(yīng)用程序的輸入、處理和輸出分開,將程序分成3個核心模塊——模型、視圖、控制器。2 SpringMVC概述SpringMVC框架概述SpringMVC屬于SpringFrameWork的后續(xù)產(chǎn)品,已經(jīng)融合在SpringWebFlow里面。Spring框架提供了構(gòu)建Web應(yīng)用程序的全功能MVC模塊。同SpringMVC框架相同作用的控制層框架還有一個叫struts2的框架,不過隨著Spring的版本更新,目前SpringMVC框架無論從安全還是性能上來說都遠(yuǎn)高于struts2框架。Struts2的結(jié)構(gòu)體系SpringMVC框架的結(jié)構(gòu)體系圖3

搭建環(huán)境添加SpringMVC依賴jar包SpringMVC核心配置文件1.前端控制器2.視圖解析器3.注解映射器4.注解適配器……4

處理器映射器和適配器映射器、適配器配置映射器、適配器有兩種方式其一: <!--注解映射器--><beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> <!--注解適配器--><beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>其二:<mvc:annotation-driven/>5

前端控制器和視圖解析器前端控制器<!--控制器映射--><servlet-mapping><servlet-name>SpringMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping>這段實(shí)例中的配置是將所有請求都交給SpringMVC來控制<servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/SpringMVC.xml</param-value></init-param></servlet>視圖解析器試圖名AbstractCachingViewResolverUrlBasedViewResolverInternalResourceViewResolverXmlViewResolverBeanNameViewResolver視圖解析器6

請求參數(shù)與參數(shù)綁定Controller與RequestMapping@Controllerpublic

classUsersController{ @RequestMapping("/getAllUser")

publicModelAndViewgetAllUser()throwsException{ }

}參數(shù)綁定過程名稱作用HttpServletRequest通過request對象獲取請求信息HttpServletResponse通過response對象處理相應(yīng)信息HttpSession通過session對象得到session中存放得對象Model/ModelMapModel是一個接口,ModelMap是一個接口實(shí)現(xiàn),她得作用是將model數(shù)據(jù)填充到request域。SpringMVC數(shù)據(jù)綁定默認(rèn)支持得類型簡單類型參數(shù)綁定當(dāng)我們通過帶參數(shù)的url來發(fā)送請求的時(shí)候,我們只需要在控制器中的方法上設(shè)定好參數(shù)名稱與請求鏈接中的參數(shù)名稱一樣的參數(shù),SpringMVC就可以自動把參數(shù)值綁定到我們的方法參數(shù)中。包裝類型參數(shù)綁定集合類型參數(shù)綁定—數(shù)組下面在介紹一種情況,我們在系統(tǒng)中經(jīng)常會用到復(fù)選框,那么就要求我們后臺代碼可以處理批量的數(shù)據(jù)。集合類型參數(shù)綁定—List集合要想使用集合來綁定參數(shù),我們要滿足幾個條件:1.在表單中,每一行元素的name屬性值應(yīng)該是“集合名[下標(biāo)].屬性”的形式。2.要提供一個List集合的包裝類。3.在業(yè)務(wù)方法中循環(huán)遍歷我們創(chuàng)建的List讀取數(shù)據(jù)。集合類型參數(shù)綁定—Map集合Map集合同List集合有些類似,同樣需要3個條件,只不過我們需要把第2個條件替換成Map的包裝類。7

攔截器HandlerInterceptor接口方法名作用preHandle在執(zhí)行Handler方法之前執(zhí)行,返回值類型為boolean類型。postHandle在執(zhí)行Handler之后,返回ModelAndView之前執(zhí)行。afterCompletion在執(zhí)行完Handler之后執(zhí)行。實(shí)現(xiàn)HandlerInterceptor接口必須實(shí)現(xiàn)該接口下的三個方法WebRequestInterceptor接口WebRequestInterceptor和HandlerInterceptor一樣,也有三個方法,preHandle,postHandle,afterCompletion,不同的是preHandle沒有返回值,而且WebRequestInterceptor的三個方法的參數(shù)都是WebRequest,WebRequest和HttpServletRequest用法基本一樣。常量名真實(shí)值作用SCOPE_REQUEST0代表只有在request中可以訪問SCOPE_SESSION1如果環(huán)境允許它代表一個局部的隔離的session,否則就代表普通的session,并且該session范圍內(nèi)而可以訪問SCOPE_GLOBAL_SESSION2如果環(huán)境允許,它代表一個全局共享的session,否則就代表普通的session,并且在該session范圍內(nèi)可以訪問8 SpringMVC的其他操作利用SpringMVC上傳文件使用SpringMVC框架完成上傳文件與JSP/Servlet一樣,我們都需要在JSP頁面使用file元素,還獲取要上傳的文件。不同點(diǎn)在于我們需要在SpringMVC的配置文件中配置一個多文件類型的解析器“CommonsMultipartResolver”。另外還需要注意,要完成文件上傳功能,別忘了要導(dǎo)入一下兩個jar包。靜態(tài)資源訪問問題<mvc:resourceslocation="/WEB-INF/jsp"mapping="/jsp/**"/><mvc:resourceslocation="/WEB-INF/js"mapping="/js/**"/><mvc:resourceslocation="/WEB-INF/css"mapping="/css/**"/><mvc:resourceslocation="/WEB-INF/img"mapping="/img/**"/>小結(jié)本章向讀者介紹了一種非常流行的MVC模型解決方案——SpringMVC技術(shù),其中包括MVC設(shè)計(jì)模式、SpringMVC框架的體系、SpringMVC配置文件與攔截器等組件。對于初學(xué)者來說,只有切實(shí)掌握SpringMVC框架的體系,才能靈活地應(yīng)用SpringMVC框架進(jìn)行開發(fā)。上機(jī)指導(dǎo)應(yīng)用SpringMVC實(shí)現(xiàn)一個簡單計(jì)算器。第10章Mybatis技術(shù)01 初始MyBatis02搭建MyBatis開發(fā)環(huán)境03MyBatis配置文件詳解04MyBatis高級映射1 初識MyBatisMyBatis介紹MyBatis是一款優(yōu)秀的持久層框架,它支持定制化SQL、存儲過程以及高級映射。MyBatis避免了幾乎所有的JDBC代碼和手動設(shè)置參數(shù)以及獲取結(jié)果集。MyBatis可以使用簡單的XML或注解來配置和映射原生信息,將接口和Java的POJOs(PlainOldJavaObjects,普通的Java對象)映射成數(shù)據(jù)庫中的記錄。MyBatis運(yùn)行流程2 MyBatis開發(fā)環(huán)境數(shù)據(jù)庫準(zhǔn)備我們需要填寫一個“連接名”信息和“密碼”,在這里我設(shè)定連接名為“l(fā)ocalhost”,本地連接的意思,密碼設(shè)置為“root”。搭建MyBatis環(huán)境創(chuàng)建完工程以后,要想使用MyBatis框架,就要為其引入依賴jar包。我們想下載MyBatis的依賴jar包可以去:/mybatis/mybatis-3/releases。編寫日志輸出環(huán)境配置文件編寫數(shù)據(jù)庫連接池SQL映射文件現(xiàn)在我們來寫最后一個配置文件Mapper映射文件。我們需要把所有Mapper配置文件都存放到一個包下,我們?yōu)榘鹈獭眂om.mr.mapper”,然后創(chuàng)建一個名為”**-Mapper.xml”的文件。數(shù)據(jù)庫交互類與測試類名稱作用實(shí)體類數(shù)據(jù)公共類分裝對象測試類輸出結(jié)果顯示接下來編寫Java類。需要編寫三個類,分別是實(shí)體類、數(shù)據(jù)庫交互類以及測試類。模糊查詢想要完成模糊查詢功能,首先我們要在SQL映射文件(*-Mapper.xml),新增模糊查詢的select標(biāo)簽。其次,要在測試類創(chuàng)建測試方法,并在聲明方法的上一行使用@test測試注解。新增SQL映射文件測試類修改案例SQL映射文件測試類刪除案例SQL映射文件測試類3 MyBatis配置文件詳解SqlMapConfig配置文件配置名稱含義簡介configuration包括所有配置標(biāo)簽整個配置文件的頂級標(biāo)簽properties屬性可以引入外部配置的屬性,也可以自己配置。該配置標(biāo)簽所在的同一配置文件中的其他配置均可引用此配置中的屬性setting全局配置參數(shù)MyBatis極為重要的標(biāo)簽,它可以改變一些運(yùn)行時(shí)行為的信息,例如設(shè)置緩存、延遲加載、錯誤處理等。并且還可以設(shè)置最大并發(fā)請求、最大并發(fā)事務(wù)以及是否啟用命名空間等typeAliases類型別名設(shè)置別名來代替Java的全類名()變?yōu)閕nt。typeHandlers類型處理器將SQL中返回的數(shù)據(jù)庫類型轉(zhuǎn)換為相應(yīng)的Java類型處理器配置SqlMapConfig配置文件配置名稱含義簡介environments環(huán)境集合屬性配置數(shù)據(jù)庫信息的集合,它下面可以有很多個environment,一個environment代表一個數(shù)據(jù)庫配置。environment環(huán)境子屬性數(shù)據(jù)庫環(huán)境配置的詳細(xì)配置transactionManager事務(wù)管理指定MyBatis的事務(wù)管理器dataSource數(shù)據(jù)源通過這個標(biāo)簽,可以配置鏈接數(shù)據(jù)庫的一些信息:鏈接地址,驅(qū)動,用戶名,密碼等。mappers映射器配置SQL映射文件的位置,告訴MyBatis去什么路徑下找mapper映射文件Mapper映射文件標(biāo)簽名稱標(biāo)簽作用insert映射插入語句update映射更新語句select映射查詢語句delete映射刪除語句resultMap是最復(fù)雜也是最強(qiáng)大的元素,用來描述如何從數(shù)據(jù)庫結(jié)果集中來加載對象。sql可被其他語句引用的可重用語句塊。cache給定命名空間緩存配置cache-ref起亞命名空間緩存配置的引用parameterMap參數(shù)映射,該配置現(xiàn)在已經(jīng)廢棄mapper輸入映射在增、刪、改、查配置標(biāo)簽中,有許多SQL配置是需要傳遞參數(shù)的。在MyBatis的SQL映射配置文件中,輸入?yún)?shù)屬性配置在parameterType中。對于parameterType屬性,可以配置的基本數(shù)據(jù)類型有int、double、float、short、long、byte、char、boolean,基本數(shù)據(jù)包裝類有Byte、Short、Integer、Long、Float、Double、Boolean、Character,還有Java復(fù)雜數(shù)據(jù)類型JavaBean或其他自定義的封裝類。mapper輸出映射Mapper的輸出映射有兩種配置,分別是resultType和resultMap:1.resultType除了像parameter一樣支持基本數(shù)據(jù)類型、包裝類型之外,也支持自定義包裝類。關(guān)于自定義包裝類,如果從數(shù)據(jù)庫查詢出來的列名與包裝類中的屬性名全都不一致,則不會創(chuàng)建包裝類對象,如果數(shù)據(jù)庫查詢出來的列名與包裝類中的屬性名至少有一個一致,那么就會創(chuàng)建包裝類對象。2.resultMap

元素是MyBatis中最重要最強(qiáng)大的元素。它可以讓你從90%的JDBC

ResultSets

數(shù)據(jù)提取代碼中解放出來,并在一些情形下允許你做一些JDBC不支持的事情。實(shí)際上,在對復(fù)雜語句進(jìn)行聯(lián)合映射的時(shí)候,它很可能可以代替數(shù)千行的同等功能的代碼。動態(tài)SQL示名稱作用if條件判斷choose、when類似switchtrim制定where元素的功能foreach遍歷集合在MyBatis3以后保留的元素只有4個:if、choose,when,otherwise、trim、foreach4 MyBatis高級映射一對一屬性名稱作用property映射數(shù)據(jù)庫的字段或?qū)傩?。column數(shù)據(jù)庫的列明或者列別名javaType完整的Java類名,如果時(shí)映射到JavaBean,MyBatis會自動映射,如果映射到HashMap,那你應(yīng)該明確指定javaType來確保所需行為。jdbcType這個屬性只有在增、刪、改的時(shí)候允許空的列有用,在允許為空的字段需要指定這個類型。typeHandler類型處理器,使用這個屬性可以重寫默認(rèn)處理器。它的值可以時(shí)一個typeHandler實(shí)現(xiàn)的完整類名。select通過id引用另一個映射語句。從指定的列屬性中返回值,作為參數(shù)設(shè)置給目標(biāo)select語句。表和表之間的關(guān)系時(shí)一對一的時(shí)候,我們使用”association”標(biāo)簽。一對多完成一對多映射需要一下幾個步驟:1.仔細(xì)分析表,確定好哪個表是一,哪個表是多。2.需要在單一的一方實(shí)體類上添加多的一方集合并聲稱get、set。3.寫mapper映射文件。4.最終是為了得到Users對象,所以我們需要先得到Role對象,然后在Role的返回集寫的是Users的Map集合。5.定義Map集合,然后在關(guān)聯(lián)collection集合,在把整個mapper.,xml映射文件路徑配置給sqlMapConfig.xml全局配置文件。創(chuàng)建測試類,輸出查詢結(jié)果。延遲加載在MyBatis中,延遲加載默認(rèn)是關(guān)閉的,所以說我們要想使用延遲加載需要手動打開,還記得在本章剛開始的時(shí)候講sqlMapConfig全局配置文件的時(shí)候我介紹了一個標(biāo)簽叫setting,它就是延遲加載的開關(guān)小結(jié)本章主要對MyBatis的基礎(chǔ)知識進(jìn)行了詳細(xì)講解,持久化操作是開發(fā)應(yīng)用系統(tǒng)基礎(chǔ),熟練掌握MyBatis的基礎(chǔ)知識,能夠?yàn)榭焖匍_發(fā)應(yīng)用程序打下堅(jiān)實(shí)的基礎(chǔ)。本章為大家介紹了搭建環(huán)境、配置文件、多關(guān)系映射、延遲加載,這些都是經(jīng)常應(yīng)用的技術(shù),所以要求大家必須全部掌握。上機(jī)指導(dǎo)在博客、論壇、留言等網(wǎng)站中都離不開用戶注冊模塊,其應(yīng)用十分廣泛。從程序方面來考慮,用戶注冊實(shí)質(zhì)就是對用戶信息進(jìn)行持久化的過程。對于用戶詳細(xì)信息可以將其封裝為一個實(shí)體對象,而持久化過程使用MyBatis框架進(jìn)行實(shí)現(xiàn)。第11章Spring框架01Spring概述02SpringIoC03AOP概述04Spring的切入點(diǎn)05Aspect對AOP的支持06Spring持久化1

Spring概述Spring組成Spring的配置結(jié)構(gòu)使用BeanFactory管理BeanApllicationContext接口1.ClassPathXmlApplicationContext類從當(dāng)前類路徑中檢索配置文件并加載來創(chuàng)建容器的實(shí)例,其語法格式如下:ApplicationContextcontext=newClassPathXmlApplicationContext(StringconfigLocation);configLocation參數(shù)指定Spring配置文件的名稱和位置。2.FileSystemXmlApplicationContext類該類不從類路徑中獲取配置文件,而是通過參數(shù)指定配置文件的位置。它可以獲取類路徑之外的資源,其語法格式如下:ApplicationContextcontext=newFileSystemXmlApplicationContext(StringconfigLocation);3.WebApplicationContext類WebApplicationContext是Spring的Web應(yīng)用容器,在Servlet中使用該類的方法一是在Servlet的web.xml文件中配置Spring的ContextLoaderListener監(jiān)聽器;二是修改web.xml配置文件,在其中添加一個Servlet,定義使用Spring的org.springframework.web.context.ContextLoaderServlet類。2

SpringIoC控制反轉(zhuǎn)與依賴注入什么是依賴注入?IoC將創(chuàng)建實(shí)例的任務(wù)交給IoC容器,這樣開發(fā)應(yīng)用代碼時(shí)只需要直接使用類的實(shí)例,這就是IoC控制反轉(zhuǎn),即“依賴注入”依賴注入的3種實(shí)現(xiàn)類型接口注入Setter注入構(gòu)造器注入配置Bean要在SpringIoC容器中獲取一個bean,首先要在配置文件中的<beans>元素中配置一個子元素<bean>,Spring的控制反轉(zhuǎn)機(jī)制會根據(jù)<bean>元素的配置來實(shí)例化這個bean實(shí)例。<beanid="test"class="com.mr.Test"/>Setter注入publicclassUser{privateStringname;//用戶姓名privateIntegerage;//年齡privateStringsex;//性別……//省略的Setter和Getter方法}<!--UserBean--><beanname="user"class="com.mr.user.User"><propertyname="name"><value>無語</value></property><propertyname="age"><value>30</value></property><propertyname="sex"><value>女</value></property></bean>在上面的代碼中,<value>標(biāo)簽用于為name屬性賦值,這是一個普通的賦值標(biāo)簽。直接在成對的<value>標(biāo)簽中放入數(shù)值或其他賦值標(biāo)簽,Spring會把這個標(biāo)簽提供的屬性值注入到指定的JavaBean中。構(gòu)造器注入//構(gòu)造方法publicUser(Stringname,Integerage,Stringsex){=name;this.age=age;this.sex=sex;}<!--UserBean--><beanname="user"class="com.mr.user.User"><constructor-arg><value>無語</value></constructor-arg><constructor-arg><value>30</value></constructor-arg><constructor-arg><value>女</value></constructor-arg></bean>在類被實(shí)例化時(shí)其構(gòu)造方法被調(diào)用并且只能調(diào)用一次,所以構(gòu)造器被常用于類的初始化操作。<constructor-arg>是<bean>元素的子元素,通過<constructor-arg>元素的<value>子元素可以為構(gòu)造方法傳參。引用其他Bean和創(chuàng)建匿名內(nèi)部JavaBean<beanname="/main.do"class="com.mr.main.Manager"><propertyname="user"><reflocal="user"/></property></bean><beanid="school"class="School"><propertyname="student"><beanclass="Student"/></property></bean>引用其他Bean創(chuàng)建匿名內(nèi)部JavaBean3

AOP概述什么是AOP?AspectOrientedProgramming,即面向切面編程。切面是對象操作過程中的截面AOP術(shù)語切入點(diǎn)是連接點(diǎn)的集合對象操作過程中的某個階段點(diǎn)通知是某個切入點(diǎn)被橫切后所采取的處理邏輯,即在“切入點(diǎn)”處攔截程序后通過通知來執(zhí)行切面4

Spring的切入點(diǎn)靜態(tài)與動態(tài)切入點(diǎn)靜態(tài)切入點(diǎn)動態(tài)切入點(diǎn)靜態(tài)切入點(diǎn)可以為對象的方法簽名,如在某個對象中調(diào)用了execute()方法時(shí),這個方法即靜態(tài)切入點(diǎn)靜態(tài)切入點(diǎn)只能應(yīng)用在相對不變的位置,而動態(tài)切入點(diǎn)可應(yīng)用在相對變化的位置,如方法的參數(shù)上。深入靜態(tài)切入點(diǎn)靜態(tài)切入點(diǎn)在某個方法名上織入切面,所以在織入程序代碼前要匹配方法名,即判斷當(dāng)前正在調(diào)用的方法是不是已經(jīng)定義的靜態(tài)切入點(diǎn)。如果是,說明方法匹配成功并織入切面;否則匹配失敗,不織入切面。<!--深入靜態(tài)切入點(diǎn)--><beanid="pointcutAdvisor"class="org.springframework.aop.support.RegexpMethodPointcutAdvisor"><propertyname="patterns"><list><value>.*execute.*</value><!--指定切入點(diǎn)--></list></property></bean>publicbooleanmatches(Methodmethod,ClasstargetClass){return(method.getName().equals("execute"));//匹配切入點(diǎn)成功}Spring中的其他切入點(diǎn)切入點(diǎn)實(shí)現(xiàn)類說

明org.springframework.aop.support.JdkRegexpMethodPointcutJDK正則表達(dá)式方法切入點(diǎn)org.springframework.aop.support.NameMatchMethodPointcut名稱匹配器方法切入點(diǎn)org.springframework.aop.support.StaticMethodMatcherPointcut靜態(tài)方法匹配器切入點(diǎn)org.springframework.aop.support.ControlFlowPointcut流程切入點(diǎn)org.springframework.aop.support.DynamicMethodMatcherPointcut動態(tài)方法匹配器切入點(diǎn)5

Aspect對AOP的支持Aspect概述Aspect即Spring中所說的切面,它是對象操作過程中的截面.AspectJ是Spring框架2.0版本之后增加的新特性,Spring使用了AspectJ提供的一個庫來完成切入點(diǎn)的解析和匹配。但是AOP在運(yùn)行時(shí)仍舊是純粹的SpringAOP,它并不依賴于AspectJ的編譯器或者織入器,在底層中使用的仍然是Spring2.0之前的實(shí)現(xiàn)體系。Spring中的AspectDefaultPointcutAdvisor切入點(diǎn)配置器DefaultPointcutAdvisor位于org.springframework.aop.support.DefaultPointcutAdvisor包下的默認(rèn)切入點(diǎn)通知者,它可以把一個通知配給一個切入點(diǎn),使用之前首先要創(chuàng)建一個切入點(diǎn)和通知。創(chuàng)建通知publicTestAdviceimplementsMethodInterceptor{publicObjectinvoke(MethodInvocationmi)throwsThrowable{ObjectVal=ceed();returnVal;}}創(chuàng)建切入點(diǎn)publicclassTestStaticPointcutextendsStaticMethodMatcherPointcut{publicbooleanmatches(MethodmethodClasstargetClass){return(“targetMethod”.equals(method.getName()));}publicClassFiltergetClassFilter(){returnnewClassFilter(){publicbooleanmatches(Classclazz){return(clazz==targetClass.class);}};}}6

Spring持久化DAO模式Spring提供了一套抽象的DAO類供開發(fā)人員擴(kuò)展,這有利于以統(tǒng)一的方式操作各種DAO技術(shù),DAO模式JdbcDaoSupportHibernateDAO抽象類,開發(fā)人員需要為其配置HibernateSessionFactory,通過其子類能夠獲得Hibernate實(shí)現(xiàn)HibernateDaoSupportHibernateDAO抽象類,開發(fā)人員需要為其配置HibernateSessionFactory,通過其子類能夠獲得Hibernate實(shí)現(xiàn)。JdoDaoSupportSpring為JDO提供的DAO抽象類,開發(fā)人員需要為它配置PersistenceManagerFactory,通過其子類能夠獲得JdoTemplate。事務(wù)管理Spring中的事務(wù)基于AOP實(shí)現(xiàn),而Spring的AOP以方法為單位,所以Spring的事務(wù)屬性是對事務(wù)應(yīng)用的方法的策略描述。這些屬性為傳播行為、隔離級別、只讀和超時(shí)屬性。編程式事務(wù)管理在Spring中主要有兩種編程式事務(wù)的實(shí)現(xiàn)方法,分別使用PlatformTransactionManager接口的事務(wù)管理器或TransactionTemplate實(shí)現(xiàn)。二者各有優(yōu)缺點(diǎn),推薦使用后者實(shí)現(xiàn)方式,因其符合Spring的模板模式。聲明式事務(wù)管理聲明式事務(wù)不涉及組建依賴關(guān)系,它通過AOP實(shí)現(xiàn)事務(wù)管理,在使用聲明式事務(wù)時(shí)不須編寫任何代碼即可通過實(shí)現(xiàn)基于容器的事務(wù)管理。Spring提供了一些可供選擇的輔助類,它們簡化了傳統(tǒng)的數(shù)據(jù)庫操作流程。在一定程度上節(jié)省了工作量,提高了編碼效率,所以推薦使用聲明式事務(wù)。應(yīng)用JdbcTemplate操作數(shù)據(jù)庫方法名稱說

明intQueryForInt(Stringsql)返回查詢的數(shù)量,通常是聚合函數(shù)數(shù)值intQueryForInt(Stringsql,Object[]args)longQueryForLong(Stringsql)返回查詢的信息數(shù)量longQueryForLong(Stringsql,Object[]args)ObjectqueryforObject(stringsql,ClassrequiredType)返回滿足條件的查詢對象ObjectqueryforObject(stringsql,ClassrequiredType,Object[]args)ListqueryForList(Stringsql)返回滿足條件的對象List集合ListqueryForList(Stringsql,Object[]args)JdbcTemplate類是Spring的核心類之一,可以在org.springframework.jdbc.core包中找到。該類在內(nèi)部已經(jīng)處理數(shù)據(jù)庫資源的建立和釋放,并可以避免一些常見的錯誤,如關(guān)閉連接及拋出異常等,因此使用JdbcTemplate類簡化了編寫JDBC時(shí)所需的基礎(chǔ)代碼。與Hibernate整合在Spring中整合Hibernate4時(shí),已經(jīng)不再提供HibenateTemplate和HibernateDaoSupport類了,而只有一個稱為LocalSessionFactoryBean的SessionFactoryBean,通過它可以實(shí)現(xiàn)基于注解或是XML文件來配置映射文件。與Hibernate整合#數(shù)據(jù)庫驅(qū)動hibernate.connection.driver_class=com.mysql.jdbc.Driver#數(shù)據(jù)庫連接的URLhibernate.connection.url=jdbc:mysql://localhost:3306/test#用戶名hibernate.connection.username=root#密碼hibernate.connection.password=123456與Hibernate整合<!--引入配置文件--><bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <propertyname="locations"> <value>classpath:perties</value> </property></bean><beanid="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <propertyname="driverClassName"value="${hibernate.connection.driver_class}"/> <propertyname="url"value="${hibernate.connection.url}"/> <propertyname="username"value="${hibernate.connection.username}"/> <propertyname="password"value="${hibernate.connection.password}"/></bean>引入perties文件并配置數(shù)據(jù)源dataSource與Hibernate整合<beanid="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <propertyname="dataSource"> <refbean="dataSource"/> </property> <propertyname="hibernateProperties"> <props> <!--數(shù)據(jù)庫連接方言--> <propkey="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <!--在控制臺輸出SQL語句--> <propkey="hibernate.show_sql">true</prop> <!--格式化控制臺輸出的SQL語句--> <propkey="hibernate.format_sql">true</prop> </props> </property> <!--Hibernate映射文件--> <propertyname="mappingResources"> <list> <value>com/mr/user/User.hbm.xml</value> </list> </property></bean>配置Hibernate工廠類小結(jié)本章首先介紹了Spring框架核心技術(shù)IoC、AOP、Bean的相關(guān)知識,以及對Bean的配置與裝載;然后講解了Spring提供的資

溫馨提示

  • 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

提交評論