Java Web筆記:搭建環(huán)境和項(xiàng)目配置(MyEclipse 2014 + Maven + Tomcat)

版權(quán)所有辑甜,轉(zhuǎn)載注明。

0. 緒言

Java Web開發(fā)中袍冷,除了基礎(chǔ)知識外磷醋,開發(fā)環(huán)境搭建,也是一項(xiàng)基本功胡诗。開發(fā)環(huán)境包括了IDE邓线、項(xiàng)目管理、項(xiàng)目架構(gòu)組織煌恢、依賴管理等等骇陈,以及簡單的測試。能夠熟練的搭建出Java Web的開發(fā)環(huán)境瑰抵,也能夠提現(xiàn)開發(fā)者Java Web的開發(fā)功底你雌,如Maven依賴管理的使用,項(xiàng)目組織結(jié)構(gòu)的清晰程度二汛,都能體現(xiàn)開發(fā)者素質(zhì)婿崭。

環(huán)境搭建過程比較簡單拨拓,但是基于Maven的Java Web項(xiàng)目,在MyEclipse這個IDE下創(chuàng)建時逛球,需要做一些自主的調(diào)整千元。

1. 環(huán)境參數(shù)

MyEclipse

MyEclipse Spring 2014 GA (很多人不懂GA苫昌,General Availability颤绕,正式發(fā)布的版本),Spring版本增加了Spring插件祟身,裝標(biāo)準(zhǔn)版奥务、Pro版也可以。如果沒有必要袜硫,就不用裝blue版本和bling了氯葬。

其他

JDK 1.7
Maven 3.3.3
Tomcat 8

2. 安裝

配置Java開發(fā)環(huán)境

下載安裝JDK 1.7,JRE 7
配置環(huán)境變量:
(1)新建 JAVA_HOME
D:\Java\jdk1.7.0_17
(2)新建JAVA_CLASSPATH
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
(3)添加Path
.;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
注意了,JRE環(huán)境變量慎重添加婉陷,小心Tomcat啟動錯誤帚称。

Maven

下載,解壓到常用目錄秽澳,盡量簡潔的路徑闯睹。
我的路徑:D:\apache-maven-3.3.3

安裝MyEclipse

下載標(biāo)準(zhǔn)版,或者Spring版本担神,選擇穩(wěn)定的楼吃,我用的是2014版本,之前一直用2010版本妄讯,都挺好用的孩锡。
安裝完成即可。

Tomcat

下載亥贸,解壓到常用目錄躬窜,盡量簡潔的路徑。
我的路徑:D:\apache-tomcat-8.0.23

3. MyEclipse的Maven配置

啟動MyEclipse炕置,配置Maven:Window -> Preferences -> MyEclipse -> Maven4MyEclipse
所有的配置都在此處完成荣挨。

添加Maven

配置JDK:

Maven配置JDK.png

Installations中:


添加Maven.png

通過Add,添加自己的Maven讹俊,配置文件會自動識別獲取到垦沉。
User Settings中:


配置參數(shù)文件.png

完成配置后即可使用。
Tomcat配置

Window -> Preferences -> MyEclipse -> Servers -> Tomcat


Tomcat配置.png

選擇Tomcat主目錄:


Tomcat配置參數(shù).png

完成配置仍劈。

4. Java Web on Maven項(xiàng)目建立

Java Web on Maven項(xiàng)目厕倍,有兩種方式建立,與IntelliJ IDEA不同贩疙,MyEclipse默認(rèn)并不是基于Maven進(jìn)行項(xiàng)目管理的讹弯,而是使用自己的項(xiàng)目管理方式况既。因此,此處有兩種方式建立項(xiàng)目:
·建立一個Java Web Project组民,引入Maven(推薦棒仍,快捷)
·建立一個Maven Project,引入J2EE

建立一個Java Web Project 并 引入 Maven

Java Web提供了Java Web所需要的各類文件和文件目錄臭胜,但是并沒有提供Maven莫其,所以需要進(jìn)行適當(dāng)?shù)囊搿?/p>

這種方式建立的項(xiàng)目,有著Maven的結(jié)構(gòu)耸三,采用Maven管理包乱陡,但實(shí)質(zhì)上是一個Java Web項(xiàng)目。不過從本實(shí)際效果看仪壮,和第二種方法是一致的憨颠。

新建Java Web項(xiàng)目

新建Java Web項(xiàng)目.png

進(jìn)入向?qū)В?br>
建立項(xiàng)目.png

Next... Next....
選擇添加web.xml.png

Next...
目錄結(jié)構(gòu)選擇.png

推薦選擇標(biāo)準(zhǔn)Maven項(xiàng)目結(jié)構(gòu),圖中雖然是選在第一個积锅,但是實(shí)際上選了第二個爽彤,不再重復(fù)截圖了。
創(chuàng)建完成.png

最終創(chuàng)建成功缚陷,項(xiàng)目結(jié)構(gòu)如圖:

Java Web 項(xiàng)目引入Maven管理.png

建立一個 Maven Project 并 引入J2EE

這種方式建立的項(xiàng)目适篙,是一個Maven項(xiàng)目,增加了對Java Web的相關(guān)支持蹬跃,補(bǔ)充了各類配置參數(shù)文件和目錄匙瘪。與前一種方法所達(dá)到的效果是相同的。

通過建立Maven項(xiàng)目蝶缀,然后將J2EE引入到項(xiàng)目中丹喻,添加必要的目錄結(jié)構(gòu)等。
新建項(xiàng)目:

新建Maven項(xiàng)目.png

使用filter篩選:

選擇Maven.png

需要選擇一個archetype:輸入webapp篩選翁都,可能一開始沒有加載出來碍论,稍微等等:

沒加載出來的.png

MyEclipse玩命的在處理.png

archetype加載成功.png

如圖,選擇webapp-javaee的6或者7柄慰,此處選擇7鳍悠,Next...


Maven參數(shù).png

Finish完成項(xiàng)目建立。
完成建立項(xiàng)目如圖:

項(xiàng)目結(jié)構(gòu).png

里面有個錯誤坐搔,新建項(xiàng)目就有錯誤藏研,有意思:
Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-dependency-plugin:2.6:copy (execution: default, phase: validate)
說是有個plugin有問題:

maven-dependency-plugin問題.png

解決辦法是給這個plugin單獨(dú)包一下:

<build>
    <pluginManagement>
        <plugins>
            <plugin> ... </plugin>
            <plugin> ... </plugin>
                  ....
        </plugins>
    </pluginManagement>
</build>```

![使用子項(xiàng)目添加方式,解決問題.png](http://upload-images.jianshu.io/upload_images/1708416-8790d2b51692c475.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/640)
錯誤解決了概行,Maven項(xiàng)目建立成功蠢挡。

從前面項(xiàng)目結(jié)構(gòu)圖中,可以看到,Maven項(xiàng)目具有的特征目錄結(jié)構(gòu)與在Java Web項(xiàng)目基礎(chǔ)上引入Maven包管理基本一致业踏,但還是有比較多的細(xì)節(jié)差別禽炬,下面將一一補(bǔ)充。
##### 補(bǔ)充目錄
補(bǔ)充
**src/main/resources
   src/main/webapp/WEB-INF
   src/main/webapp/WEB-INF/classes
   src/main/webapp/META-INF   
   src/test/resources
   src/test/webapp**  

![補(bǔ)充后的目錄結(jié)構(gòu).png](http://upload-images.jianshu.io/upload_images/1708416-c8b7cdac067d4699.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/640)
目錄增加后勤家,跟build path設(shè)置:
![選擇配置.png](http://upload-images.jianshu.io/upload_images/1708416-19d27a7d8e6e2737.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/640)
增加對應(yīng)的目錄腹尖,如果你之前不是增加的sources folder:

![增加源目錄.png](http://upload-images.jianshu.io/upload_images/1708416-374990976c57543c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/720)
配置輸出目錄:

![配置輸出目錄.png](http://upload-images.jianshu.io/upload_images/1708416-ac10ecdb1741dd4b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/720)
最終結(jié)果:
![配置結(jié)果.png](http://upload-images.jianshu.io/upload_images/1708416-b8fbdee0378ba0bc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/640)
此時基本上就配置完成了。

# 5. 項(xiàng)目其他配置
> 參考網(wǎng)上大牛們的經(jīng)驗(yàn)伐脖,有如下一些經(jīng)驗(yàn)配置热幔,感謝各位大牛提供的寶貴經(jīng)驗(yàn),在此不一一列舉晓殊。

##### 常用包pom配置
###### spring包
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>4.1.1.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>${spring.version}</version>
</dependency>
###### servlet
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
</dependency>
###### 數(shù)據(jù)相關(guān)操作
數(shù)據(jù)庫操作断凶,MySQL伤提、iBatis
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.37</version>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>${mybatis-spring-version}</version>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>${mybatis-version}</version>
</dependency>
<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.3.2</version>
</dependency>
數(shù)據(jù)源配置
<dependency>
    <groupId>com.mchange</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.5.1</version>
</dependency>
json操作
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>fastjson</artifactId>
   <version>1.2.1</version>
</dependency>
###### 測試包
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>4.1.1.RELEASE</version>
    <scope>test</scope>
</dependency>
###### 日志包
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>${log4j-version}</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>${slf4j-version}</version>
</dependency>
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${slf4j-version}</version>
</dependency>
###### 其他
<dependency>
   <groupId>org.apache.commons</groupId>
   <artifactId>commons-lang3</artifactId>
   <version>3.3</version>
</dependency>

##### web.xml
web.xml配置中巫俺,一些比較常見的配置。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>Maven4JavaWebProjectDemo</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Maven4JavaWebProjectDemo</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Maven4JavaWebProjectDemo</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<filter>
<filter-name>encodingFilter</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>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<session-config>
<session-timeout>60</session-timeout>
</session-config>
</web-app>

**注冊了一個servlet肿男,是org.springframework.web.servlet.DispatcherServlet前端控制器介汹,同時給這個servlet前端控制器分配了servlet-mapping。此處舶沛,給DispatcherServlet分配的映射是/嘹承,即所有的請求。同時如庭,此處指定了Spring的DispatcherServlet的配置文件所在位置:classpath:spring/applicationContext.xml叹卷。**
跟著網(wǎng)上大牛學(xué)習(xí),spring配置:

<servlet>
<servlet-name>Maven4JavaWebProjectDemo</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

###### applicationContext.xml
位于src/main/resources/spring/目錄下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<import resource="classpath:spring/applicationContext-mvc.xml" />
</beans>

該配置中坪它,import了外部文件骤竹,用于配置mvc內(nèi)容,位置與其在相同目錄:

<?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:context="http://www.springframework.org/schema/context"
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/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd"
default-lazy-init="true">
<context:component-scan base-package="com.hgr.Maven4JavaWebProjectDemo"/>
<mvc:resources location="/WEB-INF/pages/" mapping="/pages/**"/>

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>

<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=utf-8</value>
<value>application/json;charset=utf-8</value>
<value>application/x-www-form-urlencoded</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
</beans>

##### 項(xiàng)目輸出配置:
![WEB輸出配置.png](http://upload-images.jianshu.io/upload_images/1708416-3f7da446125e78fc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/640)

# 6. 部署
可以Debug As往毡,也可以Run As:
![部署運(yùn)行.png](http://upload-images.jianshu.io/upload_images/1708416-37386d222a28acdb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/480)
選擇之前配置的Server:
![選擇Server.png](http://upload-images.jianshu.io/upload_images/1708416-738ad381959227c1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/360)
Tomcat的webapp下部署成功:

![文件目錄.png](http://upload-images.jianshu.io/upload_images/1708416-6d92a5cfae011924.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/360)

測試運(yùn)行:

![運(yùn)行結(jié)果.png](http://upload-images.jianshu.io/upload_images/1708416-6ae6c31ba8bae91a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/640)

跟著大牛學(xué)習(xí)蒙揣,參考來自:[嘟嘟MD](http://www.reibang.com/users/a7f72d78fe0d)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市开瞭,隨后出現(xiàn)的幾起案子懒震,更是在濱河造成了極大的恐慌,老刑警劉巖嗤详,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件个扰,死亡現(xiàn)場離奇詭異,居然都是意外死亡葱色,警方通過查閱死者的電腦和手機(jī)递宅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人恐锣,你說我怎么就攤上這事茅主。” “怎么了土榴?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵诀姚,是天一觀的道長。 經(jīng)常有香客問我玷禽,道長赫段,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任矢赁,我火速辦了婚禮糯笙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘撩银。我一直安慰自己给涕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布额获。 她就那樣靜靜地躺著够庙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪抄邀。 梳的紋絲不亂的頭發(fā)上耘眨,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天,我揣著相機(jī)與錄音境肾,去河邊找鬼剔难。 笑死,一個胖子當(dāng)著我的面吹牛奥喻,可吹牛的內(nèi)容都是我干的偶宫。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼衫嵌,長吁一口氣:“原來是場噩夢啊……” “哼读宙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起楔绞,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤结闸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后酒朵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體桦锄,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年蔫耽,在試婚紗的時候發(fā)現(xiàn)自己被綠了结耀。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片留夜。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖图甜,靈堂內(nèi)的尸體忽然破棺而出碍粥,到底是詐尸還是另有隱情,我是刑警寧澤黑毅,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布嚼摩,位于F島的核電站,受9級特大地震影響矿瘦,放射性物質(zhì)發(fā)生泄漏枕面。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一缚去、第九天 我趴在偏房一處隱蔽的房頂上張望潮秘。 院中可真熱鬧,春花似錦易结、人聲如沸枕荞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽买猖。三九已至,卻和暖如春滋尉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背飞主。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工狮惜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人碌识。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓碾篡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親筏餐。 傳聞我的和親對象是個殘疾皇子开泽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容