轉(zhuǎn)載請(qǐng)注明出處:Gaussic(一個(gè)致力于AI研究卻不得不兼顧項(xiàng)目的研究生)铃岔。
訪問(wèn)GitHub下載最新源碼:https://github.com/gaussic/SpringMVCDemo
前言
由于近期一直在做學(xué)術(shù)方面的工作,項(xiàng)目開(kāi)發(fā)相關(guān)工作并沒(méi)有花太多的時(shí)間,導(dǎo)致這篇文章的更新停步了很長(zhǎng)一段時(shí)間」羝現(xiàn)在應(yīng)大家的要求氯庆,補(bǔ)上剩余部分涣楷,望能給大家?guī)?lái)一些幫助环肘。由于時(shí)間的原因,在開(kāi)發(fā)環(huán)境上面有了一定的更新揭璃,但是并不造成太大的影響晚凿。
一、相關(guān)環(huán)境
Intellij IDEA 2016.2 Ultimate
Tomcat 8.0.35
JDK 1.8.0_92
Spring 4.2.6
MySql 5.7
Maven 3.3.9
-
Bootstrap 3.3.5
事先聲明瘦馍,請(qǐng)確保IntelliJ IDEA歼秽、Tomcat、MySql和JDK都已經(jīng)安裝好情组。Maven和Bootstrap的話能有則有燥筷。前者為了讓導(dǎo)包更容易,后者為了讓頁(yè)面更美觀院崇。此外肆氓,由于jdk以及mysql的安裝網(wǎng)上已經(jīng)有了很多教程,在此為節(jié)省篇幅不做介紹底瓣。
二谢揪、本地Maven與Tomcat的安裝
注:如果使用IntelliJ IDEA集成的maven 3.0.5的話,可以忽略此步安裝。
下載好tomcat和maven拨扶,配置好path環(huán)境.自己看看是否能跑起來(lái)凳鬓,確定環(huán)境沒(méi)有問(wèn)題
三、創(chuàng)建Maven Web項(xiàng)目
前面說(shuō)了這么多患民,差不多基本的東西都保障了(前提保證你已經(jīng)安裝了jdk)∷蹙伲現(xiàn)在進(jìn)入正題,如何來(lái)創(chuàng)建一個(gè)Web項(xiàng)目酒奶。對(duì)于不使用Maven的開(kāi)發(fā)者,可以直接建一個(gè)簡(jiǎn)單的Web項(xiàng)目奶赔。使用Maven的話惋嚎,請(qǐng)按照?qǐng)D進(jìn)行操作。
-
用maven新建一個(gè)webapp
Paste_Image.png 菜單File->New Project可進(jìn)入上圖界面站刑,首先選擇左邊欄Maven另伍,再配置JDK(一般如果之前添加了JDK的話會(huì)自動(dòng)填充,如未添加的話點(diǎn)擊旁邊的New將JDK目錄導(dǎo)入即可)绞旅。勾選“Create from archetype“摆尝,然后選中4處藍(lán)色位置webapp,點(diǎn)Next因悲,進(jìn)入如下界面:
這里需要填寫(xiě)GroupId和ArtifactId還有Version堕汞,這三個(gè)屬性目的是標(biāo)識(shí)你的項(xiàng)目的唯一性,比如Tomcat的GroupId是org.apache晃琳,即它是apache組織的項(xiàng)目讯检,ArtifactId是tomcat,項(xiàng)目名為tomcat卫旱,而我當(dāng)前使用的Version是7.0.68人灼。這些只在發(fā)布時(shí)有用,在此可以隨便填寫(xiě)顾翼,填好后點(diǎn)Next投放,到如下界面。
-
打開(kāi)Maven home directory适贸,可以發(fā)現(xiàn)IntelliJ IDEA已經(jīng)集成了Maven 2和Maven 3兩個(gè)版本灸芳,如果使用默認(rèn)集成的maven的話,選擇Buldled(Maven 3)拜姿,直接點(diǎn)擊Next耗绿。
Paste_Image.png
我們也可以導(dǎo)入本地新安裝的較新的Maven版本,點(diǎn)擊藍(lán)色箭頭右邊的 ... 按鈕將Maven路徑導(dǎo)入即可砾隅,點(diǎn)擊
- 這里我說(shuō)下我的maven中的setting配置:
<!--本地倉(cāng)庫(kù)的位置 -->
<localRepository>D:/app/apache-maven-3.3.9/m2/repository</localRepository>
<!--設(shè)置的下載印象是阿里云 -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
- 填寫(xiě)項(xiàng)目名误阻,選擇項(xiàng)目保存路徑,點(diǎn)擊Finish:
- 進(jìn)入如下界面,maven會(huì)在后臺(tái)生成web項(xiàng)目究反,這需要等待一定的時(shí)間寻定,視網(wǎng)絡(luò)環(huán)境而定,經(jīng)驗(yàn)發(fā)現(xiàn)用較新版本的maven項(xiàng)目生成更快精耐,使用IDEA集成的maven可能會(huì)等待很長(zhǎng)一段實(shí)踐狼速。
左邊紅框中展示了該項(xiàng)目的文件結(jié)構(gòu)∝酝#可以發(fā)現(xiàn)向胡,它在src/main下創(chuàng)建了一個(gè)recources文件夾,該文件夾一般用來(lái)存放一些資源文件惊完,還有一個(gè)webapp文件夾僵芹,用來(lái)存放web配置文件以及jsp頁(yè)面等,這已經(jīng)組成了一個(gè)原始的web應(yīng)用小槐。選擇右邊紅框的Enable-Auto-Import拇派,可以在每次修改pom.xml后,自動(dòng)的下載并導(dǎo)入jar包凿跳,這一點(diǎn)在后面詳述件豌。
注:如果這一步生成實(shí)在太慢的話,建議看一下以下兩篇
文章1: http://www.cnblogs.com/beiyeren/p/4566485.html
文章2:http://blog.csdn.net/cleverlzc/article/details/50864582
四控嗜、Maven自動(dòng)導(dǎo)入jar包
既然我們要用SpringMVC開(kāi)發(fā)茧彤,那肯定少不了SpringMVC的相關(guān)jar包。如果不使用Maven的話疆栏,那就需要去官網(wǎng)下載相關(guān)的jar包棘街,然后導(dǎo)入到項(xiàng)目中。現(xiàn)在使用maven的話承边,就不需要上網(wǎng)找jar包了遭殉。具體容我一一道來(lái)。
Maven所做的工作其實(shí)很簡(jiǎn)單博助,就是自動(dòng)把你需要的jar包下載到本地险污,然后關(guān)聯(lián)到項(xiàng)目中來(lái)。maven的所有jar包都是保存在幾個(gè)中央倉(cāng)庫(kù)里面的富岳,其中一個(gè)最常用的是Maven Repository蛔糯,即,你需要什么jar包窖式,它就會(huì)從倉(cāng)庫(kù)中拿給你蚁飒。那么如何告訴maven需要什么jar包呢?我們看看工程目錄萝喘,能找到一個(gè)pom.xml文件(這個(gè)文件在剛創(chuàng)建好項(xiàng)目時(shí)就已經(jīng)展現(xiàn)在了大家面前)淮逻,maven就是靠它來(lái)定義需求的琼懊,代碼如下:
<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>com.gaussic</groupId>
<artifactId>springmvcdemo</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>springmvcdemo Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>springmvcdemo</finalName>
</build>
</project>
我們可以看到這個(gè)文件包含了我們之前定義的本項(xiàng)目的gropId等信息,這些信息是該項(xiàng)目的標(biāo)識(shí)爬早,我們不要去改動(dòng)它們哼丈。重點(diǎn)看<dependencies>標(biāo)簽,翻譯過(guò)來(lái)是”依賴(lài)“的意思筛严,也就是說(shuō)把對(duì)每個(gè)包的需求都稱(chēng)為一個(gè)依賴(lài)<depedency>醉旦,定義在<dependencies>中。在每個(gè)<depedency>中桨啃,你需要提供的是所需jar包的groupId车胡、artifactId、version這三個(gè)必要信息照瘾。比如上面我們看到引入可一個(gè)junit包匈棘,格式如下:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
這是單元測(cè)試包,提供了三個(gè)基本信息网杆,第4個(gè)scope對(duì)其他包來(lái)說(shuō)是非必需的羹饰。所有jar包的引入都要滿足這個(gè)格式伊滋。那么如何查看這些jar包的3個(gè)信息呢碳却,可能剛接觸是開(kāi)發(fā)者還不是很熟悉,這個(gè)時(shí)候就需要查閱倉(cāng)庫(kù)了笑旺。比如我們需要引入Spring核心jar包spring-core昼浦,打開(kāi)Maven Repository,搜索spring-core筒主,進(jìn)入如下界面:
我們將其復(fù)制到pom.xml中的<dependencies>中:
這樣关噪,Maven就會(huì)開(kāi)始自動(dòng)下載jar包到本地倉(cāng)庫(kù),然后關(guān)聯(lián)到你的項(xiàng)目中乌妙,下載完成后使兔,我們展開(kāi)工程目錄中External Libraries:
可以發(fā)現(xiàn),雖然我們只寫(xiě)了一個(gè)依賴(lài)藤韵,但是它導(dǎo)入了兩個(gè)jar包虐沥,也就是說(shuō),導(dǎo)入某個(gè)jar包時(shí)泽艘,與它密切相關(guān)的jar包也會(huì)同時(shí)被導(dǎo)入進(jìn)來(lái)欲险。
除了spring-core,我還要spring-context匹涮,復(fù)制spring-core的<dependency>天试,將spring-core改為spring-context,如下:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.5.RELEASE</version>
</dependency>
下載完成后然低,查看External Libraries喜每,會(huì)不會(huì)發(fā)現(xiàn)务唐,瞬間導(dǎo)入了好多jar包(當(dāng)然不是瞬間,這得看你的網(wǎng)速了)呢:
這就是Maven的強(qiáng)大之處灼卢,如果你需要使用SpringMVC開(kāi)發(fā)網(wǎng)站的話绍哎,只需記住幾個(gè)重要的包的名字,就可以輕松將所有包導(dǎo)入項(xiàng)目中鞋真。
長(zhǎng)話短說(shuō)崇堰,現(xiàn)在我們要進(jìn)行SpringMVC的開(kāi)發(fā),請(qǐng)把你的pom.xml變成下面的樣子涩咖,當(dāng)然不要改你的grupId等信息(從modelVersion到url都不要?jiǎng)樱?/p>
<properties>
<spring.version>4.2.6.RELEASE</spring.version>
<hibernate.version>5.1.0.Final</hibernate.version>
</properties>
請(qǐng)?jiān)?lt;dependencies>中加入以下依賴(lài):
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.10.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
將<build>改成如下形式:
<build>
<finalName>springmvcdemo</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
我們可以發(fā)現(xiàn)海诲,除了導(dǎo)入了spring相關(guān)jar包,還有一些其他的包檩互,這些包都是有作用的特幔,我們后面慢慢說(shuō)。如果不使用Maven請(qǐng)自行下載spring闸昨、hibernate蚯斯、mysql、jstl等相關(guān)jar包然后導(dǎo)入到工程中饵较。至此拍嵌,jar包的導(dǎo)入就完成了,我們按 ctrl+alt+shift+s循诉,或者File->Project Structure查看一下項(xiàng)目結(jié)構(gòu)横辆,看看有什么問(wèn)題:
由于之后我們要開(kāi)始寫(xiě)代碼了,先做一些配置茄猫,選擇Modules狈蚤,在SpringMVCDemo的src\main文件夾中新建一個(gè)文件夾,取名為java
選中java文件夾划纽,點(diǎn)擊上面的Make as:Sources脆侮,該文件夾就會(huì)變成藍(lán)色,用以保存java代碼勇劣,按OK靖避,結(jié)束配置。