maven搭建web項(xiàng)目和spring的IoC(Inversion of Control)
一?? ??在IDEA 中使用maven創(chuàng)建web項(xiàng)目
第一種:創(chuàng)建一個(gè)空的maven項(xiàng)目(不勾選create from archetype),在/src/main下創(chuàng)建webapp包,webapp下創(chuàng)建WEB-INF包,WEB-INF下新建web.xml;再在pom.xml中寫(xiě)<packaging>war</packaging>,將tomcat插件寫(xiě)入(該tomcat與本地的tomcat無(wú)關(guān)),再將view中的maven打開(kāi),刷新,點(diǎn)擊tomcat????--->tomcat7:run
第二種:創(chuàng)建一個(gè)maven-archetype-webapp的maven項(xiàng)目;將tomcat插件寫(xiě)入pom.xml;在Edit Configurations? ->+->maven,在Command line 行寫(xiě)tomcat7:run
二????eclipse?maven創(chuàng)建web項(xiàng)目
新建maven project(勾選Create? a simple project) ->Group Id(包名) Artifact id(項(xiàng)目名) packing(可選擇類(lèi)型:war) ->項(xiàng)目創(chuàng)建后會(huì)報(bào)錯(cuò)(找不到web.xml) ->右擊項(xiàng)目,點(diǎn)擊JavaEE Tools->Generate Deployment...->刷新,建一個(gè)頁(yè)面->將相關(guān)插件添加到pom.xml中(項(xiàng)目會(huì)有小叉)->右擊項(xiàng)目->maven->update project->運(yùn)行項(xiàng)目:右擊項(xiàng)目->Run:As->maven bulid(有兩個(gè),第二個(gè)可以手動(dòng)執(zhí)行命令tomcat7:run)
三? ? spring的IoC
1? ? spring
Spring框架主要由七部分組成契讲,分別是 Spring Core仿吞、 Spring AOP、 Spring ORM捡偏、 Spring DAO唤冈、Spring Context、 Spring Web和 Spring Web MVC银伟。
2????IoC
(1)????在pom.xml中添加spring-context依賴(lài)
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
? ? <groupId>org.springframework</groupId>
? ? <artifactId>spring-context</artifactId>
? ? <version>5.2.1.RELEASE</version>
</dependency>
(2)????sts可以直接創(chuàng)建spring bean configuration file,eclipse不可以,需要手動(dòng)編寫(xiě)如下
(3)????spring容器默認(rèn)生成的對(duì)象為singleton(單例模式,獲取的是同一個(gè)bean即為同一對(duì)象),? score="prototype"多例(Java項(xiàng)目?jī)蓚€(gè),web項(xiàng)目四個(gè),多了request和session)
想通過(guò)id獲取bean,要有無(wú)參構(gòu)造<bean id="student1" class="com.qianfeng.Student"/>
(4)????無(wú)參構(gòu)造器和propertyerty對(duì)象賦值,必須要有標(biāo)準(zhǔn)的setter方法,因?yàn)閜roperty和JavaBean中的setter方法相關(guān)
<property name="sid" value="1"></property>
(5)????有參構(gòu)造對(duì)象賦值四種(幾個(gè)constructor-arg就會(huì)調(diào)用幾參構(gòu)造,沒(méi)有相應(yīng)就報(bào)錯(cuò)):
1????通過(guò)name和value賦值????<constructor-arg name="sid" value="2"/>
2????按value的順序賦值:可能會(huì)出現(xiàn)類(lèi)型轉(zhuǎn)換錯(cuò)誤????<constructor-arg value="2"/>
3? ?相同類(lèi)型按順序賦值,不同類(lèi)型順序無(wú)要求????<constructor-arg type="int" value="2"/>
4????按"角標(biāo)"位置賦值,從0開(kāi)始????<constructor-arg index="0" value="2"/>
引用:給一個(gè)對(duì)象的屬性賦值????<constructor-arg type="BirthDays" ref="birth1"/>
(6)? ? p名稱(chēng)空間注入
xmlns:p="http://www.springframework.org/schema/p"
上方是一個(gè)鏈接資源,前面p可變,后面p不可變,將這個(gè)加入就可用下方的格式
<bean id="student2" class="com.qianfeng.Student" p:sid="1" p:name="小紅" p:sex="true" p:score="90" p:birth-ref="birth2"></bean>
測(cè)試類(lèi):ApplicationContext ac=new ClassPathXmlApplicationContext("beans.xml")
ac.getBean("student5", Student.class);后面的Student.class可以不寫(xiě),但需要強(qiáng)轉(zhuǎn)類(lèi)型
關(guān)閉ApplicationContext資源(不關(guān)會(huì)有警告)((ClassPathXmlApplicationContext)ac).close();
今天有兩個(gè)錯(cuò)誤:
1.NoSuchMethodExcption:沒(méi)有無(wú)參構(gòu)造
2,NotWriteablePropertyExcption:不是一個(gè)可寫(xiě)屬性;JavaBean中setter方法沒(méi)寫(xiě);或者在bean.xml中屬性名寫(xiě)錯(cuò)
2020-02-25在千峰線上學(xué)習(xí)的第12天,武漢加油