Mac OS + IDEA 利用 Maven 創建 Spring MVC 項目


  在利用maven搭建 Spring MVC 項目之前,需要在本機上安裝配置好 Maven

本機配置Maven

  首先去Apache官網下載所需要的maven,注意需要下載 bin.tar.gz 格式,不要下成 bin.zip 或者 src.tar.zip。

解壓在自己的文件夾,我放在了 ⁩ Users⁩/⁨Yourname/⁨Applications⁩/⁨maven/apache-maven-3.6.1 下面⁩。

配置環境變量

1 vim ~/.bash_profile 

在里面添加

1 export M2_HOME=/Users/lzz/Applications/maven/apache-maven-3.6.1
2 export M2=$M2_HOME/bin
3 export PATH=$M2:$PATH

把路徑改為 maven 所在的目錄即可

然后使命令生效

1 source ~/.bash_profile

更改Maven默認倉庫

  如果不更改倉庫位置,系統會自動生成一個.m2 文件夾用以存放本地倉庫,我們更改了默認倉庫位置可以更方便管理

在maven下面創建倉庫文件夾:Users⁩/⁨Yourname/⁨Applications⁩/⁨maven/repository

創建 setting.xml:Users⁩/⁨Yourname/⁨Applications⁩/⁨maven/setting.xml。在 apache-maven-3.6.1/bin 下面就有一個 setting.xml,我們自己配的setting.xml 就是用來替代它的。

配置setting.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 4     xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
 5     
 6     <pluginGroups />
 7     <proxies />
 8     <servers />
 9     
10     <localRepository>/User/lzz/Application/maven/repository</localRepository>
11     
12     <mirrors>
13         <mirror>
14             <id>alimaven</id>
15             <mirrorOf>central</mirrorOf>
16             <name>aliyun maven</name>
17             <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
18         </mirror>
19         <mirror>
20             <id>alimaven</id>
21             <name>aliyun maven</name>
22             <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
23             <mirrorOf>central</mirrorOf>
24         </mirror>
25         <mirror>
26             <id>central</id>
27             <name>Maven Repository Switchboard</name>
28             <url>http://repo1.maven.org/maven2/</url>
29             <mirrorOf>central</mirrorOf>
30         </mirror>
31         <mirror>
32             <id>repo2</id>
33             <mirrorOf>central</mirrorOf>
34             <name>Human Readable Name for this Mirror.</name>
35             <url>http://repo2.maven.org/maven2/</url>
36         </mirror>
37         <mirror>
38             <id>ibiblio</id>
39             <mirrorOf>central</mirrorOf>
40             <name>Human Readable Name for this Mirror.</name>
41             <url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
42         </mirror>
43         <mirror>
44             <id>jboss-public-repository-group</id>
45             <mirrorOf>central</mirrorOf>
46             <name>JBoss Public Repository Group</name>
47             <url>http://repository.jboss.org/nexus/content/groups/public</url>
48         </mirror>
49         <mirror>
50             <id>google-maven-central</id>
51             <name>Google Maven Central</name>
52             <url>https://maven-central.storage.googleapis.com
53             </url>
54             <mirrorOf>central</mirrorOf>
55         </mirror>
56         <!-- 中央倉庫在中國的鏡像 -->
57         <mirror>
58             <id>maven.net.cn</id>
59             <name>oneof the central mirrors in china</name>
60             <url>http://maven.net.cn/content/groups/public/</url>
61             <mirrorOf>central</mirrorOf>
62         </mirror>
63     </mirrors>
64 </settings>
View Code

配置好 Maven 后,查看所配置的 maven 是否和本機使用的 JDK 版本一致:mvn -v

1 ➜  ~ mvn -v
2 Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-05T03:00:29+08:00) 3 Maven home: /Users/lzz/Applications/maven/apache-maven-3.6.1 4 Java version: 11.0.2, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home 5 Default locale: zh_CN_#Hans, platform encoding: UTF-8 6 OS name: "mac os x", version: "10.14.6", arch: "x86_64", family: "mac"

我用的 JDK 版本是 11.0.2。和 maven 匹配,說明已經配置好 Maven 了。

在 IDEA 中選擇配置好的Maven

在設置中選擇 Build tools-> Maven。選擇好我們之前配置好的Maven目錄,倉庫和 setting.xml。

  在 Build tools->Maven->Runner中,JRE 環境選擇與 Maven 匹配的版本,我這里是 11.0.2。

創建 Maven 項目

  點擊next,GroupId 是GroupID 是項目組織唯一的標識符,實際對應 Java 的包的結構,是 main 目錄里 Java 的目錄結構,ArtifactId 是項目的唯一的標識符,實際對應項目的名稱,就是項目根目錄的名稱。

繼續點擊next,在這里選擇好 Maven 的家目錄,setting file 和 倉庫位置選擇我們自己定義的位置。要先勾選覆蓋按鈕。

點擊 next,填寫項目名

  繼續點擊 next,創建完成后,IDEA 會幫我們拉取所需的 jar 包,所以創建過程中需要保持網絡暢通,如果我們在之前設置過 jar 拉取的源,比如使用阿里的源,這個過程很快就可以完成。

等IDEA幫我們拉去完jar包后,看看創建出來的初始項目結構

  webapp 文件夾下放一些頁面,以及項目的啟動配置,WEB-INF,其下面的 web.xml 會對項目的整體進行配置,后面會進行單獨對他配置。

我拉取出來的項目 main下面沒有 resource 文件夾,這個文件夾我們需要自己創建,並且右鍵選擇將其設置為 resource root。

配置環境

首先我們在 pom.xml 來配置項目依賴。

  在 Maven 倉庫 中搜索想要使用的 jar 包依賴。將其依賴放在 pom.xml 中。

 1   <dependencies>
 2     <dependency>
 3       <groupId>junit</groupId>
 4       <artifactId>junit</artifactId>
 5       <version>4.11</version>
 6       <scope>test</scope>
 7     </dependency>
 8     <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
 9     <dependency>
10       <groupId>org.springframework</groupId>
11       <artifactId>spring-beans</artifactId>
12       <version>${springframework.version}</version>
13     </dependency>
14     <!-- spring-context -->
15     <dependency>
16       <groupId>org.springframework</groupId>
17       <artifactId>spring-context</artifactId>
18       <version>${springframework.version}</version>
19     </dependency>
20 
21     <!-- Spring MVC + Spring web -->
22     <dependency>
23       <groupId>org.springframework</groupId>
24       <artifactId>spring-web</artifactId>
25       <version>${springframework.version}</version>
26     </dependency>
27 
28     <dependency>
29       <groupId>org.springframework</groupId>
30       <artifactId>spring-webmvc</artifactId>
31       <version>${springframework.version}</version>
32     </dependency>
33 
34     <!--jdbc -->
35     <dependency>
36       <groupId>org.springframework</groupId>
37       <artifactId>spring-jdbc</artifactId>
38       <version>${springframework.version}</version>
39     </dependency>
40 
41     <!-- mybatis -->
42     <dependency>
43       <groupId>org.mybatis</groupId>
44       <artifactId>mybatis</artifactId>
45       <version>3.4.0</version>
46     </dependency>
47     <dependency>
48       <groupId>org.mybatis</groupId>
49       <artifactId>mybatis-spring</artifactId>
50       <version>1.3.0</version>
51     </dependency>
52 
53     <!-- druid 數據源的管理 -->
54     <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
55     <dependency>
56       <groupId>com.alibaba</groupId>
57       <artifactId>druid</artifactId>
58       <version>1.1.12</version>
59     </dependency>
60 
61     <!-- mysql -->
62     <dependency>
63       <groupId>mysql</groupId>
64       <artifactId>mysql-connector-java</artifactId>
65       <version>5.1.30</version>
66     </dependency>
67 
68     <!-- lombok,可以得到一堆注解,get、set、toString就可以省略這些方法了 -->
69     <dependency>
70       <groupId>org.projectlombok</groupId>
71       <artifactId>lombok</artifactId>
72       <optional>true</optional>
73       <version>1.18.8</version>
74     </dependency>
75 
76     <!-- Jackson 處理json數據 -->
77     <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.datatype/jackson-datatype-jsr310 -->
78     <dependency>
79       <groupId>com.fasterxml.jackson.datatype</groupId>
80       <artifactId>jackson-datatype-jsr310</artifactId>
81       <!--jackson-datatype-guava ???? -->
82       <version>2.9.8</version>
83     </dependency>
84 
85   </dependencies>
View Code

配置完 pom.xml 之后我們可以在左側的外部依賴看到所有 Spring 為我們拉取進來的 jar 包。

配置 web.xml

  如果之前我們沒有將 resource 設置為  resource root,那么我們在配置 web.xml 的時候 context-param標簽會找不到 applicationContext.xml 的路徑。

 1   <!-- Spring beans 配置文件所在目錄-->
 2   <context-param>
 3     <param-name>contextConfigLocation</param-name>
 4     <param-value>classpath:applicationContext.xml</param-value>
 5   </context-param>
 6 
 7   <!-- Spring MVC 的配置 -->
 8   <servlet>
 9     <servlet-name>spring</servlet-name>
10     <!-- 就是對應spring-servlet這個配置文件-->
11     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
12   </servlet>
13 
14   <servlet-mapping>
15     <servlet-name>spring</servlet-name>
16     <url-pattern>/</url-pattern>
17   </servlet-mapping>
18 
19   <filter>
20     <filter-name>encodingFilter</filter-name>
21     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
22     <init-param>
23       <param-name>encoding</param-name>
24       <param-value>UTF-8</param-value>
25     </init-param>
26     <init-param>
27       <param-name>forceEncoding</param-name>
28       <param-value>true</param-value>
29     </init-param>
30   </filter>
31 
32   <filter-mapping>
33     <filter-name>encodingFilter</filter-name>
34     <url-pattern>/*</url-pattern>
35   </filter-mapping>
36 
37   <!-- druid 的基本使用-->
38   <servlet>
39     <!-- 指定哪個servlet去處理相關的請求-->
40     <servlet-name>DruidStatServlet</servlet-name>
41     <servlet-class>com.alibaba.druid.support.http.StatViewFilter</servlet-class>
42     <!-- 在做了這個基本配置之后,我們這個druid是需要進行登錄才可以訪問的,用戶名和密碼都是druid-->
43     <init-param>
44       <param-name>loginUsername</param-name>
45       <param-value>druid</param-value>
46     </init-param>
47     <init-param>
48       <param-name>loginPassword</param-name>
49       <param-value>druid</param-value>
50     </init-param>
51   </servlet>
52   <servlet-mapping>
53     <servlet-name>DruidStatServlet</servlet-name>
54     <url-pattern>/sys/druid/*</url-pattern>
55   </servlet-mapping>
56 
57   <!-- 告訴druid要攔截那些請求-->
58   <filter>
59     <filter-name>DruidWebStatFilter</filter-name>
60     <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
61     <!-- 還可以初始化參數-->
62     <init-param>
63       <param-name>exclusions</param-name>
64       <param-value>*.js,*.css,*.jpg,*.png,*.ico,*.gif,/sys/druid/*</param-value>
65     </init-param>
66   </filter>
67   <filter-mapping>
68     <filter-name>DruidWebStatFilter</filter-name>
69     <url-pattern>/*</url-pattern>
70   </filter-mapping>
71 
72 
73   <!-- 項目啟動的時候,默認訪問的目錄,項目生成的時候已經有了-->
74   <welcome-file-list>
75     <welcome-file>index.jsp</welcome-file>
76   </welcome-file-list>
View Code

配置 sping-servle

  在配置 servlet 的時候,又創建了一個配置文件,在WEB-INF下面 spring-servlet.xml 

  啟動注解驅動的包掃描功能,這里需要建一些包,在main下面建立項目包:java.com.mmall,下面建一些實際的邏輯代碼包。

  將 java 包標示為 source root,源代碼路徑。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 
 3 <beans xmlns="http://www.springframework.org/schema/beans"
 4        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5        xmlns:context="http://www.springframework.org/schema/context"
 6        xmlns:mvc="http://www.springframework.org/schema/mvc"
 7        xsi:schemaLocation="http://www.springframework.org/schema/beans
 8        http://www.springframework.org/schema/beans/spring-beans.xsd
 9        http://www.springframework.org/schema/context
10        http://www.springframework.org/schema/context/spring-context.xsd
11        http://www.springframework.org/schema/mvc
12        http://www.springframework.org/schema/mvc/spring-mvc.xsd ">
13 
14 
15     <context:annotation-config />
16 
17     <!-- 啟動注解驅動的 spring MVC 功能 -->
18     <mvc:annotation-driven />
19 
20     <!-- 啟動包掃描功能, 一般會掃描 controller 和 service, dao 相關的會通過 mybatis 來處理-->
21     <context:component-scan base-package="com.mmall.controller"/>
22     <context:component-scan base-package="com.mmall.service"/>
23 
24     <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
25     <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
26 
27     <bean id="jsonView" class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" />
28 
29     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
30         <property name="prefix" value="/views/" />
31         <property name="suffix" value=".jsp" />
32     </bean>
33 
34 </beans>
View Code

配置 applicationContext

  在做數據庫配置的時候,可以將 driverClassName、url、username、passwd 等放在配置文件 setting.propertities 中。在 propertyConfigurer 這個bean 中,配置了要去哪里取配置文件的地址:locations。於是又在resource 下面創建了一個 setting.properties 。這樣配好了之后,就可以從這個配置文件中獲取key-value值,將 value 填充到 dataSource 中的變量里。用  ${varaible}占位符表示變量。

 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" xmlns:tx="http://www.springframework.org/schema/tx"
 4        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
 5 
 6     <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
 7         <property name="locations">
 8             <list>
 9                 <!-- 這里又用到了 classpath,表示去resource 里面找配置文件 -->
10                 <value>classpath:settings.properties</value>
11             </list>
12         </property>
13     </bean>
14 
15     <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
16         <property name="driverClassName" value="${db.driverClassName}" />
17         <property name="url" value="${db.url}" />
18         <property name="username" value="${db.username}" />
19         <property name="password" value="${db.password}" />
20         <property name="minIdle" value="3" />
21         <property name="maxActive" value="20" />
22         <property name="maxWait" value="60000" />
23         <property name="filters" value="stat,wall" />
24     </bean>
25 
26     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
27         <!-- 添加配置文件-->
28         <property name="configLocation" value="classpath:mybatis-config.xml" />
29         <property name="dataSource" ref="dataSource" />
30         <!-- 定義sql寫在哪里 ,mybatis會去mapper下面讀取所有xml文件進行映射-->
31         <property name="mapperLocations" value="classpath:mapper/*.xml" />
32     </bean>
33 
34     <!-- mybatis自己的一些庫-->
35     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" >
36         <!-- 定義要掃描java里的那些包-->
37         <property name="basePackage" value="com.mmall.dao" />
38         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
39     </bean>
40 
41     <!-- 事物-->
42     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
43         <property name="dataSource" ref="dataSource" />
44         <tx:annotation-driven transaction-manager="transactionManager" />
45     </bean>
46 
47     <!-- druid  其中為stat的filter-->
48     <bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter" >
49         <!-- 如果這個sql執行超過了3000ms,則被視為慢sql-->
50         <property name="slowSqlMillis" value="3000" />
51         <!-- 如果是慢sql,則以日志形式記錄下來 -->
52         <property name="logSlowSql" value="true" />
53         <property name="mergeSql" value="true" />
54     </bean>
55 
56     <!-- druid 為wall-filter -->
57     <bean id="wall-filter" class="com.alibaba.druid.wall.WallFilter">
58         <property name="dbType" value="mysql" />
59     </bean>
60 </beans>
View Code

  其中setting.propertities內容如下:

1 db.driverClassName=com.mysql.jdbc.Driver
2 db.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
3 db.username=root
4 db.password=yourDBpasswd
View Code

  在配置完上述內容后,我們對一個Spring項目的基本配置就已經結束了,其中有些數據庫相關的配置,如果暫時用不上可以不要。為了將我們的servlet發布到容器上,我們還需要配置Tomcat。

配置 Tomcat

  首先仍然在Apache官網下載Tomcat,解壓縮放在自己想要放的文件夾下面。

在 IDEA 中配置 Tomcat

點擊 + 號

選擇 local

配置 server

如果你之前沒有配置過,在 Application server 中沒有版本,點擊右邊的 Configure,找到之前解壓的 Tomcat 目錄即可。

配置完 Server 之后,還有配置 Deployment,點擊下面的 + 號,選擇 Artifact,選擇 war exploded。

 

等 tomcat 服務器也配置好,我們最后創建一個簡單的控制類進行測試

 1 package com.mmall.controller;
 2 
 3 
 4 import org.springframework.stereotype.Controller;
 5 import org.springframework.web.bind.annotation.RequestMapping;
 6 import org.springframework.web.bind.annotation.ResponseBody;
 7 
 8 
 9 @Controller
10 @RequestMapping("/test")
11 public class TestController {
12     // private static final Logger logger = LoggerFactory.getLogger(TestController.class);
13     @RequestMapping("/hello")
14     @ResponseBody
15     public String hello() {
16         return "hello, myTestController";
17     }
18 }

打開瀏覽器,輸入 http://localhost:8080/permission_war_exploded/ 出現歡迎界面,

輸入 http://localhost:8080/permission_war_exploded/test/hello,

出現我們自己設定的字符串界面,即說明這個簡單的 Spring MVC 項目已經運行在我們的本地服務器上了。

 

  目前為止,通過在本機配置 Maven,IDEA中 創建 Maven 項目,配置 Spring 需要的一些文件,配置服務器並測試服務一系列的操作,我們基本實現了一個簡單 Spring MVC 項目的雛型。其中有些依賴包在最開始的時候可以不要,免得將項目結構搞的異常復雜。在這個過程中也遇到了一些問題,可以根據對應問題的錯誤提示去 stackOverFlow 上面搜索,解決了我好多問題,整個過程也參考了一些博客內容,寫的比較好的是這個

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM