一.背景介紹
對于初學者,用maven建構項目并不是一件容易的事,springmvc并不是mvc中的主流,但是本人覺得springmvc比struts要好用,真正做到了零配置。一次使用,就放不下了。
二.準備工作
1.eclipse 3.7
2.maven
三.建構工程
1.用maven插件建構項目架構
maven具有強大建構功能,使用maven可以建構多種不同類型的工程。這裡我們建構maven-archetype-webapp類型的項目。在eclipse->new中選擇other,找到maven project型。如下圖:
在選完路徑之後,我們選擇建構類型,如下圖:
接下來,填寫工程的group id,artifact id,如下圖:
這裡的group id就是大項目的id,arifact id就是該項目的id。就像一個大項目中有許多小項目組成一樣。此時,我們的項目已經成型了,樣子如下圖:
接下來,我們要完善項目的目錄,配置。
2.完善項目
首先,完善目錄,增加重要的source folder,這個不是簡單的floder,這些檔案夾是會參與編譯的。增加src/main/java,src/test/resources,src/test/java目錄。讓目錄變成标準的maven結構。如下圖:
接下來,改變一些配置:
讓工程的jdk用本地的jdk;
讓工程的字元集為utf-8;
改變工程的目錄順序;
這些都完成之後,工程目錄應該是如下的樣子:
3.将工程變成web工程
此時,我們的工程還不是标準的web工程,可以在eclipse中增加web工程的特性,選擇工程的properties,選project facets,如下圖:
這裡,我們選擇dynamic web module,版本選擇2.4,這個版本比較通用。如下圖:
此時,我們看到目錄中多了一個webcontent目錄,由于使用maven建構,web目錄是src/main/webapp,是以我們删除webcontent目錄。接下來,要配置web項目的釋出目錄,就是deployment assembly,如圖:
test目錄不要釋出,webcontent目錄沒有了,是以這三項都删掉。并且增加src/main/webapp目錄,和maven dependenices,完成之後如下圖:
于是,我們的工程就完全是一個web工程了。
4.賦予工程的springmvc特性
配置web.xml,使其具有springmvc特性,主要配置兩處,一個是contextloaderlistener,一個是dispatcherservlet。代碼如下:
配置contextloaderlistener表示,該工程要以spring的方式啟動。啟動時會預設在/web-inf目錄下查找applicationcontext.xml作為spring容器的配置檔案,這裡可以初始化一些bean,如datasource。我們這裡什麼也不做。代碼如下:
配置dispatcherservlet表示,該工程将采用springmvc的方式。啟動時也會預設在/web-inf目錄下查找xxx-servlet.xml作為配置檔案,xxx就是dispatcherservlet的名字,該檔案中将配置兩項重要的mvc特性:
handlermapping,負責為dispatcherservlet這個前端控制器的請求查找controller;
viewresolver,負責為dispatcherservlet查找modelandview的視圖解析器。
代碼如下:
5.讓maven自動配置jar包
在用maven生成架構時,就生成了pop.xml,這就是maven的配置檔案。我們要引入spring-web,servlet等特性的包。代碼如下:
maven就是這麼簡單,一旦儲存,maven就會自動下載下傳pop.xml的jar包。此時可以看到目錄中maven dependencies下生成了jar包。
6.做個測試
說了一大堆,隻有運作起來才有意思,下面寫個簡單的測試。先寫controller。編寫兩個類,logincontroler.java,loginform.java。代碼如下:
再增加一些jsp,首頁的index.jsp,主要是做跳轉,代碼如下:
還有兩個jsp,做些簡單的功能,一個表單login.jsp,一個表單送出的傳回index.jsp,代碼如下:
整個項目的目錄結構如下:
在tomcat中運作,即可。不要使用tomcat插件,可能有問題。就用普通的方式。運作效果如下圖: