基于Spring MVC+Mybatis3+Tomcat+Mysql搭建環(huán)境

需求背景:最近需要配合客戶端同學(xué)做一個(gè)線上問(wèn)題快速定位系統(tǒng),我負(fù)責(zé)后臺(tái)業(yè)務(wù)邏輯部分的工作,遂自己搭建一套基于Spring?MVC及mybatis3的一套web環(huán)境,主要用于給客戶端提供接口。本文構(gòu)建的環(huán)境使用的IDE為IDEA(acm官方指定),應(yīng)用maven構(gòu)建SpringMVC整合Mybatis+MySQL5.7(流行框架)的web項(xiàng)目,目的在于快速構(gòu)建一個(gè)簡(jiǎn)潔純凈版的web應(yīng)用工程,將其作為一個(gè)基礎(chǔ)web-demo,以便類(lèi)似的項(xiàng)目都可以復(fù)用本demo。JDK版本1.8,Tomcat版本8.0。

以下為這次搭建環(huán)境的主要步驟:


一、 IDEA下構(gòu)建maven的web項(xiàng)目

1、新建工程N(yùn)ew-->Project,創(chuàng)建maven的web項(xiàng)目,選擇maven-archetype-webapp,并配置Project SDK,本次選用的是本機(jī)已安裝的jdk1.8,如下圖所示:

新建maven工程

2、下一步,填寫(xiě)自己項(xiàng)目的GroupId,ArtifactId,如下圖:

填寫(xiě)項(xiàng)目groupId,artifactId

3、下一步,設(shè)置maven的安裝目錄,代替IDEA自帶的maven版本,我換成了自己手動(dòng)安裝的maven版本,路徑存在D盤(pán);設(shè)置maven本地的倉(cāng)庫(kù),我配置了本項(xiàng)目單獨(dú)的倉(cāng)庫(kù),但沒(méi)去復(fù)用之前項(xiàng)目所用的maven倉(cāng)庫(kù),為的是讓本工程的依賴(lài)jar包保持純凈。

設(shè)置maven的安裝目錄

4、下一步,設(shè)置工程的Project Name。

設(shè)置工程名

5、Finish,maven的web項(xiàng)目就創(chuàng)建完成,接下來(lái)maven會(huì)下載相應(yīng)的資源,下載時(shí)速度會(huì)很慢(maven加載jar包過(guò)程,默認(rèn)的是先掃描本地倉(cāng)庫(kù),若本地倉(cāng)庫(kù)沒(méi)有,則掃描遠(yuǎn)程倉(cāng)庫(kù)下載。默認(rèn)的conf/settings.xml文件沒(méi)有配置遠(yuǎn)程倉(cāng)庫(kù),所以掃描的是maven的中央倉(cāng)庫(kù)(資源鏡像一般在國(guó)外),所以慢);由于我使用的網(wǎng)絡(luò)是翻墻外網(wǎng),直接默認(rèn)maven下載方式速度還是可以的(或許也是人品好一點(diǎn)?),如果大家想快一點(diǎn),也可以參考網(wǎng)上配置maven使用國(guó)內(nèi)鏡像的教程。

二、搭建基于SpringMVC整合mybatis的web工程

1、等待maven下載資源完成后,注意到工程目錄中會(huì)出現(xiàn)src的文件夾,src下默認(rèn)會(huì)存在main目錄,main下默認(rèn)存在resources和webapp文件夾,其中resources文件夾主要存放項(xiàng)目的配置或?qū)傩缘任募?,webapp則是web應(yīng)用的根目錄,會(huì)存放HTML,CSS,js,JSP或資源文件等。我們需要再main目錄下創(chuàng)建java文件夾,java目錄下存放的將是Java程序的package及class文件等。由于我們將搭建springMVC框架,我們可以提前搭建好項(xiàng)目的文件目錄結(jié)構(gòu),如下圖所示:

整體結(jié)構(gòu)

其中,java下創(chuàng)建項(xiàng)目的package ?com.flh,其下可以再分類(lèi)不同的package,包括controller,service,service-->impl,entity,dao,dao-->mapper,dao-->xml,common,util等,這些包是基于springmvc+mybatis所需的,還有可以存放一些公共類(lèi)或工具類(lèi)。webapp下可創(chuàng)建css,js,image,WEB-INF-->views等。src可創(chuàng)建main的同級(jí)目錄test,可以用于后續(xù)項(xiàng)目開(kāi)發(fā)過(guò)程中的Junit程序測(cè)試。

2、配置pom.xml文件,maven添加web項(xiàng)目必需的以及SpringMVC所必需的dependencies包。

2.1、以下是引入Junit,日志,MySQL驅(qū)動(dòng)的依賴(lài)包,注意此次引入的是最新的mysql-connector-java-6.0.6,會(huì)影響后續(xù)的SpringMVC及jdbc等的特殊配置,這將和舊版本的mysql驅(qū)動(dòng)包有區(qū)別。

這樣,已經(jīng)支持了日志的輸出,我們?nèi)匀恍枰罩镜膶傩晕募?,在resources目錄下,新增日志屬性文件log4j.properties,并配置如下(配置方式很多種,大家選擇一種即可):

其中,開(kāi)發(fā)者可設(shè)置rootLogger,開(kāi)發(fā)調(diào)試環(huán)境時(shí),可設(shè)置為DEBUG模式,輸出系統(tǒng)的詳細(xì)日志;生產(chǎn)環(huán)境時(shí),可設(shè)置為INFO模式。

2.2、以下是引入SpringMVC所必需的依賴(lài)包,由于maven自動(dòng)依賴(lài)功能,引入以下包時(shí),會(huì)自動(dòng)引入其他相關(guān)的依賴(lài)包,其中就包括spring-core,spring-context等重要的包(注意只要能夠引入所有的Spring依賴(lài)包即可)。

2.3、以下是引入JSP的包,以支持jsp視圖的功能。

2.4、以下是引入datasource數(shù)據(jù)源的包,引入了2種方式,但本次項(xiàng)目中,我們使用的是alibaba的Druid DataSource。

到此,我們已經(jīng)引入了mysql驅(qū)動(dòng)包,DataSource連接池,我們還需要配置jdbc屬性文件,在resources下創(chuàng)建jdbc.properties文件,內(nèi)容如下:

其中,配置了mysql數(shù)據(jù)庫(kù)的連接,用戶名,密碼等信息。由于使用了最新版本的mysql-connector-java-6.0.6驅(qū)動(dòng),這要求driver和url的特殊配置,否則項(xiàng)目啟動(dòng)時(shí)會(huì)報(bào)1個(gè)警告和2個(gè)異常。jdbc.driver配置為com.mysql.cj.jdbc.Driver,可以避免出現(xiàn)警告信息(具體警告信息沒(méi)有記錄下來(lái),大家配置過(guò)程中可能會(huì)遇到);jdbc.url里添加useSSL屬性---配置為true;若出現(xiàn)The server time zone value ‘?й???????’ is unrecognized or represents more than one time zone的錯(cuò)誤,則需添加serverTimezone屬性,設(shè)置為GMT%2B8即可解決

2.5、以下是引入一些其他可能需要的包,包括文件上傳等。

3、配置pom.xml文件,設(shè)置項(xiàng)目的編譯屬性,編譯后的war包名稱(chēng)(即finalName),存放配置或?qū)傩晕募絩esources目錄下。

經(jīng)過(guò)以上的pom.xml的配置,項(xiàng)目及springmvc所需的依賴(lài)包就已經(jīng)基本引入了,通過(guò)IDEA右側(cè)欄中的maven projects的reimport按鈕實(shí)現(xiàn)依賴(lài)包的引入下載(并且,其中常用的是clean,package,install等,clean可以清除生成的target目錄,install可以重新生成target目錄),若pom.xml種引入/修改了新的依賴(lài)包/插件或者Dependencies存在紅色提示,需要重新reimport以下。

4、配置項(xiàng)目的web.xml文件,包括首頁(yè),異常跳轉(zhuǎn),會(huì)話超時(shí),字符編碼過(guò)濾器CharacterEncodingFilter,監(jiān)聽(tīng)器ContextLoaderListener,前置控制器DispatcherServlet,靜態(tài)文件單獨(dú)處理等等。代碼及解釋可以參看源碼。

5、由web.xml的配置中看出,我們還需要配置applicationContext.xml和spring-mvc.xml,具體參看源碼。

其中:

  注解配置:<context:annotation-config/>;

  注解驅(qū)動(dòng):<mvc:annotation-driven/>;

  自動(dòng)掃描controller類(lèi),自動(dòng)掃描service類(lèi):context:component-scan;

  靜態(tài)資源映射(我們springmvc配置的是攔截“/”,例如:/user/getUserInfo,REST風(fēng)格,但會(huì)導(dǎo)致靜態(tài)文件(jpg,js,css等)被攔截后不能正常顯示):mvc:resources;

  模型視圖名稱(chēng)的解析(默認(rèn)路徑及后綴):InternalResourceViewResolver;

支持返回json格式(前后端分離場(chǎng)景下,返回?cái)?shù)據(jù)格式):AnnotationMethodHandlerAdapter,MappingJackson2HttpMessageConverter。通常在前后端分離項(xiàng)目中,后臺(tái)要向前端返回json格式的相應(yīng)數(shù)據(jù),以上已經(jīng)在spring-mvc.xml中配置了json格式轉(zhuǎn)換的處理,我們?nèi)孕枰雑son支持的依賴(lài)包。

6、配置applicationContext.xml文件,在這里我們配置數(shù)據(jù)源以及與mybatis的整合配置

在這里,我們引入了之前配置的jdbc.properties屬性文件來(lái)配置我們的DataSource;配置了對(duì)dataSource 數(shù)據(jù)源進(jìn)行事務(wù)管理;使用annotation注解方式配置事務(wù),啟用對(duì)事務(wù)注解的支持;

注意在這里我們添加了對(duì)mybatis的設(shè)置,實(shí)現(xiàn)springmvc與mybatis的整合,配置可掃描所有mapper.xml和mapper dao文件以及對(duì)事務(wù)的管理。

我們?nèi)绻胧褂胢ybatis逆向工程插件生成mybatis的mapper,entity等代碼,則需要在之前的<build>標(biāo)簽下添加mybatis-generator插件:

添加后,我們r(jià)eimport下,會(huì)在maven project下新增出相應(yīng)的插件,我們之后會(huì)使用到mybatis-generator:generate自動(dòng)生成實(shí)體類(lèi),mapper文件,如下圖:

7、在applicationContext.xml的配置中看出,我們?nèi)孕枰渲胢ybatis.xml的文件,進(jìn)行mybatis相關(guān)的配置,如下所示:

OK,到目前為止,該web-demo項(xiàng)目的環(huán)境搭建就基本完成了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容