




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第一章【思考題】1、 請(qǐng)簡述Spring框架的優(yōu)點(diǎn)。2、 請(qǐng)簡述什么是Spring的IoC和DI。【答案】1、Spring框架的優(yōu)點(diǎn)如下:(1)非侵入式設(shè)計(jì):Spring是一種非侵入式(non-invasive)框架,它可以使應(yīng)用程序代碼對(duì)框架的依賴最小化。(2)方便解耦、簡化開發(fā):Spring就是一個(gè)大工廠,可以將所有對(duì)象的創(chuàng)建和依賴關(guān)系的維護(hù)工作都交給Spring容器管理,大大的降低了組件之間的耦合性。(3)支持AOP:Spring提供了對(duì)AOP的支持,它允許將一些通用任務(wù),如安全、事務(wù)、日志等進(jìn)行集中式處理,從而提高了程序的復(fù)用性。(4)支持聲明式事務(wù)處理:只需要通過配置就可以完成對(duì)事務(wù)
2、的管理,而無需手動(dòng)編程。(5)方便程序的測(cè)試:Spring提供了對(duì)Junit4的支持,可以通過注解方便的測(cè)試Spring程序。(6)方便集成各種優(yōu)秀框架:Spring不排斥各種優(yōu)秀的開源框架,其內(nèi)部提供了對(duì)各種優(yōu)秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持。(7)降低了Java EE API的使用難度:Spring對(duì)Java EE開發(fā)中非常難用的一些API(如:JDBC、JavaMail等),都提供了封裝,使這些API應(yīng)用難度大大降低。2、IoC的全稱是Inversion of Control,中文名稱為控制反轉(zhuǎn)。控制反轉(zhuǎn)就是指在使用Spring框架
3、之后,對(duì)象的實(shí)例不再由調(diào)用者來創(chuàng)建,而是由Spring容器來創(chuàng)建,Spring容器會(huì)負(fù)責(zé)控制程序之間的關(guān)系,而不是由調(diào)用者的程序代碼直接控制。這樣,控制權(quán)由應(yīng)用代碼轉(zhuǎn)移到了Spring容器,控制權(quán)發(fā)生了反轉(zhuǎn)。DI的全稱是Dependency Injection,中文稱之為依賴注入。它與控制反轉(zhuǎn)(IoC)的含義相同,只不過這兩個(gè)稱呼是從兩個(gè)角度描述的同一個(gè)概念。從Spring容器的角度來看,Spring容器負(fù)責(zé)將被依賴對(duì)象賦值給調(diào)用者的成員變量,這相當(dāng)于為調(diào)用者注入了它依賴的實(shí)例,這就是Spring的依賴注入。第二章【思考題】1、請(qǐng)簡述Bean的生命周期。2、請(qǐng)簡述Bean的幾種裝配方式的基本用
4、法【答案】1、Bean的生命周期的整個(gè)執(zhí)行過程描述如下。(1)根據(jù)配置情況調(diào)用Bean構(gòu)造方法或工廠方法實(shí)例化Bean。(2)利用依賴注入來完成Bean中所有屬性值的配置注入。(3)如果Bean實(shí)現(xiàn)了BeanNameAware接口,則Spring調(diào)用Bean的setBeanName()方法傳入當(dāng)前Bean的id值。(4)如果Bean實(shí)現(xiàn)了BeanFactoryAware接口,則Spring調(diào)用setBeanFactory()方法傳入當(dāng)前工廠實(shí)例的引用。(5)如果Bean實(shí)現(xiàn)了ApplicationContextAware接口,則Spring調(diào)用setApplicationContext()方法
5、傳入當(dāng)前ApplicationContext實(shí)例的引用。(6)如果BeanPostProcessor和Bean關(guān)聯(lián),則Spring將調(diào)用該接口的預(yù)初始化方法postProcessBeforeInitialzation()對(duì)Bean進(jìn)行加工操作,這個(gè)非常重要,Spring的AOP就是用它實(shí)現(xiàn)的。(7)如果Bean實(shí)現(xiàn)了InitializingBean接口,則Spring將調(diào)用afterPropertiesSet()方法。 (8)如果在配置文件中通過init-method屬性指定了初始化方法,則調(diào)用該初始化方法。(9)如果有BeanPsostProcessor和Bean關(guān)聯(lián),則Spring將調(diào)用該
6、接口的初始化方法postProcessAfterInitialization()。此時(shí),Bean已經(jīng)可以被應(yīng)用系統(tǒng)使用了。(10)如果在 中指定了該Bean的作用范圍為 scope=singleton,則將該Bean 放入Spring IoC的緩存池中,將觸發(fā)Spring對(duì)該Bean的生命周期管理;如果在中指定了該Bean的作用范圍為scope=prototype,則將該Bean交給調(diào)用者,調(diào)用者管理該Bean的生命周期,Spring不再管理該Bean。(11)如果Bean實(shí)現(xiàn)了DisposableBean接口,則Spring會(huì)調(diào)用destory()方法將Spring中的Bean銷毀;如果在配
7、置文件中通過destory-method屬性指定了Bean的銷毀方法,則Spring將調(diào)用該方法進(jìn)行銷毀。2、Bean中主要包含三種裝配方式,分別為基于XML的裝配,基于Annotation的裝配和自動(dòng)裝配,這三種裝配方式的用法如下:(1)基于XML的裝配:Spring提供了2種基于XML的裝配方式:設(shè)值注入(Setter Injection)和構(gòu)造注入(Constructor Injection)。設(shè)置注入中的Bean類必須提供一個(gè)默認(rèn)的無參構(gòu)造方法,同時(shí)必須為需要注入的屬性提供對(duì)應(yīng)的setter方法。使用設(shè)值注入時(shí),在Spring配置文件中,需要使用元素的子元素來為每個(gè)屬性注入值。使用構(gòu)造
8、注入時(shí),在配置文件里,需要使用元素的子元素來定義構(gòu)造方法的參數(shù),可以使用其value屬性(或子元素)來設(shè)置該參數(shù)的值。(2)基于Annotation的裝配:使用基于Annotation的裝配時(shí),首先需要使用Repository、Service與Constroller分別對(duì)實(shí)現(xiàn)類進(jìn)行標(biāo)注,然后用Autowired或Resource注解對(duì)注入的Bean的屬性進(jìn)行標(biāo)注,最后在Spring的配置文件中,通過來開啟注解處理器,或使用的配置方式即可實(shí)現(xiàn)Annotation的裝配。(3)自動(dòng)裝配:在元素中使用autowire屬性,并將其屬性值設(shè)置為byName或者byType即可實(shí)現(xiàn)自動(dòng)裝配。第三章【思考題
9、】1、請(qǐng)列舉你所知道的AOP專業(yè)術(shù)語并解釋。2、請(qǐng)列舉你所知道的Spring的通知類型并解釋。 【答案】1、AOP的專業(yè)術(shù)語包括Aspect、Joinpoint、Pointcut、Advice、Target Object、Proxy和Weaving,對(duì)于這些專業(yè)術(shù)語的解釋,具體如下:(1)Aspect(切面):在實(shí)際應(yīng)用中,切面通常是指封裝的用于橫向插入系統(tǒng)功能(如事務(wù)、日志等)的類,如圖3-1中的Aspect。該類要被Spring容器識(shí)別為切面,需要在配置文件中通過元素指定。(2)Joinpoint(連接點(diǎn)):在程序執(zhí)行過程中的某個(gè)階段點(diǎn),它實(shí)際上是對(duì)象的一個(gè)操作,例如方法的調(diào)用或異常的拋出
10、。在Spring AOP中,連接點(diǎn)就是指方法的調(diào)用。(3)Pointcut(切入點(diǎn)):是指切面與程序流程的交叉點(diǎn),即那些需要處理的連接點(diǎn),如圖3-2所示。通常在程序中,切入點(diǎn)指的是類或者方法名,如某個(gè)通知要應(yīng)用到所有以add開頭的方法中,那么所有滿足這一規(guī)則的方法都是切入點(diǎn)。(4)Advice(通知/增強(qiáng)處理):AOP框架在特定的切入點(diǎn)執(zhí)行的增強(qiáng)處理,即在定義好的切入點(diǎn)處所要執(zhí)行的程序代碼??梢詫⑵淅斫鉃榍忻骖愔械姆椒ǎ乔忻娴木唧w實(shí)現(xiàn)。(5)Target Object(目標(biāo)對(duì)象):是指所有被通知的對(duì)象,也被稱為被增強(qiáng)對(duì)象。如果AOP框架采用的是動(dòng)態(tài)的AOP實(shí)現(xiàn),那么該對(duì)象就是一個(gè)被代理對(duì)象
11、。(6)Proxy(代理):將通知應(yīng)用到目標(biāo)對(duì)象之后,被動(dòng)態(tài)創(chuàng)建的對(duì)象。(7)Weaving(織入):將切面代碼插入到目標(biāo)對(duì)象上,從而生成代理對(duì)象的過程。2、Spring中的通知按照在目標(biāo)類方法的連接點(diǎn)位置,可以分為以下5種類型:(1)ercept.MethodInterceptor(環(huán)繞通知)在目標(biāo)方法執(zhí)行前后實(shí)施增強(qiáng),可以應(yīng)用于日志、事務(wù)管理等功能。(2)org.springframework.aop.MethodBeforeAdvice(前置通知)在目標(biāo)方法執(zhí)行前實(shí)施增強(qiáng),可以應(yīng)用于權(quán)限管理等功能。(3)org.springframework.aop
12、.AfterReturningAdvice(后置通知)在目標(biāo)方法執(zhí)行后實(shí)施增強(qiáng),可以應(yīng)用于關(guān)閉流、上傳文件、刪除臨時(shí)文件等功能。(4)org.springframework.aop.ThrowsAdvice(異常通知)在方法拋出異常后實(shí)施增強(qiáng),可以應(yīng)用于處理異常記錄日志等功能。(5)org.springframework.aop.IntroductionInterceptor(引介通知)在目標(biāo)類中添加一些新的方法和屬性,可以應(yīng)用于修改老版本程序(增強(qiáng)類)第四章【思考題】1、請(qǐng)簡述Spring JDBC是如何進(jìn)行配置的。2、請(qǐng)簡述Spring JdbcTemplate類中幾個(gè)常用方法的作用?!敬?/p>
13、案】1、在Spring的配置文件中配置JDBC時(shí),需要定義了三個(gè)Bean,分別是dataSource、jdbcTemplate和需要注入類的Bean。在定義jdbcTemplate時(shí),需要將dataSource注入到j(luò)dbcTemplate中,而其他需要使用jdbcTemplate的Bean,也需要將jdbcTemplate注入到該Bean中,這樣配置完成后,Spring JDBC就可以使用了。2、在JdbcTemplate類中,提供了大量的更新和查詢數(shù)據(jù)庫的方法,我們就是使用的這些方法來操作數(shù)據(jù)庫的,其常用的方法包括execute()、update()和query()。其中execute()
14、方法能夠完成執(zhí)行SQL語句的功能,update()方法可以完成插入、更新和刪除數(shù)據(jù)的操作,query()方法可以用來處理各種對(duì)數(shù)據(jù)庫表的查詢操作。第五章【思考題】1、請(qǐng)簡述Spring中事務(wù)管理的兩種方式。2、請(qǐng)簡述如何使用Annotation方式進(jìn)行聲明式事務(wù)管理?!敬鸢浮?、Spring中的事務(wù)管理分為兩種方式:一種是傳統(tǒng)的編程式事務(wù)管理,另一種是聲明式事務(wù)管理。其中,編程式事務(wù)管理是通過編寫代碼實(shí)現(xiàn)的事務(wù)管理,包括定義事務(wù)的開始、正常執(zhí)行后的事務(wù)提交和異常時(shí)的事務(wù)回滾。聲明式事務(wù)管理是通過AOP技術(shù)實(shí)現(xiàn)的事務(wù)管理,其主要思想是將事務(wù)管理作為一個(gè)“切面”代碼單獨(dú)編寫,然后通過AOP技術(shù)將事
15、務(wù)管理的“切面”代碼植入到業(yè)務(wù)目標(biāo)類中。聲明式事務(wù)管理最大的優(yōu)點(diǎn)在于開發(fā)者無需通過編程的方式來管理事務(wù),只需在配置文件中進(jìn)行相關(guān)的事務(wù)規(guī)則聲明,就可以將事務(wù)規(guī)則應(yīng)用到業(yè)務(wù)邏輯中。這使得開發(fā)人員可以更加專注于核心業(yè)務(wù)邏輯代碼的編寫,在一定程度上減少了工作量,提高了開發(fā)效率。2、Spring的聲明式事務(wù)管理通過Annotation(注解)方式來實(shí)現(xiàn)時(shí),開發(fā)者只需做兩件事情:1)在Spring容器中注冊(cè)事務(wù)注解驅(qū)動(dòng),其代碼如下:2)在需要使用事務(wù)的Spring Bean類或者Bean類的方法上添加注解Transactional。如果將注解添加在Bean類上,則表示事務(wù)的設(shè)置對(duì)整個(gè)Bean類的所有方法
16、都起作用;如果將注解添加在Bean類中的某個(gè)方法上,則表示事務(wù)的設(shè)置只對(duì)該方法有效。第六章【思考題】1、請(qǐng)簡述MyBatis框架與Hibernate框架的區(qū)別。2、請(qǐng)簡述MyBatis的工作執(zhí)行流程?!敬鸢浮?、Hibernate和MyBatis。這兩個(gè)框架的主要區(qū)別如下:(1)Hibernate:是一個(gè)全表映射的框架。通常開發(fā)者只需定義好持久化對(duì)象到數(shù)據(jù)庫表的映射關(guān)系,就可以通過Hibernate提供的方法完成持久層操作。開發(fā)者并不需要熟練的掌握SQL語句的編寫,Hibernate會(huì)根據(jù)制定的存儲(chǔ)邏輯,自動(dòng)的生成對(duì)應(yīng)的SQL,并調(diào)用JDBC接口來執(zhí)行,所以其開發(fā)效率會(huì)高于MyBatis。然而
17、Hibernate自身也存在著一些缺點(diǎn),例如它在多表關(guān)聯(lián)時(shí),對(duì)SQL查詢的支持較差;更新數(shù)據(jù)時(shí),需要發(fā)送所有字段;不支持存儲(chǔ)過程;不能通過優(yōu)化SQL來優(yōu)化性能等。這些問題導(dǎo)致其只適合在場(chǎng)景不太復(fù)雜且對(duì)性能要求不高的項(xiàng)目中使用。(2)MyBatis:是一個(gè)半自動(dòng)映射的框架。這里所謂的“半自動(dòng)”是相對(duì)于Hibernate全表映射而言的,MyBatis需要手動(dòng)匹配提供POJO、SQL和映射關(guān)系,而Hibernate只需提供POJO和映射關(guān)系即可。與Hibernate相比,雖然使用MyBatis手動(dòng)編寫SQL要比使用Hibernate的工作量大,但MyBatis可以配置動(dòng)態(tài)SQL并優(yōu)化SQL,可以通過
18、配置決定SQL的映射規(guī)則,它還支持存儲(chǔ)過程等。對(duì)于一些復(fù)雜的和需要優(yōu)化性能的項(xiàng)目來說,顯然使用MyBatis更加合適。2、MyBatis框架的工作執(zhí)行流程如下:(1)讀取MyBatis配置文件mybatis-config.xml。(2)加載映射文件Mapper.xml。(3)構(gòu)建會(huì)話工廠。(4)創(chuàng)建SqlSession對(duì)象。(5)使用Executor接口來操作數(shù)據(jù)庫。(6)使用MappedStatement類型的參數(shù)對(duì)映射信息進(jìn)行封裝。(7)輸入?yún)?shù)映射。(8)輸出結(jié)果映射。第七章【思考題】1、請(qǐng)簡述MyBatis核心對(duì)象SqlSessionFactory的獲取方式。2、請(qǐng)簡述MyBatis映
19、射文件中的主要元素及其作用?!敬鸢浮?、SqlSessionFactory對(duì)象的實(shí)例可以通過SqlSessionFactoryBuilder對(duì)象來構(gòu)建,而SqlSessionFactoryBuilder則可以通過XML配置文件或一個(gè)預(yù)先定義好的Configuration實(shí)例構(gòu)建出SqlSessionFactory的實(shí)例,通過XML配置文件構(gòu)建出的SqlSessionFactory實(shí)例,其實(shí)現(xiàn)代碼如下:/ 讀取配置文件InputStream inputStream = Resources.getResourceAsStream(配置文件位置);/ 根據(jù)配置文件構(gòu)建SqlSessionFactor
20、ySqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);2、在映射文件中,元素是映射文件的根元素,其他元素都是它的子元素。這些子元素及其作用如下所示:用于映射查詢語句,可自定義參數(shù),返回結(jié)果集等。:用于映射插入語句,執(zhí)行后返回一個(gè)整數(shù),代表插入的條數(shù)。:用于映射更新語句,執(zhí)行后返回一個(gè)整數(shù),代表更新的條數(shù)。:用于映射刪除語句,執(zhí)行后返回一個(gè)整數(shù),代表刪除的條數(shù)。:用于定義一部分SQL,然后可被其他語句引用此SQL。:用于給定命名空間的緩存配置。:用于其他命名空間緩存配置的引
21、用。:用于描述如何從數(shù)據(jù)庫結(jié)果集中來加載對(duì)象。第八章【思考題】1、請(qǐng)簡述MyBatis框架動(dòng)態(tài)SQL中的主要元素及其作用。2、請(qǐng)簡述MyBatis框架動(dòng)態(tài)SQL中元素collection屬性的注意事項(xiàng)。【答案】1、MyBatis動(dòng)態(tài)SQL中的主要元素及其作用如下:(1)元素:用于判斷語句,用于單條件分支判斷。(2)(、)元素:相當(dāng)于Java中的switch.case.default語句,用于多條件分支判斷。(3)、元素:輔助元素,用于處理一些SQL拼裝、特殊字符問題。(4)元素:循環(huán)語句,常用于in語句等列舉條件中。(5)元素:從OGNL表達(dá)式中創(chuàng)建一個(gè)變量,并將其綁定到上下文,常用于模糊查詢
22、的sql中。2、在使用時(shí),collection屬性是必須指定的,而且在不同情況下,該屬性的值是不一樣的。主要有以下3種情況:(1)如果傳入的是單參數(shù)且參數(shù)類型是一個(gè)數(shù)組或者List的時(shí)候,collection屬性值分別為array和list(或collection);(2)如果傳入的參數(shù)是多個(gè)的時(shí)候,就需要把它們封裝成一個(gè)Map了,當(dāng)然單參數(shù)也可以封裝成Map集合,這時(shí)候collection屬性值就為Map的鍵。(3)如果傳入的參數(shù)是POJO包裝類的時(shí)候,collection屬性值就為該包裝類中需要進(jìn)行遍歷的數(shù)組或集合的屬性名。所以在設(shè)置collection屬性值的時(shí)候,必須按照實(shí)際情況配置,
23、否則程序就會(huì)出現(xiàn)異常。第九章【思考題】1、請(qǐng)簡述不同對(duì)象之間的三種關(guān)聯(lián)關(guān)系。2、請(qǐng)簡述MyBatis關(guān)聯(lián)查詢映射的兩種處理方式?!敬鸢浮?、在java中,對(duì)象之間存在著三種關(guān)聯(lián)關(guān)系,分別是一對(duì)一,一對(duì)多和多對(duì)多。在這三種關(guān)聯(lián)關(guān)系中,一對(duì)一的關(guān)系就是在本類中定義對(duì)方類型的對(duì)象,如A類中定義B類類型的屬性b,B類中定義A類類型的屬性a;一對(duì)多的關(guān)系就是一個(gè)A類類型對(duì)應(yīng)多個(gè)B類類型的情況,需要在A類中以集合的方式引入B類類型的對(duì)象,在B類中定義A類類型的屬性a;多對(duì)多的關(guān)系就是在A類中定義B類類型的集合,在B類中定義A類類型的集合。2、MyBatis在映射文件中加載關(guān)聯(lián)關(guān)系對(duì)象主要通過兩種方式:嵌套
24、查詢和嵌套結(jié)果。嵌套查詢是指通過執(zhí)行另外一條SQL映射語句來返回預(yù)期的復(fù)雜類型;嵌套結(jié)果是使用嵌套結(jié)果映射來處理重復(fù)的聯(lián)合結(jié)果的子集。開發(fā)人員可以使用上述任意一種方式實(shí)現(xiàn)對(duì)關(guān)聯(lián)關(guān)系的加載。第十章【思考題】1、 請(qǐng)簡述MyBatis與Spring整合所需JAR包的種類。2、 請(qǐng)簡述MapperFactoryBean和MapperScannerConfigurer的作用?!敬鸢浮?、MyBatis與Spring整合所需JAR包主要包括:Spring框架所需的JAR包、MyBatis框架所需的JAR包、MyBatis與Spring整合的中間JAR、數(shù)據(jù)庫驅(qū)動(dòng)JAR包,以及數(shù)據(jù)源所需的JAR包。2、M
25、apperFactoryBean是MyBatis-Spring團(tuán)隊(duì)提供的一個(gè)用于根據(jù)Mapper接口生成Mapper對(duì)象的類,通過MapperFactoryBean可以配置接口文件以及注入SqlSessionfactory,從而完成一個(gè)Bean的實(shí)例化。MapperScannerConfigurer是MyBatis-Spring團(tuán)隊(duì)提供的一種用于以自動(dòng)掃描形式來配置MyBatis中映射器的類,可以通過配置包路徑來自動(dòng)掃描包接口生成映射器,這使得開發(fā)人員可以在編寫很少代碼的情況下,完成對(duì)映射器的配置,從而提高開發(fā)效率。第十一章【思考題】1、請(qǐng)簡述Spring MVC框架的優(yōu)點(diǎn)。2、請(qǐng)簡述Spri
26、ng MVC框架的工作執(zhí)行流程?!敬鸢浮?、Spring MVC主要有如下優(yōu)點(diǎn):(1)是Spring框架的一部分,可以方便的利用Spring所提供的其他功能。(2)靈活性強(qiáng),易于與其他框架集成。(3)提供了一個(gè)前端控制器DispatcherServlet,使開發(fā)人員無需額外開發(fā)控制器對(duì)象。(4)可自動(dòng)綁定用戶輸入,并能正確的轉(zhuǎn)換數(shù)據(jù)類型。(5)內(nèi)置了常見的校驗(yàn)器,可以校驗(yàn)用戶輸入。如果校驗(yàn)不能通過,那么就會(huì)重定向到輸入表單。(6)支持國際化??梢愿鶕?jù)用戶區(qū)域顯示多國語言。(7)支持多種視圖技術(shù)。它支持JSP、Velocity和FreeMarker等視圖技術(shù)。(8)使用基于XML的配置文件,在編
27、輯后,不需要重新編譯應(yīng)用程序。2、Spring MVC框架的工作流程如下:(1)用戶通過瀏覽器向服務(wù)器發(fā)送請(qǐng)求,請(qǐng)求會(huì)被Spring MVC的前端控制器DispatcherServlet所攔截。(2)DispatcherServlet攔截到請(qǐng)求后,會(huì)調(diào)用HandlerMapping處理器映射器。(3)處理器映射器根據(jù)請(qǐng)求URL找到具體的處理器,生成處理器對(duì)象及處理器攔截器(如果有則生成)一并返回給DispatcherServlet。(4)DispatcherServlet會(huì)通過返回信息選擇合適的HandlerAdapter(處理器適配器)。(5)HandlerAdapter會(huì)調(diào)用并執(zhí)行Hand
28、ler(處理器),這里的處理器指的就是程序中編寫的Controller類,也被稱之為后端控制器。(6)Controller執(zhí)行完成后,會(huì)返回一個(gè)ModelAndView對(duì)象,該對(duì)象中會(huì)包含視圖名或包含模型和視圖名。(7)HandlerAdapter將ModelAndView對(duì)象返回給DispatcherServlet。(8)DispatcherServlet會(huì)根據(jù)ModelAndView對(duì)象選擇一個(gè)合適的ViewReslover(視圖解析器)。(9)ViewReslover解析后,會(huì)向DispatcherServlet中返回具體的View(視圖)。(10)DispatcherServlet對(duì)V
29、iew進(jìn)行渲染(即將模型數(shù)據(jù)填充至視圖中)。(11)視圖渲染結(jié)果會(huì)返回給客戶端瀏覽器顯示。第十二章【思考題】1、請(qǐng)簡述Controller注解的使用步驟。2、請(qǐng)列舉請(qǐng)求處理方法的參數(shù)類型和返回類型(至少5個(gè))?!敬鸢浮?、Controller注解在使用時(shí)可分為如下兩步:(1)在相應(yīng)的類上標(biāo)注Controller注解。(2)在Spring MVC的配置文件中添加相應(yīng)的掃描配置信息。首先需要在配置文件中引入context名稱空間的配置,然后使用元素指定需要掃描的類包。2、請(qǐng)求處理方法的參數(shù)類型主要有:HttpServletRequest、HttpServletResponse、HttpSessio
30、n、Model、HttpMethod等;請(qǐng)求處理方法的返回類型主要有:ModelAndView、Map、String、void、HttpEntity、View等。第十三章【思考題】1、請(qǐng)簡述簡單數(shù)據(jù)類型中的RequestParam注解及其屬性作用。2、請(qǐng)簡述包裝POJO類型綁定時(shí)的注意事項(xiàng)。 【答案】1、RequestParam注解主要用于對(duì)請(qǐng)求中的參數(shù)進(jìn)行定義,多用于在請(qǐng)求參數(shù)名與方法形參名不一致時(shí)的參數(shù)間接綁定。在使用時(shí)可以指定他的4個(gè)屬性,具體如下:(1)value:name屬性的別名,這里指參數(shù)的名字,即入?yún)⒌恼?qǐng)求參數(shù)名字,如果只使用vaule屬性,則可以省略value屬性名。(2)n
31、ame:用于指定請(qǐng)求頭綁定的名稱。(3)required:用于指定參數(shù)是否必須,默認(rèn)是true,表示請(qǐng)求中一定要有相應(yīng)的參數(shù)。(4)defaultValue:默認(rèn)值,表示如果請(qǐng)求中沒有同名參數(shù)時(shí)的默認(rèn)值。2、在使用包裝POJO類型數(shù)據(jù)綁定時(shí),前端請(qǐng)求的參數(shù)名編寫必須符合以下兩種情況:(1)如果查詢條件參數(shù)是包裝類的直接基本屬性,則參數(shù)名直接用對(duì)應(yīng)的屬性名,如上面代碼中的ordersId;(2)如果查詢條件參數(shù)是包裝類中POJO的子屬性,則參數(shù)名必須為“對(duì)象.屬性”,其中“對(duì)象”要和包裝POJO中的對(duì)象屬性名稱一致,“屬性”要和包裝POJO中的對(duì)象子屬性一致。第十四章【思考題】1、請(qǐng)簡述JSON
32、數(shù)據(jù)交互兩個(gè)注解的作用。2、請(qǐng)簡述靜態(tài)資源訪問的幾種配置方式?!敬鸢浮?、JSON數(shù)據(jù)交互時(shí),主要使用了兩個(gè)注解RequestBody和ResponseBody。其中RequestBody用于將請(qǐng)求體中的數(shù)據(jù)綁定到方法的形參中,在使用時(shí)標(biāo)準(zhǔn)在在方法的形參上。ResponseBody用于直接返回return對(duì)象,在使用時(shí)標(biāo)準(zhǔn)在方法上。2、靜態(tài)資源訪問的配置有3種方式,分別如下:1)使用元素用于配置靜態(tài)資源的訪問路徑。2)使用標(biāo)簽,可以訪問所有靜態(tài)資源。3)激活Tomcat默認(rèn)的Servlet來處理靜態(tài)文件訪問。第十五章【思考題】1、請(qǐng)簡述Spring MVC攔截器的定義方式。2、請(qǐng)簡述單個(gè)攔截器
33、和多個(gè)攔截器的執(zhí)行流程。【答案】1、通常攔截器類可以通過兩種方式來定義。一種是通過實(shí)現(xiàn)HandlerInterceptor接口,或繼承HandlerInterceptor接口的實(shí)現(xiàn)類(如HandlerInterceptorAdapter)來定義;另一種是通過實(shí)現(xiàn)WebRequestInterceptor接口,或繼承WebRequestInterceptor接口的實(shí)現(xiàn)類來定義。2、單個(gè)攔截器在執(zhí)行時(shí),程序首先會(huì)執(zhí)行攔截器類中的preHandle()方法,如果該方法的返回值為true,則程序會(huì)繼續(xù)向下執(zhí)行處理器中的方法,否則將不再向下執(zhí)行;在業(yè)務(wù)處理器(即控制器Controller類)處理完請(qǐng)求后
34、,會(huì)執(zhí)行postHandle()方法,然后會(huì)通過DispatcherServlet向客戶端返回響應(yīng);在DispatcherServlet處理完請(qǐng)求后,才會(huì)執(zhí)行afterCompletion()方法。當(dāng)有多個(gè)攔截器同時(shí)工作時(shí),它們的preHandle()方法會(huì)按照配置文件中攔截器的配置順序執(zhí)行,而它們的postHandle()方法和afterCompletion()方法則會(huì)按照配置順序的反序執(zhí)行。第十六章【思考題】1、請(qǐng)簡述上傳表單需要滿足的3個(gè)條件。2、請(qǐng)簡述如何解決中文文件名稱下載時(shí)的亂碼問題?!敬鸢浮?、文件上傳表單需要滿足的3個(gè)條件如下:(1)form表單的method屬性設(shè)置為post;(2)form表單的enctype屬性設(shè)置為multipart/form-data;(3)提供的文件上傳輸入框。2、解決中文文件名稱下載時(shí)的亂碼問題,需要從前端頁面發(fā)送請(qǐng)求前先對(duì)中文名進(jìn)行統(tǒng)一編碼,然后在后臺(tái)控制器類中對(duì)文件名稱進(jìn)行相應(yīng)的轉(zhuǎn)碼。在具體實(shí)現(xiàn)時(shí)可分為如下兩步:(1)在下載
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教陜西 九年級(jí) 下冊(cè) 語文 第五單元《 天下第一樓(節(jié)選)》習(xí)題課 課件
- 人教陜西 九年級(jí) 下冊(cè) 語文 第四單元《 口語交際》習(xí)題課 課件
- 銀行新營銷課件
- 針灸治療痹癥
- 平頂山市學(xué)年第二學(xué)期期末調(diào)研考試高一語文測(cè)試題
- 勞動(dòng)合同范例80
- 余快遞合作合同范例
- 出釜合同范例
- 公司食堂外包合同范例
- 勞務(wù)提成合同范例
- 靜脈留置針的護(hù)理課件
- JGJT163-城市夜景照明設(shè)計(jì)標(biāo)準(zhǔn)-修訂征求意見稿
- 《經(jīng)濟(jì)管理(2024年版)》 自學(xué)考試 習(xí)題及解答
- 中電聯(lián)團(tuán)體標(biāo)準(zhǔn)架空輸電線路螺旋錨基礎(chǔ)工程技術(shù)規(guī)范
- DL-T5181-2017水電水利工程錨噴支護(hù)施工規(guī)范
- 語文-北京市朝陽區(qū)2024屆高三二模試題和答案
- 壓力管道使用登記工作程序
- 食堂食品安全管理臺(tái)賬及相關(guān)制度培訓(xùn)
- 密碼學(xué)基礎(chǔ)完整版本
- 藥物臨床試驗(yàn)機(jī)構(gòu)CRC考核試題及答案
- 2024年貴州蔬菜集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
評(píng)論
0/150
提交評(píng)論