1.項(xiàng)目創(chuàng)建類(lèi)
? ? ? ? 由于IDEA有著強(qiáng)大的代碼提示能力而且開(kāi)源,開(kāi)發(fā)效率高,所以一般項(xiàng)目都是使用IDEA進(jìn)行開(kāi)發(fā)增显。在進(jìn)行SSH項(xiàng)目創(chuàng)建的時(shí)候,千萬(wàn)注意以下事情脐帝。
? ? ? ? 1. 在使用IDEA進(jìn)行new project時(shí)候同云,最好選擇 java Enterprise項(xiàng)目,如圖1-1所示堵腹。
? ??????因?yàn)閖ava Enterprise項(xiàng)目會(huì)自行導(dǎo)入Tomcat的執(zhí)行包炸站,若沒(méi)有這個(gè)JAR包,在運(yùn)行WEB項(xiàng)目的時(shí)候(WEB項(xiàng)目會(huì)使用到serlet和jsp的交互)秸滴,經(jīng)常會(huì)提示錯(cuò)誤武契。
? ? ? ? 2. 在創(chuàng)建的時(shí)候,選擇項(xiàng)目框架類(lèi)型時(shí)候荡含,我們需要選擇(Spring + struct2 + hibernate)三個(gè)框架咒唆。如圖1-3所示∈鸵海可能有時(shí)候沒(méi)有Spring的框架全释,不用著急,這個(gè)可以在創(chuàng)建好項(xiàng)目之后在進(jìn)行添加既可误债。
? ? ? ? 之后浸船,有一個(gè)重點(diǎn)問(wèn)題。在創(chuàng)建這些框架的時(shí)候寝蹈,千萬(wàn)不能默認(rèn)點(diǎn)下一步李命,因?yàn)镮DEA默認(rèn)選項(xiàng)是自行在網(wǎng)上下載這些框架的JAR包,如圖1-4所示箫老,但是IDEA只是針對(duì)單獨(dú)的框架下載封字,沒(méi)有考慮整合需要的JAR包,所以會(huì)有很多遺漏耍鬓,導(dǎo)致學(xué)生在運(yùn)行項(xiàng)目的時(shí)候頻頻出錯(cuò)阔籽。所以,我們默認(rèn)點(diǎn)下一個(gè)選項(xiàng):set up library later牲蜀。在之后笆制,我們自行從網(wǎng)上下載。
2 JAR類(lèi)
? ? ? ? 估計(jì)任何框架搭建的JAR包引入是最令人頭疼的事情涣达。因?yàn)镴AR包導(dǎo)致的錯(cuò)誤在辆,一般不容易被發(fā)現(xiàn)证薇,在控制臺(tái)輸出日志的時(shí)候往往讓人誤認(rèn)為是代碼邏輯的問(wèn)題。而且开缎,JAR包之間的沖突特別多棕叫,而且,可能因?yàn)榘姹静煌壬荆谶M(jìn)行XML配置的時(shí)候俺泣,所用到的相同功能的類(lèi)所處的路徑不同。這里完残,簡(jiǎn)單總結(jié)我們?cè)诖罱⊿SH項(xiàng)目的時(shí)候引入JAR需要注意的幾點(diǎn)伏钠。
????????1. jar包沖突:struts2的javassist和Hibernate的javassist有沖突,我們選擇最新的版本的(根據(jù)你的自身情況選擇)谨设。如圖2-1所示熟掂。我們得刪除一個(gè)。
? ? ? ? 2.我們往往需要進(jìn)行日志記錄等等扎拣,所以會(huì)用到一些日志記錄的包赴肚。log4jcore,log4j-api包在某些版本的struts2包里有二蓝,slf4j-api誉券,slf4j-log4j12需要我們自行下載。注意?蕖S桓!網(wǎng)上很多都提出的是用SLF4來(lái)記錄日志鸥诽,但是僅僅限于hibernate3.x以下商玫,而hibernate4.x是使用的是jboss來(lái)進(jìn)行記錄。如圖所示牡借,所以使用hibernate4.x以上則不需要引入slf4j系列包拳昌,引入反而出錯(cuò)。
? ? ? ? 3.c3p0jar包钠龙,這個(gè)包是hibernate進(jìn)行數(shù)據(jù)庫(kù)連接的時(shí)候所需要用的地回,但是它會(huì)和某些高版本的hibernate包沖突,這個(gè)時(shí)候我們要根據(jù)Tomcat控制臺(tái)打印的日志進(jìn)行相應(yīng)的修改俊鱼,這里十分關(guān)鍵,直接會(huì)影響到hibernate是否正確使用畅买,之前本人在配置的時(shí)候并闲,這里卡了許久,因?yàn)閿?shù)據(jù)庫(kù)一直無(wú)法調(diào)用起來(lái)谷羞。
? ? ? ? 4.Spring整合struts2需要導(dǎo)入Spring-web和struts2-spring-plugin jar包帝火,不要丟掉溜徙。這里就是之前提到的IDEA不會(huì)自行下載的包。
? ? ? ? 5.數(shù)據(jù)庫(kù)jar驅(qū)動(dòng)jar包犀填,根據(jù)自身使用的數(shù)據(jù)庫(kù)進(jìn)行選擇蠢壹。這個(gè)必須得有。
????????6.hibernated的JPA包九巡,如圖所示图贸。這個(gè)包一般不在lib下的requried里面,它在一個(gè)單獨(dú)的jpa文件夾下冕广。所以疏日,很容易忽略掉。
3. 配置類(lèi)
? ? ? ?1. 如圖3-1所示撒汉, 之前也提到過(guò)沟优,在配置web.xml時(shí)候,因JAR包版本的原因睬辐,很容易在這里出錯(cuò)挠阁。所以,我們一般根據(jù)自己的版本溯饵,自行在左側(cè)(如圖3-2所示)尋找包的位路徑侵俗,在這里粘貼既可)
? ? ? ? 2. 在對(duì)實(shí)體類(lèi)進(jìn)行映射文件配置的時(shí)候,經(jīng)常出現(xiàn)列名報(bào)紅的現(xiàn)狀瓣喊。
????????這個(gè)一般是因?yàn)轭?lèi)和數(shù)據(jù)庫(kù)沒(méi)有關(guān)聯(lián)坡慌,所以也無(wú)法讀取數(shù)據(jù)庫(kù)。最好的解決辦法是藻三,在view-- tools window中進(jìn)行數(shù)據(jù)庫(kù)配置后洪橘,只要保證數(shù)據(jù)庫(kù)是打開(kāi)狀態(tài),會(huì)連接成功的棵帽。接下來(lái)熄求,在工具欄中的view->Tool Windows->Persistence,將它添加上去逗概。就可以在界面找到它弟晚,如下圖所示:
????????接著我們?cè)谒霈F(xiàn)的項(xiàng)目上右鍵,可以發(fā)現(xiàn)一個(gè)Assign Data Source的選項(xiàng)逾苫,點(diǎn)開(kāi)它卿城,會(huì)出現(xiàn)如下圖的界面,只要在Data Source這一欄中铅搓,選中所要應(yīng)對(duì)的數(shù)據(jù)庫(kù)就可以解決問(wèn)題瑟押。