@(環(huán)境配置)
摘要
這篇主要是記錄自己使用 sts 使用maven搭建 springmvc整合mybatis項(xiàng)目過(guò)程和踩過(guò)的一些坑:
- 項(xiàng)目目錄結(jié)構(gòu)問(wèn)題
- Dynamic Web2.3 和 Dynamic Web3.0 兼容問(wèn)題
- 各種文件存放目錄問(wèn)題
使用sts創(chuàng)建 maven項(xiàng)目
選擇 webapp 項(xiàng)目:
填寫項(xiàng)目信息:
創(chuàng)建后目錄如下:
真是有點(diǎn)坑啊暖眼,剛剛創(chuàng)建的最基本的maven項(xiàng)目,直接就報(bào)錯(cuò)贝润,而且大家可以看到浮毯,項(xiàng)目目錄是又問(wèn)題的绘迁,現(xiàn)在我們來(lái)解決下面兩個(gè)問(wèn)題:
項(xiàng)目目錄結(jié)構(gòu)問(wèn)題
這個(gè)問(wèn)題很好解決绒极,主要是因?yàn)?jdk 導(dǎo)致的与柑,我們可以右鍵項(xiàng)目->build path-> configure build path
編輯項(xiàng)目使用的jdk環(huán)境為自己安裝的jdk環(huán)境躲叼,我這里安裝的是 java8.0, 所以選擇 java1.8.
然后 finish -> applay 之后芦缰,可以看到項(xiàng)目目錄結(jié)構(gòu)正常了:
解決錯(cuò)誤
錯(cuò)誤是因?yàn)闆](méi)有引入包導(dǎo)致的,我們可以直接引入 servlet 的包就可以解決:
在 pom.xml 文件中引入 dependency, 解決問(wèn)題
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
Web2.3 轉(zhuǎn) Web3.0 問(wèn)題
這個(gè)問(wèn)題的來(lái)源主要是因?yàn)槲业?code>web.xml 默認(rèn)是 2.3的枫慷,但是現(xiàn)在基本上都使用 3.0 的配置了让蕾,但是 sts創(chuàng)建的基本webapp還是 2.3浪规,就比較坑爹了。網(wǎng)上看了很多方法探孝,需要修改各種配置文件笋婿,太過(guò)于麻煩,這里提供一個(gè)簡(jiǎn)單的方法:
項(xiàng)目屬性 -> project facets:
可以看到當(dāng)前狀態(tài)是 web 2.3 以及 java 1.5:
- 先將 java1.5 修改為 自己安裝的 jdk 版本顿颅,我這里是java1.8缸濒,可直接修改
- 但是如果此時(shí)你直接修改 Dynamic web module 為 3.0 的話,會(huì)報(bào)錯(cuò):
所以我們先將它 取消勾選粱腻,點(diǎn)擊ok庇配,
然后再次進(jìn)到這里,勾選它:
此時(shí)可以直接點(diǎn)擊OK栖疑,也可以選擇下面的further configuration avaliable
:
- 可以保持默認(rèn)讨永,然后就會(huì)創(chuàng)建WebContent 目錄,以及勾選 web.xml 文件遇革。
-
我這里提供另外一種方法卿闹,將 WebContent 修改為:
src/main/webapp
,大家可能就明白了萝快,這個(gè)為了兼容 2.3 的配置文件锻霎,這樣我就不需要?jiǎng)h除原來(lái)的配置文件了。
兩種方法都可以揪漩,我選擇的是后者旋恼。
修改到這里,項(xiàng)目居然有錯(cuò):
看一下 probleams:
是因?yàn)?web.xml
下的配置還是2.3奄容,這里直接修改為:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID"
version="3.0" >
<display-name>Archetype Created Web Application</display-name>
</web-app>
搞定冰更。
然后 alt+F5 更新項(xiàng)目,又出錯(cuò)了:
還記得剛剛開(kāi)始我們修改自己的項(xiàng)目jdk為1.8昂勒,但是這里為什么還是1.5呢蜀细?
我們需要再在 pom.xml
文件中添加 一個(gè) plugin:
<build>
<finalName>spring-mybatis</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>
然后 alt+F5 更新項(xiàng)目,問(wèn)題終于解決完了:
最后是關(guān)于文件存放目錄的問(wèn)題
這里直接截個(gè)圖:
需要說(shuō)明的是戈盈,在maven打包過(guò)程中奠衔,會(huì)將所有的這些文件都打到war包中,包括 web.xml 等一些文件塘娶。
我這里想強(qiáng)調(diào)的是归斤,在 web3.0項(xiàng)目中,mapping文件夾不能再存放在 src/main/java 下刁岸, src/main/java 下只會(huì)把 java文件打包脏里,而在2.3中,所有 src/main/java 下的文件虹曙,包括配置文件迫横,都會(huì)被打包鸦难,這點(diǎn)需要注意。 所以我們需要將 mapping 文件夾放到 resources 目錄下员淫。
代碼下載:
其他的沒(méi)什么好說(shuō)的了合蔽,大家可以在網(wǎng)上搜得到,下面再提供我項(xiàng)目的最基本設(shè)置介返,供大家參考: