




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
一、Spring框架的)長處均有什么?
Spring是分層的架構(gòu),你可以選擇使用你需要的層而不用管不需要的部分
Spring是POJO編程,POJO編程使得可持續(xù)構(gòu)建和可測試能力提高
依賴注入和【oC使得JDBC操作簡樸化
Spring是開源的免費(fèi)的
Spring使得對象管理集中化合簡樸化
二、描述一下Spring中實(shí)現(xiàn)DI(DependencyInjection)H勺幾種方式
方式一:接口注入,在實(shí)際中得到了普遍應(yīng)用,雖然在IOC的概念尚未確立時(shí),這樣的措施
也已經(jīng)頻繁出目前我們的代碼中。
方式二:Type2IoC:Setterinjec:ion對象創(chuàng)立之后,將被依賴對象通過set措施設(shè)置進(jìn)去
方式三:Type3IoC:Constructorinjection對象創(chuàng)立時(shí),被依賴對象以構(gòu)造措施參數(shù)口勺方式注
入
Spring的方式
三、簡述你對IoC(InversionofControl)的理解
一種類需要用到某個(gè)接口的措施,我們需要將類A和接口BH勺實(shí)現(xiàn)關(guān)聯(lián)起來,最簡樸的措施
是類A中創(chuàng)立一種對于接口BH勺實(shí)現(xiàn)C的實(shí)例,但這種措施顯然兩者的依賴(Dependency)
太大了。而IoC的措施是只在類A中定義好用于關(guān)聯(lián)接口B的實(shí)現(xiàn)的措施,將類A,接口B
和接口B的實(shí)現(xiàn)C放入IoC的容器(Container)中,通過一定的配置由容器(Container)
來實(shí)現(xiàn)類A與接口B的實(shí)現(xiàn)C的關(guān)聯(lián)。
四、Spring對多種ORM框架提供了很好口勺支持,簡樸描述在Spring中使用Hibernate的措
施。
在context中定義DataSource,創(chuàng)立SessionFactoy,設(shè)置參數(shù):DAO類繼承
HihernateDaoSupport,實(shí)現(xiàn)詳細(xì)接口,從中獲得HibernateTeniplate進(jìn)行詳細(xì)操作。在使用中
假如碰至ljOpcnScssionlnVicw歐1問題,可以添力口OpcnScssionInVicwFiltcr或
OpenSessionlnViewInterceptor
五、請簡介一下Spring的事務(wù)管理
spring提供了幾種有關(guān)事務(wù)處理的類:
TransactionDcfinition〃事務(wù)屬性定義
TranscaiionStatus//代表了目前的事務(wù),可以提交,回滾。
PlaifonnTransaciionManagcr這個(gè)是spring提供的I用于管理事務(wù)小J基礎(chǔ)接口,其下有一種實(shí)現(xiàn)
歐J抽象類AbstractPlatformTransactionNdanager,我們使用H勺事務(wù)管理類例如
DataSourceTransactionManager等都是這個(gè)類的了?類。
一般事務(wù)定義環(huán)節(jié):
TransactionDefinitiontd=newTransactionDefinition();
TransactionStatusts=transacticnManager.getTiansaction(td);
iry
{//dosth
transactionMmit(ts);
}
catch(Exceptione){transactionManager.rollback(ts);)
spring提供的事務(wù)管理可以分為兩類:編程式的和中明式的。編程式的,比較靈活,不過代碼
量大,存在反復(fù)的代碼比較多;申明式的比編程式的更靈活。
編程式重要使用IransaciionTcmpIaie。省略了部分H勺提交,回滾,一系列的事務(wù)對象定義,需
注入事務(wù)管理對象.
voidadd()
(
tninsactionTemplate.execute(newTransactionCallback()(
pulicObjectdoInTransaciion(TransactionStaiusts)
{//dosth}
}
申明式:
使用TransactionProxyFactoryBean:
PROPAGATION_REQUIREDPROPAGATION_REQUIRED
PROPAGATION_REQUIRED,readOnly
圍繞Poxy的動(dòng)態(tài)代理可以自動(dòng)的提交和回滾事務(wù)
erceptor.TransactionProxyFactoryBean
PROPAGATION一REQUIRED-支持目前事務(wù),假如目前沒有事務(wù),就新建一種事務(wù)。這是最
常見H勺選擇。
PROPAGATION_SUPPORTS-支持目前事務(wù),假如目前沒有事務(wù),就以非事務(wù)方式執(zhí)行。
PRQPAGATION_MANDATORY-支持目前事務(wù),假如目前沒有事務(wù),就拋出異常。
PROPAGATION_REQUIRES_NEW-新建事務(wù),假如目前存在事務(wù),把目前事務(wù)掛起。
PROPAGATION_NOT_SUPPORTED-以非事務(wù)方.式執(zhí)行操作,假如目前存在事務(wù),就把目
前事務(wù)掛起。
PROPAGATION_NEVER-以非事務(wù)方式執(zhí)行,假如目前存在事務(wù),則拋出異常
PROPAGATION_NESTED-假如目前存在事務(wù),則在嵌套事務(wù)內(nèi)執(zhí)行。假如目前沒有事務(wù),
則進(jìn)行與PROPAGATION_REQUIRED類似的操作。
六、怎樣在SpringH勺applicationContext.xml里面使用JNDI而穴是datasource?
可以使用“org.springframework.jndi.JndiObjectFactoryBean”來實(shí)現(xiàn)。示例如卜:
<beanid="dataSource”>
(propertyname="jndiName”>
<value'>java:comp/cnv/jdbc/appfuse</value'>
</property>
</bean>
七、Spring里面怎樣配置數(shù)據(jù)庫驅(qū)動(dòng)?
使用org.springframework.jdbc.datasource.DriverManagerDataSource"數(shù)據(jù)源來配置數(shù)據(jù)庫驅(qū)
動(dòng)。示例如下:
<beanid="dataSource">
<propertyname="driverClassName”>
<value>org.hsqldb.jdbcDriver</value>
</property>
〈properlyname="urlM>
<value>jdbc:hsqldb:db/appfuse</value>
〈/property〉
<propertyname=Musername"><value>sa</value></property>
〈propertyname="passwordM><value></value></property>
</bean>
八、Spring里面applicaiionContext.xml文獻(xiàn)能不能改成其他文獻(xiàn)名?
ContextLoaderListener是一種ServlelContextListener,它在你的web應(yīng)用啟動(dòng)的時(shí)候初始化。
缺省狀況下,它會(huì)在WEB-INF/applicationContext.xnil文獻(xiàn)找SpringFf、J配置。你可以通過
定義一種vcontext-param>元素名字為“contextConfigLocationv來變化Spring配置文獻(xiàn)的位
留。示例如下:
<listener>
<listcncr-class>org.springframework.web.contcxt.ContcxtLoadcrListcner
<context-param>
<param-name>contextConfigLocation</param-nanie>
<param-value>/WEB-INF/xyz.xml</param-value>
</context-param>
</listcncr-class>
〈/listener〉
九、怎樣在web應(yīng)用里面配置spring?
在J2EE的web應(yīng)用里面配置spring非常簡樸,最簡樸的只需要把spring得
ContextLoaderListener添加到你口勺web.xml文獻(xiàn)里面就可以了,示例如下:
<listener>
<listcncr-class>org.springframcwork.wcb.contcxt.ContcxtLoadcrListcncr</listcncr-class>
</listener>
十、Spring里面怎樣定義hibernatemapping?
添加hibernatemapping文獻(xiàn)到web/WEB-INF目錄下H勺applicationContext.xml文獻(xiàn)里面。示
例如下:
<propcrtynamc="mappingRcsourccsv>
<list>
<valuc>org/appfusc/modcl/Uscr.hbm.xmI</valuc>
</Iist>
</property>
十一、兩種依賴注入H勺類型都是什么?
兩種依賴注入H勺類型分別是setter注入和構(gòu)造措施注入。
setter注入:一般狀況下所有H'、Jjavabean,我們都會(huì)使用setter措施和getter措施去設(shè)置和獲
取屬性的值,示例如下:
publicclassnaniebean{
Stringname;
publicvoidsctNamc(Stringa){
name=a;}
publicStringgetName(){
returnname;}
1
我們會(huì)創(chuàng)立?種bean的實(shí)例然后設(shè)置屬性的值.springH勺配置文獻(xiàn)如下:
<bcanid="beanI?/>
〈propertyname="name">
<value>tom</value>
々property〉
</bean>
Spring會(huì)調(diào)用setName措施來只是name熟悉為tom
構(gòu)造措施注入:構(gòu)造措施注入中,我們使用帶參數(shù)的構(gòu)造措施如下:
publicclassnamebean{
Stringname;
publicnamebean(Stringa){
name=a;
)
)
我們會(huì)在創(chuàng)立bean實(shí)例的時(shí)候以newnanicbcan("lom")的方式來設(shè)置name屬性,Spring配
置文獻(xiàn)如下:
<beanid="beanI">
<constructor-arg>
<value>MyBeanValue</value>
</constructor-arg>
</bcan>
使用constructor-arg標(biāo)簽來設(shè)置構(gòu)造措施的參數(shù)。
十二、解釋一下Dependencyinjeclion(DI,依賴注入)和IOC(Inversionofcontrol,控制反轉(zhuǎn))?
參照答案:依賴注入DI是一種程序設(shè)計(jì)模式和架構(gòu)模型,某些時(shí)候也稱作控制反轉(zhuǎn).盡管
在技術(shù)上來講,依賴注入是一種IOCH勺特殊實(shí)現(xiàn),依賴注入是指一種對象應(yīng)用此外一種對象
來提供一種特殊的能力,例如:把一種數(shù)據(jù)庫連接己參數(shù)口勺形式傳到一種對象的構(gòu)造措施里
面而不是在那個(gè)對象內(nèi)部自行創(chuàng)?種連接.控制反轉(zhuǎn)和依賴注入的基本思相就是把類的依
賴從類內(nèi)部轉(zhuǎn)化到外部以減少依賴
應(yīng)用控制反轉(zhuǎn),對象在被創(chuàng)立的時(shí)候,由一種調(diào)控系統(tǒng)內(nèi)所有對象的外界實(shí)體,將其所依賴
的對象的引用,傳遞給它。也可以說,依賴被注入到對象中。因比,控制反轉(zhuǎn)是,有關(guān)一種對
象怎樣獲取他所依賴H勺對象的引用,這個(gè)責(zé)任的反轉(zhuǎn)。
十三、spring中的IBeanFactor)r與Applicationcontext的作用和區(qū)別?
作用:
LDcanPactory負(fù)責(zé)讀取bean配置文檔,管理bean日勺加載,實(shí)例化,維獷bean之間的依賴大
系,負(fù)責(zé)bean的申明周期。
2./XpplicationContext除了提供上述BcanFactory所能提供H勺功能之外,還提供了更完整的框
架功能:
a.國際化支持
b.資源訪問:Resourcers=ctx.getResource("classpath:perties"),
“file:c:/perties”
c.事件傳遞:通過實(shí)現(xiàn)ApplicationContextAware接口
3.常用H勺獲取ApplicationContext的措施:
FilcSystcinXmlApplicacionConlcxt:從文獻(xiàn)系統(tǒng)或者url指定的xml配置文獻(xiàn)創(chuàng)立,參數(shù)為配
置文獻(xiàn)名或文獻(xiàn)名數(shù)組
ClassPathXnilApplicationConteKt:從classpath的xml配置文獻(xiàn)創(chuàng)立,可以從jar包中讀取配
置文獻(xiàn)
WebApplicationContextUtils:從web應(yīng)用的根目錄讀取配置文獻(xiàn),需要先在web.xml中配置,
可以配置監(jiān)聽器或者servlet來實(shí)現(xiàn)
<listcncr>
<listener-class>org.springframework.web.context.Con(ex(LoaderLis(ener</listener-class>
</listener>
<servlet>
<ser\rlet-name>context</servlet-name>
<servlet-class>org.springframework.web.con(ext.ContextLoaderSenflet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlct>
這兩種方式都默認(rèn)配置文獻(xiàn)為web-inf/applicationContext.xml,也可使用context-param指定
配置文獻(xiàn)
<context-param>
<param-name>contextConfigLocation</param-name>
<param-valuc>/WEB-INF/niyApplicaiionContext.xnil</param-valuc>
</context-param>
十四、怎樣在web環(huán)境中配置applicationConiext.xnil文獻(xiàn)?
<listener>
<listener-class>
org.springframework.web.con:ext.ContextLoaderListener
</listencr-class>
</iistener>
或:
<servlct>
<senlet-name>context</servlet-name>
<servlet-class>
org.springframework.web.context.ContextLoaderSenlet
</servlct-class>
<load-on-startup>1</load-on-slartup>
</servlet>
通過如下措施取出applicationContcxt實(shí)例:
ApplicationContext
ac=WebApplicationContextUtils.getWebApplicationContext(this.ge(ServletContext);
十五、怎樣配置spring+struts?
在struis-config.xml加入一種插件,通過它加載applicationContext.xml
在struts-config.xml修改action-mapping標(biāo)識,詳細(xì)action交給了DelegateActionProxy(
通過DelegateActionProxy進(jìn)入一spring的環(huán)境。(
在spring的applicationContexl.xml力II入(<beanname="/loginMclass=""singleton="false
/>
十六、spring+hibcrnatc的配置文獻(xiàn)中的重要類有那些?怎樣配置?
在myeclipse中先加入spring環(huán)境再加入hibernate環(huán)境v
假如spring與hibernate結(jié)合在一起可以不需要hihernate.cfg.xml文獻(xiàn)與否對的?
spring+hibernate口勺配置文獻(xiàn)中重要類有那些?怎樣配置?
dataSource
sessionFactory:hibcmate.cfg.xnil
transaciionManagcr
userDao(extendsHibernateDaoSupport)
sessionFactor)'-
facade
proxy
sessionFactory
transaciionManagcr
facade
十七、在spring中怎樣配容器H勺事務(wù)管理,有關(guān)的類有那些?
Datasoucc
transactionManager
userDao要注入
Datasouce
Proxy代理
TargeriwerDae代理對象(目的對象)
iransaciionAltribuies(那些措施需要事務(wù)處理)
transactionManagcr(事務(wù)處理服務(wù))
十八、在spring中怎樣配代碼的事務(wù)管理?
Datasouce
transactionManager
userDao要注入
Datasoucc
transactionManager
通過如下類實(shí)現(xiàn)
TransactionTemplate
JdbcTeniplate
十九、在spring中有幾種事務(wù)管理,分別是什么?
代碼管理的事務(wù)處理
TransactonTemplate日勺execute措施中的內(nèi)部類TransactionCallback中日勺doInTransaclion措施
中使用。
publicvoidmake。
(
TransactionTemplatejtm=newTransactionTemplate(this.getTransactionManager());
jtm.execute(newmyClass1());
publicclassmyClass1implementsTransactioncallback
publicObjectdoInTransaction(TransactionStatustrans)
(
I(ihcTemphtej(lbc=newJ(lh<:Template((int;iSoiirce);
jdbc.cxccutcC^inscrtintocustomcr(customcrNamc)vakics('b')”);
jdbc.cxccutc("inscrtintocustomcr(customcrNamc)valucs('b')^^);
returnnull;
)
)
容器管理的事務(wù)處理
二十、springH勺jdbc與老式W'Jjdbc有什么區(qū)別,其關(guān)鍵類有那些?
Spring的jdbc:節(jié)省代碼,不管連接(Connection),不管事務(wù)、不管異常、不管關(guān)閉(con.closc()
ps.close)
JdbcTemplate(dataSource):增、刪、改、查
TransactionTemplate(transactionManager):講彳〒事務(wù)初、于甲
二十一、spring與ejb2.0口勺事務(wù)管理比較口勺優(yōu)缺陷?
測試:
Spring:pojo
Ejb:二個(gè)接口一?種類,一堆配置文獻(xiàn)
事務(wù)類型
Spring:jdbcjtahibernate
Ejb:jta
成本
Spring:一般容器(tomcaijboss)
Ejbrweblogicjboss
開發(fā)的周期:
Spring遠(yuǎn)比ejb快.
二十二、spring的配置H勺重要標(biāo)簽是什么?有什么作用?
<beans>
<beanid='"'class="”init='"'destroy="“singleton='”>
<propertyname=,M*>
<valuc></valuc>
<propcrty>
<propertyname='f
<reflocal></ref>
</property>
</bean>
</beans>
二十二、怎樣在spring中實(shí)現(xiàn)國際化?
在applicationContext.xml加載一種bean
<bcanid="messageSourceclass=
cxl.suppori.RcsourccBundlcMcssagcSourcc”>
<propertyname="basename”>
<value>niessage</value>
</property>
</bean>
在src目錄下建多種properties文獻(xiàn)(
對于非英文H勺要用nativc2ascii(-encoding的2312源月轉(zhuǎn)化文獻(xiàn)有關(guān)內(nèi)容
其命名格式是message.語言—國家。(
頁面中的中顯示提醒信息,鍵名取鍵值。(
當(dāng)給定國家,系統(tǒng)會(huì)自動(dòng)加載對應(yīng)口勺國家/、Jproperties信息。(
通過applictionContext.getMessage(“鍵名","參數(shù)","區(qū)域”)取出有關(guān)的信息。(
二十四、Spring怎樣實(shí)現(xiàn)事件處理?
事件
ExtendsApplicationEvent
監(jiān)聽器
ImplementsApplicationListener
事件源
ImplementsApplicationContext/Xware
在applicaiionConlexl.xml中配置事件源、監(jiān)聽器
先得到事件源,調(diào)用事件源的措施,告知監(jiān)聽器。
二十五、怎樣加入Spring到web框架中?
在web.xml中加入如下同容,在啟動(dòng)web服務(wù)器時(shí)加載/WEB-INF/applicationContexl.xml中的
內(nèi)容。
<servlet>
<servlct-name>context</servlct-name>
<servlct-class>
org.springframework.web.context.ContextlxjaderSe^let
</servlet-class>
<load-on-startup>1</ioad-on-startup>
</servlet>
通過如下類得到ApplicationConlext實(shí)例
WcbApplicationContcxtUtils.gctWcbApplicationContcxt
二十六、Spring怎樣實(shí)現(xiàn)資源管理?
使用
applicalionContext.getResource1“classpath:文獻(xiàn)名"):在src根目錄下,在類途徑下
applicationContcxt.gctRcsourcc;44classpath:/chapO1/>C"):以src根目錄下的I基準(zhǔn)往下走。
applicationContext.getResource(**file:c:/perties"):4E系統(tǒng)文獻(xiàn)目錄下。
二十七、Spring中Applicationcontext的作用是什么?
beanFactory
國際化(getMesage)
資源管理:可以直接讀取一種文獻(xiàn)日勺內(nèi)容(gelResource)
加入web框架中(加入一種servlet或監(jiān)聽器)
事件處理
二十八、spring中的關(guān)鍵類有那些,各有什么作用?
BeanFactory:產(chǎn)生一種新的實(shí)例,可以實(shí)現(xiàn)單例模式
BeanWrapper:提供統(tǒng)一的Jget及set措施
ApplicalionConiext:提供框架的實(shí)現(xiàn),包括BeanFactoryH勺所有功能
二十九、aop中的關(guān)鍵名詞有些那些,互相關(guān)系是什么?
攔截器:代理
裝備(advice)
目的對象
關(guān)切點(diǎn):條件
連接點(diǎn):措施、屬性
三十、Spring和StrutsI向區(qū)別?
strusts:是一種基于MVC模式口勺一種web層口勺處理。
Spring:提供/通用的服務(wù),ioc/diaop,關(guān)懷H勺不僅僅web層,應(yīng)當(dāng)j2cc整體的一種服務(wù),可以
很輕易融合不一樣的技術(shù)strutshibernateibalisejbremotespringJDBCspringMVC
三十?、struts+spring面試題
1.struts
Action是不是線程安全的?假如不是,有什么方式可以保證Action的線程安全?假如
是,闡明原因
2.MVC,分析?下struts是怎樣實(shí)現(xiàn)MVC口勺
3.struts中口勺幾種關(guān)鍵對象口勺作用(說說幾種關(guān)鍵對象口勺作用)
4.spring
說說AOP和IOC的概念以及在spring中是怎樣應(yīng)用的
5.Hiberna(c有哪幾種查詢數(shù)據(jù)H勺方式
6.1oad()和get()的區(qū)別
回答:
1.Struts1Action是單例模式并且必須是線程安全的,由于僅有Action的一種實(shí)例來處理所有
的祈求。單例方略限制了Struts1Action能作的事,并且要在開發(fā)時(shí)尤其小心。Action資源必
須是線程安全H勺或同步的J。
Struls2Action對象為每一種祈求產(chǎn)生一種實(shí)例,因此沒有線程安全問題。(實(shí)際上,scrvlc[容
器給每個(gè)祈求產(chǎn)生許多可丟棄的對象,并且不會(huì)導(dǎo)致性能和垃圾【可收問題)
2,struts是用一組類,servlet和jsp規(guī)范實(shí)現(xiàn)mvc的
3.ActionFromActionServletActionstruts-config.xml
4.spring的關(guān)犍就是IOC,通過指定對象的創(chuàng)立措施,描述對象與服務(wù)之間的關(guān)系,而不生成對
象
5.3種,hql條件查詢0原生sql
6』oad()措施認(rèn)為該數(shù)據(jù)一定存在,可以放心的使用代理來延時(shí)加載,假如使用過程中發(fā)現(xiàn)了
問題,就拋出異常;
gel()措施一定要獲取到真實(shí)的數(shù)據(jù),否則返回null
三十二、Struts,Spring.Hibernate面試題總結(jié)
Hibernate工作原理及為何要用?
原理:
1.讀取并解析配置文獻(xiàn)
2.讀取并解析映射信息,創(chuàng)立SessionFactory
3.打開Sesssion
4.創(chuàng)立事務(wù)Transition
5.持久化操作
6.提交事務(wù)
7.關(guān)閉Session
8.關(guān)閉SesstionFactory
為何要用:
*對JDBC訪問數(shù)據(jù)庫的代碼做了封裝,大大簡化了數(shù)據(jù)訪問層繁瑣日勺反復(fù)性代碼。
*Hibernale是一種基于JDBC的主流持久化框架,是一種優(yōu)秀的ORM實(shí)現(xiàn)。他很大程度的
簡化DAO層的編碼工作
*hibernate使用Java反射機(jī)制,而不是字節(jié)碼增強(qiáng)程序來實(shí)現(xiàn)透明性。
*hibernate的性能非常好,由于它是個(gè)輕量級框架。映射的靈活性很杰出。它支持多種關(guān)系
數(shù)據(jù)庫.從一對一到多對多口勺多種復(fù)雜關(guān)系。
Hibernate是怎樣延遲加載?
*Hibernaie2延遲加載實(shí)現(xiàn):a)實(shí)體對象b)集合(Colleciion)
*Hiberna(c3提供了屬性的延達(dá)加載功能
當(dāng)Hibernate在杳詢數(shù)據(jù)的時(shí)候,數(shù)據(jù)并沒有存在與內(nèi)存中,當(dāng)程序真正對數(shù)據(jù)的操作時(shí),對
象才存在與內(nèi)存中,就實(shí)現(xiàn)了延遲加載,他節(jié)省了服務(wù)器的內(nèi)存開銷,從而提高了服務(wù)器的
性能。
Hibernate中怎樣實(shí)現(xiàn)類之間的關(guān)系?(如:一對多、多對多日勺關(guān)系)
類與類之間H勺關(guān)系重要體目前表與表之間的關(guān)系進(jìn)行操作,它們都市對對象進(jìn)行操作,我們
程序中把所有H勺表與類都映射在一起,它們通過配置文獻(xiàn)中股Jmany-to-onc^onc-to-many
many-to-manyx
說下Hibernate的緩存機(jī)制
*內(nèi)部緩存存在Hibernate中又叫級緩存,屬于應(yīng)用事物級緩存
*二級緩存:
a)應(yīng)用及緩存
b)分布式緩存
條件:數(shù)據(jù)不會(huì)被第三方修改、數(shù)據(jù)大小在可接受范圍、數(shù)據(jù)更新頻率低、同一數(shù)據(jù)被系統(tǒng)
頻繁使用、非關(guān)鍵數(shù)據(jù)
c)第三方緩存口勺實(shí)現(xiàn)
Hibernate的查詢方式
SqRCriteria,objectcomposition
Hql:
*屬性查詢
*參數(shù)查詢、命名參數(shù)查詢
*關(guān)聯(lián)查詢
*分頁杳詢
*記錄函數(shù)
怎樣優(yōu)化Hibernate?
*使用雙向一對多關(guān)聯(lián),不使用單向一對多
*靈活使用單向一對多關(guān)聯(lián)
*不用一對一,用多對一取代
*配置對象緩存,不使用集合緩存
*一對多集合使用Bag,多對多集合使用Set
*繼承類使用顯式多態(tài)
*表字段要少,表關(guān)聯(lián)不要怕多,有二級緩存撐腰
Struts工作機(jī)制?為何要使用Struts?
工作機(jī)制:
Sti-uts口勺工作流程:
在web應(yīng)用啟動(dòng)時(shí)就會(huì)加載初始化ActionSer\flet,ActionServlet從struts-config.xml文獻(xiàn)中讀
取配置信息,把它們寄存到多和配置對象當(dāng)AetionServlet接受到一種客戶祈求時(shí),將執(zhí)行如下
流程.
(I)檢索和顧客祈求區(qū)配的ActionMapping實(shí)例,假如不存在,就返回祈求途徑無效信息;
(2)假如AcuonFonn實(shí)例不存在,就創(chuàng)立一種ActionForm對象,把客戶提交的表單數(shù)據(jù)保留到
ActionForm對象中;
(3)根據(jù)配置信息決定與否需要表單驗(yàn)證.假如需要驗(yàn)證,就調(diào)用ActionForm口勺validate。措施;
(4)假如ActionFonn的validate。措施返回null或返回一種不包括ActionMessage的
AcluibErrors對象,就表達(dá)表單驗(yàn)證成功;
(5)Ac〔ionScrvlct根據(jù)ActionMcpping所包括的I映射信息決定將祈求轉(zhuǎn)發(fā)給哪個(gè)Action,假如對
應(yīng)的IAction實(shí)例不存在,就先創(chuàng)立這個(gè)實(shí)例,然后調(diào)用Action『、Jexecute。措施;
(6)Action口勺execute。措施返回一種ActionForward對象,ActionServlet在把客戶祈求轉(zhuǎn)發(fā)給
ActionForward對象指向/、iJSP組件:
(7)ActionFon\ard對象指向JSP組件生成動(dòng)態(tài)網(wǎng)頁,返回給客戶;
為何要用:
JSP、Servlet、JavaBcan技術(shù)的出現(xiàn)給我們構(gòu)建強(qiáng)大的企業(yè)應(yīng)用系統(tǒng)提供了也許。但用這些
技術(shù)構(gòu)建的系統(tǒng)非常的繁亂,因此在此之上,我們需要一種規(guī)則、一種把這些技術(shù)組織起來
的規(guī)則,這就是框架,Struts便應(yīng)運(yùn)而生。
基于Struts開發(fā)的應(yīng)用由3類組件構(gòu)成:控制器組件、模型組件、視圖組件
Stnitsvalidate框架是怎樣驗(yàn)證日勺?
在struts配置文獻(xiàn)中配置詳細(xì)的錯(cuò)誤提醒,再在FormBean中H勺validate。措施詳細(xì)調(diào)用。
說下Struts的設(shè)計(jì)模式
MVC模式:web應(yīng)用程序啟動(dòng)時(shí)就會(huì)加載并初始化AclionServler。顧客提交表單時(shí),一種
配置.好的ActionForm對象被創(chuàng)立,并被填入表單對應(yīng)附數(shù)據(jù),ActionServler根據(jù)
Slruts-config.xnil文獻(xiàn)配置好的設(shè)置決定與否需要表單驗(yàn)證,假如需要就調(diào)用ActionForm口勺
Validate()驗(yàn)證后選擇將祈求發(fā)送到哪個(gè)Action,假如Action不存在,ActionServlet會(huì)先創(chuàng)
十這個(gè)對象,然后調(diào)用Actionexecute()措施■?Execute()從ActionForm對象中獲取
數(shù)據(jù),完畢業(yè)務(wù)邏輯,返回一種ActionFoward對象,ActionServlet再把客戶祈求轉(zhuǎn)發(fā)給
ActionForward對象指定於Jjsp組件,ActionForward對象指定的jsp生成動(dòng)態(tài)的I網(wǎng)頁,返回給
客戶。
單例模式
Faclory(I:廠模式):
定義一種基類===》實(shí)現(xiàn)基類措施(子類通過不一樣的措施)===》定義一種工廠類(生成
子類實(shí)例)
===》開發(fā)人員調(diào)用基類措施
Proxy(代理模式)
spring工作機(jī)制及為何要用?
I.springnivc請所石rJ祈求都棉交給DispatcherServlet.它會(huì)委托應(yīng)用系統(tǒng)口勺其他模塊負(fù)詩■負(fù)
責(zé)對祈求進(jìn)行真正的處理工作。
2.DispatcherServlet查詢一種或多種HandlerMapping,找到處理祈求的Controller.
3.Dispa(chcrScrvlct請祈求提交到目H勺Controller
4.Controller進(jìn)行業(yè)務(wù)邏輯處理后,會(huì)返回一種ModelAndView
5.Dispathcher查詢?種或多種ViewResolver視圖解析器,找到ModelAndView對象指定的|視
圖對象
6.視圖對象負(fù)責(zé)渲染返回給客戶端。
為何用:
AOP讓開發(fā)人員可以創(chuàng)立非行為性的關(guān)注點(diǎn),稱為橫切關(guān)注點(diǎn),并將它們插入到應(yīng)用程序
代碼中。使用AOP后,公共服務(wù)(比如日志、持久性、事務(wù)等)就可以分解成方面并
應(yīng)用到域?qū)ο笊?,同步不?huì)增長域?qū)ο蟮膶ο竽P偷膹?fù)雜性。
IOC容許創(chuàng)立一種可以構(gòu)造對象口勺應(yīng)用環(huán)境,然后向這些對象傳遞它們口勺協(xié)作對象。正如單
詞倒置所表明口勺,IOC就像反過來的JNDL沒有使用一堆抽象工廠、服務(wù)定位器、
單元素(singleton)和直接構(gòu)造(sitrnightconstnietion),每一種對象都是用其協(xié)作對象
構(gòu)造H勺。因此是由容揩管理協(xié)作對象(collaboraior)。
Spring雖然一種AOP框架,也是一IOC容器。Spring最佳日勺池方是它有助于您替代對象。
有了Spring,只要用JavaBean屬性和配置文獻(xiàn)加入依賴性(林作對象)。然后可以很輕易
地在需要時(shí)替代具有類似接口的協(xié)作對象。
三十三、某些Spring和Hibernate面試題(附答案)
1.簡述你對IoC(InversionofControl)的理解,描述一下Spring中實(shí)現(xiàn)DI(Dependency
Injection)的幾種方式。
2、Spring的Bean有多種作用域,包括:
singletonxprototyperequest、session>globalsessionapplication、自定義
3.簡樸描述Springframework與Struts的不一樣之處,整合Spring與Struts有哪些措施,哪
種最侔.為何?
4.Hibernate中口勺u(yù)pdale()和saveOUpdate??谏讌^(qū)別
5.Spring對多種ORM框架提供了很好W、J支持,簡樸描述在Spring中使用Hibernatetl勺措施,
并結(jié)合事務(wù)管理。
答案:
1、好萊塢原則€€€€不要打電話找我,我會(huì)打給你的。IoC將創(chuàng)立的職責(zé)從應(yīng)用程序代碼
搬到了框架中。Spring對Setter注入和構(gòu)造措施注入提供支持。(詳見,以及http:
//.com/spring_ref72.0/html/beans.html#beans-factoiy-collaborators)
2.除application(詳見Springframework2.0Reference的3.4節(jié)beanH勺作用域)
3Spring是完整的一站式框架,而Stniis僅是MVC框架,且著重于MVC中的C。Spring有
三種方式整合Struts:使用Spring『、JActionSupport類整合Struts:使用SpringH勺
DelegatingRequestProcessor覆蓋StrutsH勺RequestProcessor;洛StrutsAction管理委托給
Spring框架,動(dòng)作委托最佳。(詳見使用Spring更好地處理Struts動(dòng)作)
Spring2.0新增一種方式:AutowiringRequestProcessor0(詳見)
4.jwiveCrUpdnte()措施可以實(shí)現(xiàn)update()的功能,但會(huì)多些環(huán)節(jié),詳細(xì)如F:
假如對象在該session中已經(jīng)被持久化,不進(jìn)行操作;
對象H勺標(biāo)識符屬性(identifierproperty)在數(shù)據(jù)庫中不存在或者是個(gè)臨時(shí)的)值,調(diào)用savc()措施
保留它;
假如session中的另一種對象有相似的標(biāo)識符拋出一種異常;
以上皆不符合則調(diào)用update。更新之。
5.在context中定義DataSource,創(chuàng)立SessionFactoy,設(shè)置參數(shù):DAO類繼承
HibernateDaoSupport.實(shí)現(xiàn)詳細(xì)接口,從中獲得HibemateTemplate進(jìn)行詳細(xì)操作。
在使用中假如碰到OpcnScssionlnVicw[內(nèi)問題,可以添加OpcnScssionlnVicwFillcr或
OpenSessionInViewIntercep(or0(詳見Springframework2.0ReferenceO12.2節(jié)Hibernate)
申明式事務(wù)需申明事務(wù)管理器,在context中設(shè)置指定屬性,用確定和。
二十四、請你談?wù)凷SII整合
SSH:
Struts(表達(dá)層)+Spring(業(yè)務(wù)層)+Hibemate(持久層)
Stnits:
Struts是?種表達(dá)層框架,重要作用是界面展示,接受祈求,分發(fā)祈求.
在MVC框架中,Siruls屬于VC層次,負(fù)責(zé)界面體現(xiàn),負(fù)責(zé)MVC關(guān)系的)分發(fā)。(View:沿用
JSP,HTTP.Form.Tag,Resourse:Controller:ActionServlet,struts-config.xml.Action)
Hibernate:
Hibernate是一種持久層框架.它只負(fù)責(zé)與關(guān)系數(shù)據(jù)庫H勺操作。
Spring:
Spring是?種業(yè)務(wù)層框架,是?種整合的框架,可以很好地期合表達(dá)層與持久層。
三卜五、在Spring框架中怎樣愈加高效的使用JDBC
使用Spring框架提供的模板類JdbcTcmplctc可以是JDBC愈加高效
代碼如下:JdbcTemplatetemplate=newJdbcTemplate(myDataSource);
DAO類的例子:
publicclassStudentDaoJdbcimplementsStudentDao{
privateJdbcTemplatejdbcTemp:ate;
publicvoid<;el.IclhcTenipl;He(.I(lh<'Templ;itejdhcTempkite)(
this.jdbcTemplate=jdbclcmplatc;
}
more..
)
配置文獻(xiàn):
<beanid='jdbcTemplale"class=,,org.springframework.jdbc.core.JdbcTemplate,>>
<propcrtyname-,dataSourcc^
<rcfbcan="dataSourcc'7>
</property>
</bean>
<bcanid=''studentDao"class="StudentDaoJdbc”>
<propertyname='jdbcTempkite">
<refbcan='jdbcTcmplale”/>
</propcrty>
</bean>
<beanid="courseDao”class="CourseDaoJdbc'>
<propertyname="jdbclempiate>
<refbean="jdbcTemplate"/>
</properly>
</bcan>
三十六、Spring怎樣創(chuàng)立一種數(shù)據(jù)連接池.
<bcanid="da〔aSourcc”class=,,mons.dbcp.BasicDataSourcc,,>
<propcrtyname=,'drivcr,,>
<value>${db.driver}</value>
</property>
<propertynameT'uiTA
<value>${db.url}<value>
〈/property〉
<propcrtyname-,username'>
<value>${db.username}</value>
</property>
<propertyname=''password”>
<value>${db.password}</value>
</property>
</bcan>
三十七、Spring怎樣配置一種bean來從JNDI得到DataSource
<beanid="dataSource”class=,,org.springframework.jndi.JndiObjec:FactoryBean',>
<propcrtyname-^jndiName,,><valuc>java:comp/env/jdbc/myDatasource</vaIue>
</propcrty>
</bean>
三十八、請簡介一下Spring框架中BeanH勺作用域
在spring2.0之前,bean只有2種U乍用域口比singlclon(單例I)、non-singlcton(也稱prototype),
Spring2.0后來,增長了session>request、globalsession三種專用于Web應(yīng)用程序上下文H勺
Beam因此,默認(rèn)狀況下Spring2.0目前有五種類型RjBean。
<beanid="role"class=''spring.chapter2.maryGame.Role“scope=',singleton'7>
這里口勺scope就是用來配置springbean的作用域,它標(biāo)識bean的作用域。
在spring?.0之前hean只有2種作用域即:lingletcn(單例)、ncn-singletcm(也稱prototype),
Spring2.0后來,增長了session、request,globalsession三種專用于Web應(yīng)用程序上下文H勺
Beano因此默認(rèn)狀況下Spring。目前有五種類型的Bean。當(dāng)然,Spring2.0對Bean日勺類型
的設(shè)計(jì)進(jìn)行了重構(gòu),并設(shè)計(jì)出靈活的Bean類型支持,理論上可以有無數(shù)多種類型的Bean,
顧客可以根據(jù)自己的需要,增長新的Bean類型,滿足實(shí)際應(yīng)用需求。
1.singleton作用域
當(dāng)一種bean日勺作用域設(shè)置為singleton.那么SpringIOC容器中只會(huì)存在一種共享H勺bean實(shí)
例,并且所有對bean的祈求,只要id與該bean定義相匹配,則只會(huì)返回beanH勺同一實(shí)例。
換言之,當(dāng)把一種bean定義設(shè)置為singleton作用域時(shí),Spring[OC容器只會(huì)創(chuàng)立該bean定
義的唯一實(shí)例。這個(gè)單一實(shí)例會(huì)被存儲到單例緩存(singletoncache)中,并且所有針對該
bean的后續(xù)祈求和引用都將返回被緩存的對象實(shí)例,這里要注意的是singleton作用域和
GOF設(shè)計(jì)模式中的單例杲完全不一樣的J.單例設(shè)計(jì)模式表達(dá)一種ClassLoader中只有一種
class存在,而這里日勺singleton則表達(dá)一種容器對應(yīng)一種bean,也就是說當(dāng)一種bean被標(biāo)識
為singleton時(shí)候,spring的IOC容器中只會(huì)存在一種該beano
配置實(shí)例:
<beanid="ro1e“class=,,spring.chapter2.maryGame.Role,'scope=',singleton'7>
或者
<beanid="role”class="spring.chapter2.maryGame.Role"singleton=,,trueM/>
2.prototype
prototype作用域布署的Ibean,每一次祈求(將其注入到另一種bean中,或者以程序的方式
調(diào)用容器的gc【Bcan()措施)都會(huì)產(chǎn)生一種新的bean實(shí)例,相稱于一種new的操作,對于
prototype作用域的bean,有一點(diǎn)非常重要,那就是Spring不能對一種prototypebean的I整個(gè)
生命周期負(fù)責(zé),容器在初始化、配置、裝飾或者是裝配完一種proiotype實(shí)例后,將它交給客
戶端,隨即就對該prototype實(shí)例不聞不問了。不管何種作用域,容器都會(huì)調(diào)用所有對象的初
始化生命周期回調(diào)措施,而對prototype而言,任何配置好的析構(gòu)生命周期回調(diào)措施都將不
會(huì)被調(diào)用.清除pENype作用域的對象并釋放任何prototypeK^n所持有的昂設(shè)資嫄,都是
客戶端代碼H勺職責(zé)。(讓Spring容器釋放被singleton作用域bean占用資源H勺一種可行方式
是,通過使用bean的后置處理器,該處理器持有要被清除的btan的引用。)
配置實(shí)例:
<beanid="role”class=',spring.chapter2.maryGanie.Role,,scope=,,prototypeM/>
或者
vbeanid=''role"class="spring.chapter2.maryGame.Role''singlelon=''fhlse'7>
3.request
request表達(dá)該針對每一次HTTP祈求都會(huì)產(chǎn)生一種新的bean,同步該bean僅在目前HTTP
request內(nèi)有效,配置實(shí)例:
request^session>globalsession使用的時(shí)候,首先要在初始化webIf]web.xml中做如下配置:
假如你使用口勺是Servlet2.4及以卜的web容器.那么你僅需要在web應(yīng)用口勺XML申明文獻(xiàn)
web.xml中增長卜述ContextListener即可:
<web-app>
<listener>
<listener-class>org.springfraniework.web.context.request.RequestC3ntextListener</listener-class>
</listener>
</web-app>
假如是Scrvlc(2.4此前Ifjweb容器,那么你要使用一種javax.scrvlci.Filler的實(shí)現(xiàn):
<web-app>
<filter>
<filter-name>requestContextFiher</filter-name>
<filfer-class>org.springfr;imew(irk.weh.filter.Re1|iie<ifC()ntextFilter</filter-clas!<>
</filtcr>
〈filler-mapping〉
<fllter-name>requestContextFiller</filter-name>
<url-pattern>/*</url-pattem>
</filter-mapping>
</web-app>
接著既可以配置bean的作用域T:
<beanid=Mrole“class=Mspring.chapter2.niarjrGanie.Rolevscope=MrequestM/>
4.session
session作用域表達(dá)該針對每一次HTFP祈求都會(huì)產(chǎn)生一種新的Jbean.同為該bean僅在目前
HTTPsession內(nèi)有效,配置實(shí)例:
配置實(shí)例:
和request配置實(shí)例的前提同樣,配置好web啟動(dòng)文獻(xiàn)就可以如下配置:
<beanid="ro1e“class=,,spring.chapter2.maryGame.Role,'scope="session”/〉
5.globalsession
globalsession作用域類似于原則口勺HTTPSession作用域,不過它僅僅在基于portlet的web
應(yīng)用中才故意義。Portlet規(guī)范定義了全局Session口勺概念,它被所有構(gòu)成某個(gè)portletweb應(yīng)
用的多種不一樣的portlet所共享。在globalsession作用域中定義的bean被限定于全局portlet
Session的生命周期范圍內(nèi)。假如你在web中使用globalsession作用域來標(biāo)識bean,那么,web
會(huì)自動(dòng)當(dāng)成session類型來使用。
配置實(shí)例:
和request配置實(shí)例的前提同樣,配置好web啟動(dòng)文獻(xiàn)就可以如下配置:
<beanid="role”class="spring.chapter2.maryGame.Role"scope=,'globalsession'7>
6.自定義hean裝配作用域
在spring2.0中作用域是可以任意擴(kuò)展的,你可以自定義作用域,甚至你也可以重新定義已
經(jīng)有的作用域(不過你不能蒞蓋singleton和prototype),spring的I作用域由接口
org.springframe\vork.beans.factor}f.config.Scope來定義,自定義自己H勺作用域只要實(shí)現(xiàn)該接口
即可,下面給個(gè)實(shí)例:
我們建立一種線程的scope,該scope在表達(dá)一種線程中有效,代碼如下:
publicclassMyScopeimplementsScope...{
privatefinaiThrcadLocalihrcadScopc=newThrcadLocal()...{
protectedObjectinitialValuc()...{
returnnewHashMapO;
}
}:
publicObjectget(Slringname,ObjectFactoryobjeclFaclory)...{
Mapscope=(Map)ihrcadScope.gc(();
Objectobject=scopc.get(name);
if{object=null)...{
object=objectFactory.getObjec:();
scope.put(name,object);
returnobject;
publicObjectremove(Stringname)...{
Mapscope=(Map)threadScope.get();
returnscope.remove(name);
)
publicvoidregisterDejitnicti()nCallhack(Stringname,Runnablecallback)
)
publicStringgctConvcrsationldO...{
//TODOAuto-generatedmethodstub
returnnull;
)
)
三十九、
請簡介一下Spring框架中BeanH勺生命周期
一、Bean的定義
Spring一般通過配置文獻(xiàn)定義Beano如:
<?xmlvcrsion=T.O"cncoding="UTF-8"?>
<bcansxmlns='"'
xmlns:xsi="”
xsi:scheniaLocation=,>://.org/schema''beans/spring-beans-2.().xsd,,>
<beanid^HelloWorld''class=,,com.pqf.beans.HelloWorld,5>
<propertyname=''msg''>
<value>HelloWorld</value>
</proper(y>
</bcan>
</beans>
這個(gè)配置文獻(xiàn)就定義了一種標(biāo)識為HelloWorld的Bean。在一種配置文檔中可以定義多種
Beano
二、Bean的初始化
有兩種方式初始化Renn,.
1.在配置文檔中通過指定init-method屬性來完畢
在Bean的類中實(shí)現(xiàn)一種初始化Bean屬性的J措施,如init(),如:
publicclassHelloWorld{
publicStringmsg=null;
publicDatedate=null;
publicvoidinit(){
msg="HelloWorld";
datc=ncwDa(c();
)
然后,在配置文獻(xiàn)中設(shè)置init-moihod屬性:
<beani(J="HelloWorldclass=Mcom.pqf.beans.HeiloWorldMinii-moihod="inii
</bean>
2、實(shí)現(xiàn)org.springfrainwork.beans.factory.InitializingBean□
Bean實(shí)現(xiàn)InitializingBean接口,并且增長afterPropertiesSet()措施:
publicclassHelloWorldimplementInitializingBean{
publicStringmsg=null;
publicDatedate=null;
publicvoidaftcrPropcrticsSct(){
msg=”向全世界問好!”;
date=newDate();
)
)
那么,當(dāng)這個(gè)Bean的所有屬性被Spring的BeanFactory設(shè)置完后,會(huì)自動(dòng)調(diào)用
aflcrPropcrlicsSci。措施對Bean進(jìn)行初始化,于是,配置文獻(xiàn)就不用指定init-mcihod屬性/。
三、Bean的調(diào)用
有三種方式可以得到Bean并進(jìn)行調(diào)用:
1使用BeanWrapper
HeiIoWorldhw=newHelloWorlJ();
BeanWrapperbw=ncwBcanWrapperlmpl(hw);
bw.sctPropertyvaluc("msg"HelloWorkl");
system.out.println(bw.getPropertyCalue(°msg°));
2.使用BeanFactory
InputStieamis=newFileInputStream("config.xml"):
XmlBeanFactoryfactory=newXmlBeanFactory(is);
HelloWorldhw=(HelloWorld)factory.geiBean("HelioWorld");
systcm.out.println(hw.gctMsgO);
3.使用ApplicationConttext
Applicationcontextactx=newFleSystemXmlApplicationContext(Mconfig.xml");
HelloWorldhw=(HelloVVorld)actx.getBean("HelloWorld");
System.out.println(hw.getMsgO);
四、Bean時(shí)銷毀
I.使用配置文獻(xiàn)中的destory-method屬性
與初始化屬性inil-methods類似,在Bean的類中實(shí)現(xiàn)一種撤銷Bean日勺措施,然后在配置文
獻(xiàn)中通過destory-method指定,那么當(dāng)bean銷毀時(shí),Spring符自動(dòng)調(diào)用指定的銷毀措施。
2、實(shí)現(xiàn)org.spring
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)用耗材寄售合同范例
- 南海勞動(dòng)合同范例
- 叉車司機(jī)合同范例
- 代采代銷合同范本
- 單位招聘廚師合同范例
- 農(nóng)機(jī)設(shè)備合同范例
- 雙包胎相親合同范例
- 人工采棉花合同范例
- 發(fā)電設(shè)備租憑合同范例
- 上門收納合同范例
- 2024EAU(新版)尿石病診治指南要點(diǎn)
- 中華人民共和國護(hù)士管理辦法
- 無機(jī)非金屬材料課件
- 4.家鄉(xiāng)交通問題研究
- 教科版小學(xué)科學(xué)六年級下冊《認(rèn)識星座》教學(xué)設(shè)計(jì)
- 場地運(yùn)營計(jì)劃方案
- 2023中宣部直屬單位公開招聘16人筆試參考題庫(共500題)答案詳解版
- 10以內(nèi)加減法口算題(13套100道題直接打印)
- 高中數(shù)學(xué)培優(yōu)講義練習(xí)(必修二):綜合測試卷:必修二全冊(基礎(chǔ)篇)(教師版)
- 作文紙(網(wǎng)格600字A4)
- 彩鋼板施工工藝
評論
0/150
提交評論