1. 程式人生 > >Eclipse maven構建springmvc項目

Eclipse maven構建springmvc項目

項目 efi pattern ice 打包 圖解 setting ets -s

今天深圳臺風來了,降了點,真尼瑪熱  ̄へ ̄ ̄へ ̄ ̄へ ̄ ̄へ ̄ ̄へ ̄ ̄へ ̄ ̄へ ̄ ̄へ ̄ ̄へ ̄

今天先從寫一個Spring MVC的HelloWorld開始,讓我們看看如何搭建起一個Spring mvc的環境並運行程序。

一、Maven環境配置

點擊Window -> Preferences

如下圖所示,配置settings.xml文件的位置

技術分享

二、新建Maven項目

2.1 新建項目

File-New-Other,選擇Dynamic web project

技術分享

隨後選擇工作空間:

技術分享

選完路徑之後,我們選擇構建類型,如下圖:

技術分享

接下來,填寫工程的Group Id,Artifact Id,如下圖:

  這裏的Group Id就是大項目的id,Arifact Id就是該項目的Id。就像一個大項目中有許多小項目組成一樣。

技術分享

2.2 完善目錄

  增加src/main/java,src/test/resources,src/test/java目錄。讓目錄變成標準的maven結構。以下為較為詳細目錄結構:

src

-main
–bin 腳本庫
–java java源代碼文件
–resources 資源庫,會自動復制到classes目錄裏
–filters 資源過濾文件
–assembly 組件的描述配置(如何打包)
–config 配置文件
–webapp web應用的目錄。WEB-INF->web.xml、css、js等
-test
–java 單元測試java源代碼文件
–resources 測試需要用的資源庫
–filters 測試資源過濾庫
 - site Site(一些文檔)

target
LICENSE.txt Project’s license
README.txt Project’s readme

工程根目錄下一般就只有src和target兩個目錄及pom.xml

target是有存放項目構建後的文件和目錄,jar包、war包、編譯的class文件等。

技術分享

2.3 將工程轉為web工程

將工程變成web工程

  此時,我們的工程還不是標準的web工程,可以在eclipse中增加web工程的特性,選擇工程的Properties,選Project Facets,如下圖:

  這裏,我們選擇Dynamic Web Module,版本選擇2.4,這個版本比較通用。如下圖:

技術分享

此時,我們看到目錄中多了一個WebContent目錄,由於使用maven構建,web目錄是src/main/webapp,所以我們刪除WebContent目錄。接下來,要配置web項目的發布目錄,點擊右鍵,選擇Properties,就是Deployment Assembly,如圖:

技術分享

2.3 pom.xml配置

技術分享
  1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3     <modelVersion>4.0.0</modelVersion>
  4     <groupId>SpringMVCExample</groupId>
  5     <artifactId>SpringMVCExample</artifactId>
  6     <packaging>war</packaging>
  7     <version>0.0.1-SNAPSHOT</version>
  8     <name>SpringMVCExample Maven Webapp</name>
  9     <url>http://maven.apache.org</url>
 10     <dependencies>
 11 
 12         <dependency>
 13             <groupId>org.apache.maven.plugins</groupId>
 14             <artifactId>maven-resources-plugin</artifactId>
 15             <version>2.5</version>
 16         </dependency>
 17 
 18         <dependency>
 19             <groupId>junit</groupId>
 20             <artifactId>junit</artifactId>
 21             <version>3.8.1</version>
 22             <scope>test</scope>
 23         </dependency>
 24 
 25         <!-- spring需要的jar包 -->
 26         <dependency>
 27             <groupId>org.springframework</groupId>
 28             <artifactId>spring-context</artifactId>
 29             <version>3.2.4.RELEASE</version>
 30             <type>jar</type>
 31         </dependency>
 32 
 33         <dependency>
 34             <groupId>org.springframework</groupId>
 35             <artifactId>spring-core</artifactId>
 36             <version>3.2.4.RELEASE</version>
 37             <type>jar</type>
 38         </dependency>
 39 
 40         <dependency>
 41             <groupId>org.springframework</groupId>
 42             <artifactId>spring-beans</artifactId>
 43             <version>3.2.4.RELEASE</version>
 44             <type>jar</type>
 45         </dependency>
 46 
 47         <dependency>
 48             <groupId>org.springframework</groupId>
 49             <artifactId>spring-webmvc</artifactId>
 50             <version>3.2.4.RELEASE</version>
 51             <type>jar</type>
 52         </dependency>
 53 
 54         <dependency>
 55             <groupId>org.springframework</groupId>
 56             <artifactId>spring-orm</artifactId>
 57             <version>3.2.4.RELEASE</version>
 58             <type>jar</type>
 59         </dependency>
 60 
 61         <!-- hibernate需要的jar包 -->
 62         <dependency>
 63             <groupId>org.hibernate</groupId>
 64             <artifactId>hibernate-validator</artifactId>
 65             <version>5.1.3.Final</version>
 66         </dependency>
 67 
 68         <dependency>
 69             <groupId>org.hibernate</groupId>
 70             <artifactId>hibernate-core</artifactId>
 71             <version>4.2.16.Final</version>
 72             <type>jar</type>
 73         </dependency>
 74 
 75         <!-- hibernate ehcache需要的jar包 -->
 76         <dependency>
 77             <groupId>org.hibernate</groupId>
 78             <artifactId>hibernate-ehcache</artifactId>
 79             <version>4.3.8.Final</version>
 80         </dependency>
 81 
 82         <!-- 連接MySQL數據庫需要的jar包 -->
 83         <dependency>
 84             <groupId>mysql</groupId>
 85             <artifactId>mysql-connector-java</artifactId>
 86             <version>5.1.34</version>
 87         </dependency>
 88 
 89         <!-- dbcp連接池需要的jar包 -->
 90         <dependency>
 91             <groupId>commons-dbcp</groupId>
 92             <artifactId>commons-dbcp</artifactId>
 93             <version>1.4</version>
 94         </dependency>
 95 
 96         <!-- jstl需要的jar包 -->
 97         <dependency>
 98             <groupId>jstl</groupId>
 99             <artifactId>jstl</artifactId>
100             <version>1.2</version>
101         </dependency>
102 
103         <!-- log4j需要的jar包 -->
104         <dependency>
105             <groupId>log4j</groupId>
106             <artifactId>log4j</artifactId>
107             <version>1.2.17</version>
108         </dependency>
109 
110         <!-- 文件上傳需要的jar包 -->
111         <dependency>
112             <groupId>commons-fileupload</groupId>
113             <artifactId>commons-fileupload</artifactId>
114             <version>1.2.1</version>
115         </dependency>
116 
117         <dependency>
118             <groupId>commons-io</groupId>
119             <artifactId>commons-io</artifactId>
120             <version>1.4</version>
121         </dependency>
122 
123         <!-- 單元測試需要的jar包 -->
124         <dependency>
125             <groupId>junit</groupId>
126             <artifactId>junit</artifactId>
127             <version>3.8.1</version>
128             <scope>test</scope>
129         </dependency>
130 
131         <dependency>
132             <groupId>javax.servlet.jsp</groupId>
133             <artifactId>jsp-api</artifactId>
134             <version>2.2</version>
135             <type>jar</type>
136         </dependency>
137 
138         <dependency>
139             <groupId>javax.validation</groupId>
140             <artifactId>validation-api</artifactId>
141             <version>1.1.0.Final</version>
142         </dependency>
143 
144         <dependency>
145             <groupId>org.apache.ant</groupId>
146             <artifactId>ant</artifactId>
147             <version>1.7.0</version>
148         </dependency>
149 
150         <!--json包 -->
151         <dependency>
152             <groupId>net.sf.json-lib</groupId>
153             <artifactId>json-lib</artifactId>
154             <version>2.4</version>
155             <classifier>jdk15</classifier>
156         </dependency>
157 
158         <dependency>
159             <groupId>commons-lang</groupId>
160             <artifactId>commons-lang</artifactId>
161             <version>2.5</version>
162         </dependency>
163 
164         <dependency>
165             <groupId>commons-collections</groupId>
166             <artifactId>commons-collections</artifactId>
167             <version>3.1</version>
168         </dependency>
169 
170         <dependency>
171             <groupId>commons-logging</groupId>
172             <artifactId>commons-logging</artifactId>
173             <version>1.2</version>
174         </dependency>
175 
176         <dependency>
177             <groupId>commons-beanutils</groupId>
178             <artifactId>commons-beanutils</artifactId>
179             <version>1.9.0</version>
180         </dependency>
181 
182         <dependency>
183             <groupId>net.sf.ezmorph</groupId>
184             <artifactId>ezmorph</artifactId>
185             <version>1.0.6</version>
186         </dependency>
187 
188         <!--poi操作excel所需jar -->
189         <dependency>
190             <groupId>org.apache.poi</groupId>
191             <artifactId>poi</artifactId>
192             <version>3.9</version>
193         </dependency>
194 
195         <dependency>
196             <groupId>org.apache.poi</groupId>
197             <artifactId>poi-ooxml</artifactId>
198             <version>3.9</version>
199         </dependency>
200     </dependencies>
201 </project>
pom.xml

三、SpringMVC配置

3.1 web.xml配置

  A 配置web.xml,使其具有springmvc特性,主要配置兩處,一個是ContextLoaderListener,一個是DispatcherServlet。代碼如下:

技術分享
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <servlet>
        <servlet-name>exam</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>
web.xml

   A1 配置ContextLoaderListener表示,該工程要以spring的方式啟動。啟動時會默認在/WEB-INF目錄下查找applicationContext.xml作為spring容器的配置文件,這裏可以初始化一些bean,如DataSource。我們這裏什麽也不做。代碼如下:

技術分享
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
3 <beans>
4 </beans>
applicationContext.xml

   A2 配置DispatcherServlet表示,該工程將采用springmvc的方式。啟動時也會默認在/WEB-INF目錄下查找XXX-servlet.xml作為配置文件,XXX就是DispatcherServlet的名字,該文件中將配置兩項重要的mvc特性:

     HandlerMapping,負責為DispatcherServlet這個前端控制器的請求查找Controller;
     ViewResolver,負責為DispatcherServlet查找ModelAndView的視圖解析器。    

技術分享
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!-- Bean頭部 -->
 3 <beans xmlns="http://www.springframework.org/schema/beans"
 4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
 5     xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
 6     xmlns:util="http://www.springframework.org/schema/util"
 7     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
 8             http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  
 9             http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd              
10             http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">
11     
12     <!-- [email protected] -->
13     <mvc:annotation-driven />
14     <!-- 對包中的所有類進行掃描,以完成Bean創建和自動依賴註入的功能 需要更改 -->
15     <context:component-scan base-package="cc.monggo.web.controller" />
16 
17     <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
18 
19     <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
20         <property name="prefix">
21             <value>/WEB-INF/jsp/</value>
22         </property>
23         <property name="suffix">
24             <value>.jsp</value>
25         </property>
26     </bean>
27 </beans>
servlet

2017-08-23

始,讓我們看看如何搭建起一個Spring mvc的環境並運行程

Eclipse maven構建springmvc項目