小編最近正在學習使用MVC框架,在搭建Maven的項目過程中,遇到了很多問題,上網搜了很多材料才找到答案,為了小編以后查起來方便,也為了向廣大小伙伴分享,寫了這部片博文,敬我昨天一天的學習結果!
步驟如下:
第一部分:創建Maven項目
1.首先我們需要新建一個工程,小編使用的是Idea的編輯器,eclipse的大體類似。使用File ->New->Project
2.在新彈出的對話框中,選擇Maven工程,在右側勾選“2”位置處的內容,在下面的選項中找到后綴為webapp的,選中后點擊Next。
需要注意的是,右邊的選項中有兩個webapp,如箭頭所示,我們使用第二個。
如果使用第一個的話,會遇到各種報錯,至於報什么錯呢,各位看官顯得無聊可以試試,小編就不多說了。
3.填寫一些項目內容。
GroupId和ArtifactId可以隨便填寫,填寫完成后,點擊Next。
4. 配置Maven
在新彈出的對話框中配置Maven版本和配置路徑。
如果電腦上已經存在Maven,點擊“Maven home directory” 后面的按鈕,選擇本機的Maven就好。如果沒有預裝,可以直接使用Idea提供的,即圖示“Bundeld(Maven)”,點擊下拉框可在各個Maven版本中切換。
“User setting file”和"Local repository"選項,可以使用默認路徑,也可以點擊“Overide”,然后重新自定義路徑。新手的話,推薦使用默認。
全部設置完成后,點擊Next。
在新彈出的對話框中,配置項目路徑和名稱,配置完成后點擊Finish。一個Maven的殼子就創建完成啦。
為新項目選擇新開一個窗口,當然也可以選擇在本窗口打開,各憑喜好。
最后就是等待項目加載完成,在這里會彈出一個提示框,我們選擇Enable auto-import,允許項目自動將需要的jar包導入,省去手工導入的操作。
第二部分:配置項目結構
1.配置項目框架
小編使用的是MVC模式,因此需要將MVC框架的內容加載到項目中。
在項目名稱上右鍵,選擇Add Framework Support。
在新彈出的對話框的左側中,找到並勾選Spring MVC。在右側,可以選擇使用本機已有的Spring MVC,也可以選擇Idea 自動下載,即“Download”。勾選完成后點擊“OK”
你會看到編譯器正在下載Spring相關的內容。
下載完成后,左側的目錄結構中會多出一個lib文件夾,里面存放的是Spring MVC相關的jar包,由於我們會在之后的pom.xml文件中配置這些內容,因此這個文件夾可以直接刪掉。
2.配置項目文件結構
MVC簡單來講,是將model,view, controller分離,單獨編碼,單獨管理,因此,我們在為項目配置目錄結構的時候,夜鶯從這幾方面考慮。
在Maven自動生成的目錄結構中,
我們在main目錄下創建java文件夾,其下分別創建condition,controller,dao,service,mapper文件夾,用於存放和管理后台代碼;創建resources文件夾,用於存放資源文件。
在src目錄下創建test文件夾,用於存放單元測試代碼。
在webapp文件夾下創建res文件夾,其下依次創建js,css,img文件夾,用於存放相應類型的文件;在WEB-INF文件夾下創建views文件夾,用於存放jsp頁面文件。
完整的目錄結構如下:
3.為文件夾配置權限
創建完文件后,可能會發現,在任何文件夾下都無法創建java文件,此時,我們需要為剛剛創建的文件夾配置權限。
選擇“File -> Project Structure”,打開對話框,點擊java文件夾,選擇Sources,點擊resources文件夾,選擇Resources,點擊test文件夾,選擇Test。
配置完成后選擇Apply 然后。關閉對話框,就會發現,文件夾的顏色和形態發生了變化,此時,就可以在java下創建class文件了。
4.配置pom.xml文件
現直接將小編的完整的XML文件奉上

1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 7 <groupId>MavenDemo2</groupId> 8 <artifactId>test.maven</artifactId> 9 <version>1.0-SNAPSHOT</version> 10 <packaging>war</packaging> 11 12 <name>test.maven Maven Webapp</name> 13 <!-- FIXME change it to the project's website --> 14 <url>http://www.example.com</url> 15 16 <properties> 17 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 18 <maven.compiler.source>1.7</maven.compiler.source> 19 <maven.compiler.target>1.7</maven.compiler.target> 20 </properties> 21 22 <dependencies> 23 <dependency> 24 <!-- junit測試包--> 25 <groupId>junit</groupId> 26 <artifactId>junit</artifactId> 27 <version>4.11</version> 28 <scope>test</scope> 29 </dependency> 30 <!--日志包--> 31 <dependency> 32 <groupId>org.slf4j</groupId> 33 <artifactId>slf4j-log4j12</artifactId> 34 <version>1.8.0-alpha2</version> 35 </dependency> 36 <!--mysql驅動包--> 37 <dependency> 38 <groupId>mysql</groupId> 39 <artifactId>mysql-connector-java</artifactId> 40 <version>6.0.6</version> 41 </dependency> 42 <!-- JDBC連接池 --> 43 <dependency> 44 <groupId>com.mchange</groupId> 45 <artifactId>c3p0</artifactId> 46 <version>0.9.5.2</version> 47 </dependency> 48 <!-- DruidDataSource,本工程的dataSource配置使用的Druid --> 49 <dependency> 50 <groupId>com.alibaba</groupId> 51 <artifactId>druid</artifactId> 52 <version>1.0.29</version> 53 </dependency> 54 <!--spring相關包--> 55 <dependency> 56 <groupId>org.springframework</groupId> 57 <artifactId>spring-web</artifactId> 58 <version>4.3.8.RELEASE</version> 59 </dependency> 60 <dependency> 61 <groupId>org.springframework</groupId> 62 <artifactId>spring-webmvc</artifactId> 63 <version>4.3.8.RELEASE</version> 64 </dependency> 65 <dependency> 66 <groupId>org.springframework</groupId> 67 <artifactId>spring-context-support</artifactId> 68 <version>4.3.8.RELEASE</version> 69 </dependency> 70 <dependency> 71 <groupId>org.springframework</groupId> 72 <artifactId>spring-oxm</artifactId> 73 <version>4.3.8.RELEASE</version> 74 </dependency> 75 <dependency> 76 <groupId>org.springframework</groupId> 77 <artifactId>spring-tx</artifactId> 78 <version>4.3.8.RELEASE</version> 79 </dependency> 80 <dependency> 81 <groupId>org.springframework</groupId> 82 <artifactId>spring-test</artifactId> 83 <version>4.3.8.RELEASE</version> 84 </dependency> 85 <dependency> 86 <groupId>org.springframework</groupId> 87 <artifactId>spring-jdbc</artifactId> 88 <version>4.3.8.RELEASE</version> 89 </dependency> 90 <dependency> 91 <groupId>org.aspectj</groupId> 92 <artifactId>aspectjweaver</artifactId> 93 <version>1.8.10</version> 94 </dependency> 95 <dependency> 96 <groupId>org.aspectj</groupId> 97 <artifactId>aspectjrt</artifactId> 98 <version>1.8.10</version> 99 </dependency> 100 <!-- 支持jsp相關包 --> 101 <dependency> 102 <groupId>javax.servlet</groupId> 103 <artifactId>jstl</artifactId> 104 <version>1.2</version> 105 </dependency> 106 <dependency> 107 <groupId>taglibs</groupId> 108 <artifactId>standard</artifactId> 109 <version>1.1.2</version> 110 </dependency> 111 <!--servlet/jsp api start--> 112 <dependency> 113 <groupId>javax.servlet</groupId> 114 <artifactId>servlet-api</artifactId> 115 <version>3.0-alpha-1</version> 116 </dependency> 117 <dependency> 118 <groupId>javax.servlet.jsp</groupId> 119 <artifactId>jsp-api</artifactId> 120 <version>2.2.1-b03</version> 121 </dependency> 122 <dependency> 123 <groupId>org.projectlombok</groupId> 124 <artifactId>lombok</artifactId> 125 <version>1.16.16</version> 126 </dependency> 127 <!-- Mybatis管理 start --> 128 <dependency> 129 <groupId>org.mybatis</groupId> 130 <artifactId>mybatis</artifactId> 131 <version>3.4.1</version> 132 </dependency> 133 <dependency> 134 <groupId>org.mybatis</groupId> 135 <artifactId>mybatis-spring</artifactId> 136 <version>1.3.0</version> 137 </dependency> 138 <dependency> 139 <groupId>com.alibaba</groupId> 140 <artifactId>fastjson</artifactId> 141 <version>1.2.33</version> 142 </dependency> 143 </dependencies> 144 145 <build> 146 <finalName>test.maven</finalName> 147 <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --> 148 <plugins> 149 <plugin> 150 <artifactId>maven-clean-plugin</artifactId> 151 <version>3.0.0</version> 152 </plugin> 153 <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --> 154 <plugin> 155 <artifactId>maven-resources-plugin</artifactId> 156 <version>3.0.2</version> 157 </plugin> 158 <plugin> 159 <artifactId>maven-compiler-plugin</artifactId> 160 <version>3.7.0</version> 161 </plugin> 162 <plugin> 163 <artifactId>maven-surefire-plugin</artifactId> 164 <version>2.20.1</version> 165 </plugin> 166 <plugin> 167 <artifactId>maven-war-plugin</artifactId> 168 <version>3.2.0</version> 169 </plugin> 170 <plugin> 171 <artifactId>maven-install-plugin</artifactId> 172 <version>2.5.2</version> 173 </plugin> 174 <plugin> 175 <artifactId>maven-deploy-plugin</artifactId> 176 <version>2.8.2</version> 177 </plugin> 178 </plugins> 179 </pluginManagement> 180 </build> 181 </project>
在Maven項目加載完成之后,pom文件中會自動生成一些配置,這些配置不需要修改,在其基礎上加上一些依賴包即可.
第三部分:完成一次訪問
1.配置web,xml文件

1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 5 version="3.1"> 6 7 <display-name>Archetype Created Web Application</display-name> 8 <!--配置首頁--> 9 <welcome-file-list> 10 <welcome-file>index.jsp</welcome-file> 11 </welcome-file-list> 12 <!--配置springmvc DispatcherServlet--> 13 <servlet> 14 <servlet-name>springMVC</servlet-name> 15 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 16 <init-param> 17 <!--配置dispatcher.xml作為mvc的配置文件--> 18 <param-name>contextConfigLocation</param-name> 19 <param-value>/WEB-INF/dispatcher-servlet.xml</param-value> 20 </init-param> 21 <load-on-startup>1</load-on-startup> 22 <async-supported>true</async-supported> 23 </servlet> 24 <servlet-mapping> 25 <servlet-name>springMVC</servlet-name> 26 <url-pattern>/</url-pattern> 27 </servlet-mapping> 28 <!--把applicationContext.xml加入到配置文件中--> 29 <context-param> 30 <param-name>contextConfigLocation</param-name> 31 <param-value>/WEB-INF/applicationContext.xml</param-value> 32 </context-param> 33 <listener> 34 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 35 </listener> 36 </web-app>
2.配置dispatcher-servlet.xml

1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:mvc="http://www.springframework.org/schema/mvc" 6 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> 7 <!--此文件負責整個mvc中的配置--> 8 9 <!--啟用spring的一些annotation --> 10 <context:annotation-config/> 11 12 <!-- 配置注解驅動 可以將request參數與綁定到controller參數上 --> 13 <mvc:annotation-driven/> 14 15 <!--靜態資源映射--> 16 <!--本項目把靜態資源放在了webapp的statics目錄下,資源映射如下--> 17 <mvc:resources mapping="/css/**" location="/res/css/"/> 18 <mvc:resources mapping="/js/**" location="/res/js/"/> 19 <mvc:resources mapping="/image/**" location="/res/img/"/> 20 <mvc:default-servlet-handler /> <!--這句要加上,要不然可能會訪問不到靜態資源,具體作用自行百度--> 21 22 <!-- 對模型視圖名稱的解析,即在模型視圖名稱添加前后綴(如果最后一個還是表示文件夾,則最后的斜杠不要漏了) 使用JSP--> 23 <!-- 默認的視圖解析器 在上邊的解析錯誤時使用 (默認使用html)- --> 24 <bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 25 <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> 26 <property name="prefix" value="/WEB-INF/views/"/><!--設置JSP文件的目錄位置--> 27 <property name="suffix" value=".jsp"/> 28 <property name="exposeContextBeansAsAttributes" value="true"/> 29 </bean> 30 31 <!-- 自動掃描裝配 --> 32 <context:component-scan base-package="controller"/> 33 34 </beans>
3.配置applicationContext.xml

1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 6 7 <context:component-scan base-package="java"/> 8 9 </beans>
4.配置jsp頁面
在views下創建index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>welcome</title> </head> <body> 訪問成功 </body> </html>
5.在controller下創建控制器
package controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/home") public class DemoController { @RequestMapping("/index") public String getStr(){ return "index"; } }
6.配置Tomcat
在圖示位置選擇Edit Configurations
在左側點擊+號,在列表中,找到“Tomcat Server -> Local”。
在右側Server選項卡中,“Configure”可以配置服務器的名字,自己隨意填寫就好,當然同時可以配置端口號、瀏覽器等信息。
在deployment選項卡中,選擇+號,選擇artifact。
在彈出的對話框中,選擇帶“exploded”的選項,點擊OK。
完成后,在“Application context”輸入框的“/”后面輸入項目名。點擊OK
配置完成后點擊Apply,關閉窗口,出現如下圖所示的樣子,即為配置成功。點擊運行。
7.訪問views的index.jsp
運行成功后,進入的頁面是webapp下的index.jsp,將地址欄的url更改為http://localhost:8080/maven/home/index,即可訪問在views下的index.jsp了。其中"/maven”是項目名,“/home”是controller的標志,“/index”是controller下某個方法的標志。