使用Eclipse構建Maven的SpringMVC項目

 

使用Eclipse構建Maven的SpringMVC項目

 

        首先Eclipse需要安裝Maven的插件,地址:http://m2eclipse.sonatype.org/sites/m2e。

        用MyEclipse安裝Maven插件,建出的Maven項目有些問題。一是,發佈tomcat的時候resources總是不會被髮布到tomcat下;二是,把WEB-INF下的classes改到target下的classes,但是不知道爲什麼MyEclipse要麼仍然在WEB-INF下生成class。要麼真不在WEB-INF生成classes了但是發佈tomcat的時候,class文件一個都不會給你發佈過去,超級鬱悶。但是使用Eclipse構建Maven項目後,使用MyEclipse打開就沒問題了。

        用maven的好處:我感覺最主要就是自動下載jar包和它所依賴的包,這樣可以保證了多人開發時jar版本不同的問題。再就是文件結構清晰,java文件,資源文件,測試文件都分的很清楚。

        將介紹兩種方法:一,直接建立Maven項目方法;二、建立Dynamic Web project轉成Maven項目方法。

一、直接建立Maven項目方法

1、建立Maven項目

        接下來使用Eclipse的maven構建一個web項目,以構建SpringMVC項目爲例:

1.1 選擇建立Maven Project

選擇File -> New -> Other,在New窗口中選擇 Maven -> Maven Project。點擊newxt。


 

 

1.2 選擇項目路徑

Use default Workspace location默認工作空間。


 

 

1.3 選擇項目類型

在Artifact Id中選擇maven-archetype-webapp


 

 

1.4 輸入Group ID和 Artifact ID,以及Package

Group ID一般寫大項目名稱。Artifact ID是子項目名稱。

例如Spring的web包,Group ID:org.springframework,artifactId:spring-web。

Package是默認給你建一個包,不寫也可以。


 

 

1.5 剛建立好後的文件結構如下圖


 

如果這裏顯示的內容多,一般是Filters設置的問題。或perspective爲JavaEE模式,改成Java模式就可以了。

 

 

2、配置Maven項目

接下來就需要更改好多配置了。

 

2.1 添加Source文件夾

接下來需要添加src/main/java,src/test/java ,src/test/resources三個文件夾。右鍵項目根目錄點擊New -> Source Folder,

建出這三個文件夾。注意不是建普通的Folder,而是Source Folder。



 

 

2.2 更改class路徑

右鍵項目,Java Build Path -> Source

下面應該有4個文件夾。src/main/java,src/main/resources,src/test/java ,src/test/resources。

 

雙擊每個文件夾的Output folder,選擇路徑。

src/main/java,src/main/resources,選擇target/classes;

src/test/java ,src/test/resources, 選擇target/test-classes;

 

選上Allow output folders for source folders.

 

 

在此處還要更改:

更改文件夾顯示的順序:點擊Order and Export。

更改JDK版本:在Libraries雙擊JRE System Library,要1.6版本。


 

2.3 把項目變成Dynamic Web項目

 

2.3.1 右鍵項目,選擇Project Facets,點擊Convert to faceted from


 

2.3.2 配置Project Facets

 

更改Dynamic Web Module的Version爲2.5。(3.0爲Java7的)。

如果提示錯誤,可能需要在Java Compiler設置Compiler compliance level 爲1.6。或者需要在此窗口的Java的Version改成1.6。


 

 

2.3.3 配置 Modify Faceted Project

點擊Further configuration available…,彈出Modify Faceted Project窗口

此處是設置web.xml文件的路徑,我們輸入src/main/webapp。

Generate web.xml deployment descriptor自動生成web.xml文件,可選可不選。

 

 

2.4 設置部署程序集(Web Deployment Assembly)

 

上面步驟設置完成後,點擊OK,Properties窗口會關閉,在右鍵項目打開此窗口。在左側列表中會出現一個Deployment Assembly,點擊進去後,如下圖:


 

 

此處列表是,部署項目時,文件發佈的路徑。

1,我們刪除test的兩項,因爲test是測試使用,並不需要部署。

2,設置將Maven的jar包發佈到lib下。

Add -> Java Build Path Entries -> Maven Dependencies -> Finish

設置完成效果圖


 

 

 

 

 

3、向maven項目中添加jar包

maven可以管理項目依賴的jar包,通過groupID、artifactId以及版本號可以唯一確定一個jar包。這樣可以防止老式Web項目中WEB-INF/lib下jar包不一致的問題。並且maven還會自動下載添加進的jar包所依賴的jar包。

 

3.1 在pom.xml中添加所需要的jar包

使用Maven POM editor打開項目中的pom.xml文件,選擇Dependencies,在Dependencies欄目點擊Add進行,首先彈出一個搜索按鈕,例如輸入spring-web,就會自動搜索關於spring-web相關的jar包,我們選擇3.0.5版本的spring。將spring包全部添加進來。需要添加的其他jar包有:junit、jstl。或者點擊pom.xml直接編輯pom.xml文件。這樣可以直接copy過來dependencies內容。




3.2設置jar包的scope

 

當添加進入一個jar包後,有一些屬性需要設置,最重要的就是scope,它有以下幾種取值:

1.         compile,缺省值,適用於所有階段,會隨着項目一起發佈。

2.         provided,類似compile,期望JDK、容器或使用者會提供這個依賴。如servlet.jar。

3.         runtime,只在運行時使用,如JDBC驅動,適用運行和測試階段。

4.         test,只在測試時使用,用於編譯和運行測試代碼。不會隨項目發佈。

5.         system,類似provided,需要顯式提供包含依賴的jar,Maven不會在 Repository中查找它。

 

 

通常SpringMVC項目所需要配置scope的jar包如下圖:


 

有的時候發現servlet-api還是被打包到lib下面了,此時肯定會報錯。就需要把maven插件中的WTP也安裝一下。

Eclipse在線安裝路徑:http://m2eclipse.sonatype.org/sites/m2e-extras。選擇for Eclipse WTP。


 

 

 

4、構建SpringMVC框架

 

4.1 編輯web.xml文件

 

需要添加log4j,字符過濾,Spring 的dispatcher等。

webx.xml代碼如下:

 

Xml代碼  收藏代碼
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns="http://java.sun.com/xml/ns/javaee"   
  3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  5.                              http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"   
  6.          version="2.5" >  
  7.       
  8.     <!-- 區分項目名稱,防止默認重名 -->  
  9.     <context-param>  
  10.         <param-name>webAppRootKey</param-name>  
  11.         <param-value>maven.example.root</param-value>  
  12.     </context-param>  
  13.   
  14.     <!-- Spring的log4j監聽器 -->  
  15.     <listener>  
  16.         <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>  
  17.     </listener>  
  18.   
  19.     <!-- 字符集 過濾器  -->  
  20.     <filter>  
  21.         <filter-name>CharacterEncodingFilter</filter-name>  
  22.         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
  23.         <init-param>  
  24.             <param-name>encoding</param-name>  
  25.             <param-value>UTF-8</param-value>  
  26.         </init-param>  
  27.         <init-param>  
  28.             <param-name>forceEncoding</param-name>  
  29.             <param-value>true</param-value>  
  30.         </init-param>  
  31.     </filter>  
  32.     <filter-mapping>  
  33.         <filter-name>CharacterEncodingFilter</filter-name>  
  34.         <url-pattern>/*</url-pattern>  
  35.     </filter-mapping>  
  36.   
  37.     <!-- Spring view分發器 -->  
  38.     <servlet>  
  39.         <servlet-name>dispatcher</servlet-name>  
  40.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  41.         <init-param>  
  42.             <param-name>contextConfigLocation</param-name>  
  43.             <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>  
  44.         </init-param>  
  45.         <load-on-startup>1</load-on-startup>  
  46.     </servlet>  
  47.     <servlet-mapping>  
  48.         <servlet-name>dispatcher</servlet-name>  
  49.         <url-pattern>*.do</url-pattern>  
  50.     </servlet-mapping>  
  51.   
  52. </web-app>  
 

 

4.2 編寫Spring配置文件dispatcher-servlet.xml

 

如要添加MVC驅動、註解檢測、視圖解析等。dispatcher-servlet.xml代碼如下:

 

Xml代碼  收藏代碼
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"   
  3.        xmlns:aop="http://www.springframework.org/schema/aop"   
  4.        xmlns:context="http://www.springframework.org/schema/context"  
  5.        xmlns:mvc="http://www.springframework.org/schema/mvc"   
  6.        xmlns:tx="http://www.springframework.org/schema/tx"   
  7.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  8.        xsi:schemaLocation="http://www.springframework.org/schema/aop   
  9.         http://www.springframework.org/schema/aop/spring-aop-3.0.xsd   
  10.         http://www.springframework.org/schema/beans   
  11.         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
  12.         http://www.springframework.org/schema/context   
  13.         http://www.springframework.org/schema/context/spring-context-3.0.xsd   
  14.         http://www.springframework.org/schema/mvc   
  15.         http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd   
  16.         http://www.springframework.org/schema/tx   
  17.         http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">  
  18.   
  19.     <mvc:annotation-driven />  
  20.     <context:component-scan base-package="liming.maven.example" />  
  21.   
  22.     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  23.         <property name="prefix" value="/WEB-INF/views/" />  
  24.         <property name="suffix" value=".jsp" />  
  25.     </bean>  
  26.   
  27. </beans>  
 

 

 

 

4.3 編寫一個Controller層測試類

 

編寫一個SpringMVC的Controller層測試類。此類只有一個方法做地址映射,並向頁面傳遞一個數據。代碼如下:

 

Java代碼  收藏代碼
  1. package liming.maven.example.view;  
  2.   
  3. import org.springframework.stereotype.Controller;  
  4. import org.springframework.ui.Model;  
  5. import org.springframework.web.bind.annotation.RequestMapping;  
  6.   
  7. @Controller  
  8. public class GeneralController {  
  9.   
  10.     @RequestMapping(value="index.do")  
  11.     public void index_jsp(Model model){  
  12.         model.addAttribute("liming", "黎明你好");  
  13.         System.out.println("index.jsp");  
  14.     }  
  15. }  
 

 

 

 

4.4 編寫index.jsp頁面

首先在src/main/webapp/WEB-INF下建文件夾views。此處和dispatcher-servlet.xml配置文件中的prefix屬性路徑要一樣。

在views下建index.jsp文件

我們使用jstl獲取Controlleradd的數據。

Jsp頁面代碼如下:

 

Html代碼  收藏代碼
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  
  2. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5.     <head>  
  6.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  7.         <title>Insert title here</title>  
  8.     </head>  
  9.       
  10.     <body>  
  11.         <c:out value="${liming}"></c:out>  
  12.     </body>  
  13. </html>  
 

 

 

 

5,發佈到tomcat

這個就沒啥說的了。

Eclipse下Tomcat常用設置:http://limingnihao.iteye.com/admin/blogs/825394

 

 

6,測試

訪問地址:http://localhost:8080/liming.maven.example/index.do

訪問的結果來個截圖:


 

 

二、建立Dynamic Web project轉成Maven項目方法

7、第二種方法DynamicWeb項目轉成Mavan

7.1 新建Dynamic Web Project

依次選擇選擇File -> New -> Other。在New窗口中選擇Web下的Dynamic Web Project。點擊next。


 

7.2 配置項目信息

7.2.1 輸入項目信息

首先輸入項目名稱。

Target runtime 一般選擇使用什麼容器,tomcat之類的。可以先不選。

Dynamic web module version。就是版本號。選擇2.5(3.0是Java7的)。

Configuration 是選擇容易的配置。如果Target runtime選擇了tomcat。這裏對應也是選擇tomcat。

Next。


7.2.2 配置source和output的folder

此窗口輸入需要建立的Source folders。和默認output folder。

這個我們的Source folders等建立完項目後在添加。

output folder可以順手改成target/classes。


 

7.2.3 配置web.xml文件的路徑


 

 

7.3 轉成maven項目

Dynamic web項目建立完後,首先將其轉成maven項目。

右鍵此項目,選擇maven -> Enable Dependency Management。彈出的窗口,直接finish就可以了。


 

7.4 其他配置

接下來的配置工作就和前面的基本一樣了。

請參考上面。

2.1添加Source文件夾

2.2更改class路徑。

2.3.3 配置 Modify Faceted Project

2.4 設置部署程序集(Web Deployment Assembly)

 

接着就是構建SpringMVC框架,發佈到tomcat,測試。

 

 

 

發佈了1 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章