1. 程式人生 > >知識小罐頭04(idea+maven+部署war包到tomcat 上)

知識小罐頭04(idea+maven+部署war包到tomcat 上)

  上一節新建了一個基本的maven web環境,現在最快速度新建一下springmvc環境!

 1.最快搭建springmvc環境

  什麼叫做最快,當然是怎麼簡單怎麼來啦!由於內容都是很熟悉的東西,service層和Dao層的類和配置檔案就不多說了,可以自行參考github專案裡面的內容!

  開啟一個神奇的網站https://github.com/github,進入,搜尋ssm,隨便找個java專案

 

 

 

  複製完了之後,接下來看一看目錄結構如下,這個基本上也可以從上面那個專案裡複製一下,稍微修改一下;

 

 

   執行tomcat,瀏覽器輸入url就可以看到結果,順利的訪問到WEB-INF中的jsp檔案,說明我們成功了!

 

2.一些奇怪的問題(基於tomcat7.0.88):  

  我就說說我碰到的問題吧!我在啟動Tomcat7的時候碰到了一些奇葩的錯誤,截圖如下:

 

 

  這幾個錯誤很是莫名其妙,我在網上查了很多資料,

  主要查了這個錯誤是什麼導致的java.lang.UnsupportedClassVersionError: controller/MyController : Unsupported major.minor version 52.0。都是說那個Tomcat的ecj-x.x.x.jar這個jar包版本太低,要用4.x.x版本的,反正我是看了我的是ecj-4.4.2.jar,應該沒錯。

  又查了這個錯誤javax.servlet.ServletException: Servlet.init() for servlet mvc-dispatcher threw exception,好像有很多人都說是什麼controller中的@RequestMapping中路徑重複了,我看了看我就一個路徑,肯定也不是這個原因;

  找了幾個小時吧!不小心看到了Tomcat啟動時候的一個地方,JRE_HOME是在jdk1.7,難道是這個不對嗎?因為maven用的是apache-maven-3.5.4,繫結的jdk是1.8.xx版本,我IDEA用的也是jdk1.8,難道jdk不應該是高版本相容低版本嗎?

 

  於是我進行了兩種修改方法:

  第一種,我將maven中繫結的jdk版本設定成1.7,於是啟動應用輸入url就不報錯了,

 

  第二種:不改maven,我們直接修改Tomcat的執行環境改為1.8,這個我也查了很多東西知道了,如下所示;

 

   兩種方法都行,我以第二種為例,啟動tomcat,控制檯就會看到執行環境變化!

  

  錯誤總結:都是版本問題,所以自己在搭建環境的時候,一定要去查查版本對應關係maven什麼版本,對應jdk什麼版本,對應Tomcat又是什麼版本,這些版本衝突問題最是日了狗了,因為你幾乎發現不了,只能花費大量時間去慢慢盤查!賊坑!!!

   於是我很機智的到github中看了看環境,然後我就默默地下載了Tomcat8,再將IDEA中繫結的tomca替換成Tomcat8,ok,一些正常!啥事沒有!

   

  其實為了上述的異常困擾了很久,很絕望!通常即使這個異常解決了,後面還會有很多的異常在等著你,幾乎每一個異常都會困擾你幾個小時,你要去排除各種jar包乾擾,配置檔案的配置或者修改tomcat環境,IDEA的一些設定。。。。有這麼多事件還不如下載一個Tomcat8,一分鐘就ok了。。。。。

 

3.應用部署到Tomcat8(注意,是Tomcat8版本

  方式一:

  這個方式比較普通

  首先把IDEA繫結的Tomcat7變成Tomcat8

 

  開啟控制檯

  

  有兩個命令,自行選擇;1。mvn install    2.mvn package

  第一個命令在打包的同時,還會將打成的包放到maven本地倉庫一份;第二個命令:只是進行打包,放在本專案的中

  我就以mvn install為例,看到如下所示就成功了!

 

  在IDEA的專案下面的target資料夾中可以看到:

 

  將複製的war包丟到Tomcat的webapps目錄中

 

 

  啟動tomcat伺服器,就會解析我們的war包,然後就會多一個資料夾,然後我們的應用就跑起來了

 

 

 

 

  這裡一定要注意:通過這種方式部署到tomcat中,在瀏覽器訪問的時候一定要帶上專案名,因為一個tomcat可以部署很多個專案,你要訪問哪一個專案哪一個路徑一定要明確,不然就會出現404錯誤。這點和直接在IDEA上有著很大區別。

  看我的url:http://localhost:8080/testssh/wyq123,這裡testssh就是我們的專案名,wyq123是我在controller的訪問路徑,通過這個url就會跳轉到WEB-INF裡面的jsp資料夾裡的jsp檔案;

  如果我們是在IDEA中啟動tomcat,那訪問路徑就是http://localhost:8080/wyq123,和上面相差了專案名;

 

  方式二:

   方式二有點類似熱部署一樣,而且不需要你去複製war包到什麼什麼地方,多麻煩啊,你只需要指定你的web應用中的webContext目錄所在就可以了;

 

  首先刪除tomcat8的webapps中的目錄,然後到目錄D:\java\apache-tomcat-8.5.35\conf\Catalina\localhost中,新建一個 專案名.xml的檔案

 

 開啟這個配置檔案,加上下圖這句:

 

然後啟動tomcat8,也可以訪問jsp