1. 程式人生 > >ecplise maven springmvc工程搭建

ecplise maven springmvc工程搭建

轉載自:https://www.cnblogs.com/crazybirds/p/4643497.html

第一步:新建maven專案,選擇Maven Project,如圖1。 

  

 

此處需要針對maven進行配置。參考我的另一個部落格。

第二步:配置轉換專案為spring專案。

首先右擊專案,點選Properties,選擇左邊的java build path,我們先把出問題的刪除,如果不刪除,後面在新建source file時無法新建,如圖,選擇remove就行了。

 

  新建src/main/java、src/test/java/、src/test/resources,如圖,提示:如果你eclipse是選擇java模式,可以直接新建source file,j2ee模式可以切換到java模式。

 

修改jdk版本,如果此版本不修改,會造成maven與jdk不相容,導致編譯出問題,右擊JRE System Library[J2SE-1.5] 修改問1.7,如圖。

 

 你可以調整source folder的順序,根據自己的喜好,我不知道有什麼影響,看到有的教程上有調整的,如果你有強迫症,可以修改一下順序,如圖。

 

下面,我們解決最重要的一個步驟,spring專案的雛形就在這裡顯現, 把專案轉化為web專案,先找到位置,如圖。

 

點選Convert to faceted form... (註釋:有的教程修改Further configuration available...,其實一般預設就可以,不用可以修改,我的eclipse就選的預設的,沒修改),在右邊選擇你專案執行的應用伺服器,我選的是tomcat 7.0,你選的maven 和tomcat與你的jdk有很的關係,現在雖然8出來了,單是選擇1.7較為穩定,只是建議,根據個人喜好。

 

現在就轉化為了web專案,我們在配置其他的東西,完成整個專案 。

  現在的目錄結構為這種情況,如圖:

  第三步:轉化為spring專案,新增applicationContext.xml、simple-servlet.xml,配置spring檔案,配置spring引用包即確定引用檔案pom.xml。

applicationContext.xml 、demo-servlet.xml、web.xml為spring配置檔案,demo-servlet.xml為配置轉發器,主要作用與view層,applicationContext.xml主要配置資料庫與事務,在這裡不過多講解,單是這兩個檔案一定要搞清楚怎麼配置,每個配置模組什麼意思,不求甚解會害慘自己,出個問題,找不到原因,我就曾經在這個地方吃過虧。對於pom.xml檔案,我建議大家整理出一個自己需要的版本,之前大家不使用maven的時候,都是整理自己一個完整的lib包,maven的作用就是替大家管理引用檔案,pom.xml檔案就是配置需要引入的包,你專案依賴哪些包,就在這些pom.xml檔案裡引用,maven會幫你下載。下面依次列出每個檔案的內容。

demo-servlet.xml

 <?xml version="1.0" encoding="UTF-8"?>

複製程式碼 <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context 
       http://www.springframework.org/schema/context/spring-context-3.0.xsd
       http://www.springframework.org/schema/tx 
       http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
       http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">

    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" />

    <context:component-scan base-package="com.demo.controller" />
    <mvc:annotation-driven />

    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver"
        p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />
</beans>
複製程式碼 applicationContext.xml 複製程式碼 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context 
       http://www.springframework.org/schema/context/spring-context-3.0.xsd
       http://www.springframework.org/schema/tx 
       http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

    <context:component-scan base-package="com.demo" />

    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource"
        p:driverClassName="com.mysql.jdbc.Driver"
        p:url="jdbc:mysql://XXX.XXX.130.XXX:3306/anhe?useUnicode=true&amp;characterEncoding=UTF-8"
        p:username="root" p:password="XXXXXX" />
    <!-- 配置Jdbc模板 -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"
        p:dataSource-ref="dataSource" />

    <!-- 配置事務管理器 -->
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
        p:dataSource-ref="dataSource" />

    <!-- 通過AOP配置提供事務增強,讓service包下所有Bean的所有方法擁有事務 -->
    <aop:config proxy-target-class="true">
        <aop:pointcut id="serviceMethod"
            expression=" execution(* com.baobaotao.service..*(..))" />
        <aop:advisor pointcut-ref="serviceMethod" advice-ref="txAdvice" />
    </aop:config>
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="*" />
        </tx:attributes>
    </tx:advice>
</beans
複製程式碼

web.xml

 <?xml version="1.0" encoding="UTF-8"?>

複製程式碼 <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <filter>
        <filter-name>CharacterEncoding</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>demo</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>demo</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>/WEB-INF/jsp/index.jsp</welcome-file>
    </welcome-file-list>
</web-app>
複製程式碼

 pom.xml檔案

複製程式碼 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>smart</groupId>
    <artifactId>demo</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo Maven Webapp</name>
    <url>http://maven.apache.org</url>
    <repositories>
        <repository>
            <id>com.springsource.repository.bundles.release</id>
            <name>EBR Spring Release Repository</name>
            <url>http:// repository.springsource.com/maven/bundles/release</url>
        </repository>
        <repository>
            <id>com.springsource.repository.bundles.external</id>
            <name>EBR External Release Repository</name>
            <url>http:// repository.springsource.com/maven/bundles/external</url>
        </repository>
    </repositories>
    <properties>
        <org.springframework.version>3.0.5.RELEASE</org.springframework.version>
    </properties>
    <!-- Core utilities used by other modules. Define this if you use Spring 
        Utility APIs (org.springframework.core.*/org.springframework.util.*) -->
    <dependencies>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.6.12</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>
        <!-- Expression Language (depends on spring-core) Define this if you use 
            Spring Expression APIs (org.springframework.expression.*) -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>        <!-- Bean Factory and JavaBeans utilities (depends on spring-core) Define             this if you use Spring Bean APIs (org.springframework.beans.*) -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-beans</artifactId>            <version>${org.springframework.version}</version>        </dependency>        <!-- Aspect Oriented Programming (AOP) Framework (depends on spring-core,             spring-beans) Define this if you use Spring AOP APIs (org.springframework.aop.*) -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-aop</artifactId>            <version>${org.springframework.version}</version>        </dependency>        <!-- Application Context (depends on spring-core, spring-expression, spring-aop,             spring-beans) This is the central artifact for Spring's Dependency Injection             Container and is generally always defined -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-context</artifactId>            <version>${org.springframework.version}</version>        </dependency>        <!-- Various Application Context utilities, including EhCache, JavaMail,             Quartz, and Freemarker integration Define this if you need any of these integrations -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-context-support</artifactId>            <version>${org.springframework.version}</version>        </dependency>        <!-- Transaction Management Abstraction (depends on spring-core, spring-beans,             spring-aop, spring-context) Define this if you use Spring Transactions or             DAO Exception Hierarchy (org.springframework.transaction.*/org.springframework.dao.*) -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-tx</artifactId>            <version>${org.springframework.version}</version>        </dependency>        <!-- JDBC Data Access Library (depends on spring-core, spring-beans, spring-context,             spring-tx) Define this if you use Spring's JdbcTemplate API (org.springframework.jdbc.*) -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-jdbc</artifactId>            <version>${org.springframework.version}</version>        </dependency>        <!-- Object-to-Relation-Mapping (ORM) integration with Hibernate, JPA,             and iBatis. (depends on spring-core, spring-beans, spring-context, spring-tx)             Define this if you need ORM (org.springframework.orm.*) -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-orm</artifactId>            <version>${org.springframework.version}</version>        </dependency>        <!-- Object-to-XML Mapping (OXM) abstraction and integration with JAXB,             JiBX, Castor, XStream, and XML Beans. (depends on spring-core, spring-beans,             spring-context) Define this if you need OXM (org.springframework.oxm.*) -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-oxm</artifactId>            <version>${org.springframework.version}</version>        </dependency>        <!-- Web application development utilities applicable to both Servlet and             Portlet Environments (depends on spring-core, spring-beans, spring-context)             Define this if you use Spring MVC, or wish to use Struts, JSF, or another             web framework with Spring (org.springframework.web.*) -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-web</artifactId>            <version>${org.springframework.version}</version>        </dependency>        <!-- Spring MVC for Servlet Environments (depends on spring-core, spring-beans,             spring-context, spring-web) Define this if you use Spring MVC with a Servlet             Container such as Apache Tomcat (org.springframework.web.servlet.*) -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-webmvc</artifactId>            <version>${org.springframework.version}</version>        </dependency>        <!-- Spring MVC for Portlet Environments (depends on spring-core, spring-beans,             spring-context, spring-web) Define this if you use Spring MVC with a Portlet             Container (org.springframework.web.portlet.*) -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-webmvc-portlet</artifactId>            <version>${org.springframework.version}</version>        </dependency>        <!-- Support for testing Spring applications with tools such as JUnit and             TestNG This artifact is generally always defined with a 'test' scope for             the integration testing framework and unit testing stubs -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-test</artifactId>            <version>${org.springframework.version}</version>            <scope>test</scope>        </dependency>        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>5.1.36</version>        </dependency>    </dependencies>    <build>        <finalName>demo</finalName>    </build></project>

配置一下專案依賴關係,如圖,remove右邊紅色框裡面的內容,部署不需要把test檔案部署上去,是不是???毋庸置疑。

 

再Add如下檔案,如圖:

 

不知道你們發現嗎?現在專案還是紅叉+s,那是因為我們還有一個地方沒有修改,如圖: 

 

當我們配置好之後,專案又有可能自動改回來,看看之前是不是我們選擇過jdk版本,但是現在又改了一次,那是因為還有個地方搗鬼,我當時就吃虧到到這個地方,浪費了好幾十分鐘思考,結果還是不如谷歌,哦,又想起一點,谷歌不是被封了,用這個"穀粉http://www.jwss.com/" ,也是谷歌的引擎。修改下圖配置,java編譯器:

 

此刻,我們神奇的發現,是不是在maven依賴包裡出現瞭如下美好畫面:

 

至此,專案配置檔案搞定,下面我們新增示例程式碼演示maven神奇之處。

第五步:測試專案。我們只寫一個攔截器,來測試一下。

新建一個jsp資料夾,如圖:

 

在controller報中,我們新建一個java類HomeController,新增如下程式碼:

 

複製程式碼 package com.demo.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.demo.dao.HomeServcies;

@Controller
public class HomeController {
    @Autowired
    HomeServcies homeServcies;

    @RequestMapping(value = "index")
    public String Index() {
        return "index";
    }

}
複製程式碼

 測試執行:

出現神奇的,如圖:

到此,結束了。