Eclipse 使用Maven構(gòu)建SpringMVC項(xiàng)目
首先Eclipse需要安裝Maven的插件,地址:http://m2eclipse.sonatype.org/sites/m2e。
用MyEclipse安裝Maven插件,建出的Maven項(xiàng)目有些問(wèn)題。一是,發(fā)布tomcat的時(shí)候resources總是不會(huì)被發(fā)布到tomcat下;二是,把WEB-INF下的classes改到target下的classes,但是不知道為什么MyEclipse要么仍然在WEB-INF下生成class。要么真不在WEB-INF生成classes了但是發(fā)布tomcat的時(shí)候,class文件一個(gè)都不會(huì)給你發(fā)布過(guò)去,超級(jí)郁悶。但是使用Eclipse構(gòu)建Maven項(xiàng)目后,使用MyEclipse打開(kāi)就沒(méi)問(wèn)題了。
用maven的好處:我感覺(jué)最主要就是自動(dòng)下載jar包和它所依賴的包,這樣可以保證了多人開(kāi)發(fā)時(shí)jar版本不同的問(wèn)題。再就是文件結(jié)構(gòu)清晰,java文件,資源文件,測(cè)試文件都分的很清楚。
將介紹兩種方法:一,直接建立Maven項(xiàng)目方法;二、建立Dynamic Web project轉(zhuǎn)成Maven項(xiàng)目方法。
一、直接建立Maven項(xiàng)目方法
1、建立Maven項(xiàng)目
接下來(lái)使用Eclipse的maven構(gòu)建一個(gè)web項(xiàng)目,以構(gòu)建SpringMVC項(xiàng)目為例:
1.1 選擇建立Maven Project
選擇File -> New -> Other,在New窗口中選擇 Maven -> Maven Project。點(diǎn)擊next。

1.2 選擇項(xiàng)目路徑
Use default Workspace location默認(rèn)工作空間。

1.3 選擇項(xiàng)目類型
在Artifact Id中選擇maven-archetype-webapp

1.4 輸入Group ID和 Artifact ID,以及Package
Group ID一般寫(xiě)大項(xiàng)目名稱。Artifact ID是子項(xiàng)目名稱。
例如Spring的web包,Group ID:org.springframework,artifactId:spring-web。
Package是默認(rèn)給你建一個(gè)包,不寫(xiě)也可以。

1.5 剛建立好后的文件結(jié)構(gòu)如下圖

如果這里顯示的內(nèi)容多,一般是Filters設(shè)置的問(wèn)題?;騪erspective為JavaEE模式,改成Java模式就可以了。
2、配置Maven項(xiàng)目
接下來(lái)就需要更改好多配置了。
2.1 添加Source文件夾
接下來(lái)需要添加src/main/java,src/test/java ,src/test/resources三個(gè)文件夾。右鍵項(xiàng)目根目錄點(diǎn)擊New -> Source Folder,
建出這三個(gè)文件夾。注意不是建普通的Folder,而是Source Folder。


2.2 更改class路徑
右鍵項(xiàng)目,Java Build Path -> Source
下面應(yīng)該有4個(gè)文件夾。src/main/java,src/main/resources,src/test/java ,src/test/resources。
雙擊每個(gè)文件夾的Output folder,選擇路徑。
src/main/java,src/main/resources,選擇target/classes;
src/test/java ,src/test/resources, 選擇target/test-classes;
選上Allow output folders for source folders.
在此處還要更改:
更改文件夾顯示的順序:點(diǎn)擊Order and Export。
更改JDK版本:在Libraries雙擊JRE System Library,要1.6版本。

2.3 把項(xiàng)目變成Dynamic Web項(xiàng)目
2.3.1 右鍵項(xiàng)目,選擇Project Facets,點(diǎn)擊Convert to faceted from

2.3.2 配置Project Facets
更改Dynamic Web Module的Version為2.5。(3.0為Java7的)。
如果提示錯(cuò)誤,可能需要在Java Compiler設(shè)置Compiler compliance level 為1.6。或者需要在此窗口的Java的Version改成1.6。

2.3.3 配置 Modify Faceted Project
點(diǎn)擊Further configuration available…,彈出Modify Faceted Project窗口
此處是設(shè)置web.xml文件的路徑,我們輸入src/main/webapp。
Generate web.xml deployment descriptor自動(dòng)生成web.xml文件,可選可不選。
2.4 設(shè)置部署程序集(Web Deployment Assembly)
上面步驟設(shè)置完成后,點(diǎn)擊OK,Properties窗口會(huì)關(guān)閉,在右鍵項(xiàng)目打開(kāi)此窗口。在左側(cè)列表中會(huì)出現(xiàn)一個(gè)Deployment Assembly,點(diǎn)擊進(jìn)去后,如下圖:

此處列表是,部署項(xiàng)目時(shí),文件發(fā)布的路徑。
1.我們刪除test的兩項(xiàng),因?yàn)閠est是測(cè)試使用,并不需要部署。
2.設(shè)置將Maven的jar包發(fā)布到lib下。
Add -> Java Build Path Entries -> Maven Dependencies -> Finish
設(shè)置完成效果圖

3、向maven項(xiàng)目中添加jar包
maven可以管理項(xiàng)目依賴的jar包,通過(guò)groupID、artifactId以及版本號(hào)可以唯一確定一個(gè)jar包。這樣可以防止老式Web項(xiàng)目中WEB-INF/lib下jar包不一致的問(wèn)題。并且maven還會(huì)自動(dòng)下載添加進(jìn)的jar包所依賴的jar包。
3.1 在pom.xml中添加所需要的jar包
使用Maven POM editor打開(kāi)項(xiàng)目中的pom.xml文件,選擇Dependencies,在Dependencies欄目點(diǎn)擊Add進(jìn)行,首先彈出一個(gè)搜索按鈕,例如輸入spring-web,就會(huì)自動(dòng)搜索關(guān)于spring-web相關(guān)的jar包,我們選擇3.0.5版本的spring。將spring包全部添加進(jìn)來(lái)。需要添加的其他jar包有:junit、jstl?;蛘唿c(diǎn)擊pom.xml直接編輯pom.xml文件。這樣可以直接copy過(guò)來(lái)dependencies內(nèi)容。

3.2設(shè)置jar包的scope

當(dāng)添加進(jìn)入一個(gè)jar包后,有一些屬性需要設(shè)置,最重要的就是scope,它有以下幾種取值:
1.compile,缺省值,適用于所有階段,會(huì)隨著項(xiàng)目一起發(fā)布。
2.provided,類似compile,期望JDK、容器或使用者會(huì)提供這個(gè)依賴。如servlet.jar。
3.runtime,只在運(yùn)行時(shí)使用,如JDBC驅(qū)動(dòng),適用運(yùn)行和測(cè)試階段。
4.test,只在測(cè)試時(shí)使用,用于編譯和運(yùn)行測(cè)試代碼。不會(huì)隨項(xiàng)目發(fā)布。
5.system,類似provided,需要顯式提供包含依賴的jar,Maven不會(huì)在 Repository中查找它。
通常SpringMVC項(xiàng)目所需要配置scope的jar包如下圖:

有的時(shí)候發(fā)現(xiàn)servlet-api還是被打包到lib下面了,此時(shí)肯定會(huì)報(bào)錯(cuò)。就需要把maven插件中的WTP也安裝一下。
Eclipse在線安裝路徑:http://m2eclipse.sonatype.org/sites/m2e-extras。選擇for Eclipse WTP。

4、構(gòu)建SpringMVC框架
4.1 編輯web.xml文件
需要添加log4j,字符過(guò)濾,Spring 的dispatcher等。
webx.xml代碼如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5" >
<!-- 區(qū)分項(xiàng)目名稱,防止默認(rèn)重名 -->
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>maven.example.root</param-value>
</context-param>
<!-- Spring的log4j監(jiān)聽(tīng)器 -->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<!-- 字符集 過(guò)濾器 -->
<filter>
<filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Spring view分發(fā)器 -->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
4.2 編寫(xiě)Spring配置文件dispatcher-servlet.xml
如要添加MVC驅(qū)動(dòng)、注解檢測(cè)、視圖解析等。dispatcher-servlet.xml代碼如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 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-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <mvc:annotation-driven /> <context:component-scan base-package="liming.maven.example" /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" /> </bean> </beans>
4.3 編寫(xiě)一個(gè)Controller層測(cè)試類
編寫(xiě)一個(gè)SpringMVC的Controller層測(cè)試類。此類只有一個(gè)方法做地址映射,并向頁(yè)面?zhèn)鬟f一個(gè)數(shù)據(jù)。代碼如下:
package liming.maven.example.view;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class GeneralController {
@RequestMapping(value="index.do")
public void index_jsp(Model model){
model.addAttribute("liming", "黎明你好");
System.out.println("index.jsp");
}
}
4.4 編寫(xiě)index.jsp頁(yè)面
首先在src/main/webapp/WEB-INF下建文件夾views。此處和dispatcher-servlet.xml配置文件中的prefix屬性路徑要一樣。
在views下建index.jsp文件
我們使用jstl獲取Controlleradd的數(shù)據(jù)。
Jsp頁(yè)面代碼如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:out value="${liming}"></c:out>
</body>
</html>
5. 發(fā)布到tomcat
這個(gè)就沒(méi)啥說(shuō)的了。
6. 測(cè)試
訪問(wèn)地址:http://localhost:8080/liming.maven.example/index.do
訪問(wèn)的結(jié)果來(lái)個(gè)截圖:

二、建立Dynamic Web project轉(zhuǎn)成Maven項(xiàng)目方法
7、第二種方法DynamicWeb項(xiàng)目轉(zhuǎn)成Mavan
7.1 新建Dynamic Web Project
依次選擇選擇File -> New -> Other。在New窗口中選擇Web下的Dynamic Web Project。點(diǎn)擊next。

7.2 配置項(xiàng)目信息
7.2.1 輸入項(xiàng)目信息
首先輸入項(xiàng)目名稱。
Target runtime 一般選擇使用什么容器,tomcat之類的??梢韵炔贿x。
Dynamic web module version。就是版本號(hào)。選擇2.5(3.0是Java7的)。
Configuration 是選擇容易的配置。如果Target runtime選擇了tomcat。這里對(duì)應(yīng)也是選擇tomcat。
Next。

7.2.2 配置source和output的folder
此窗口輸入需要建立的Source folders。和默認(rèn)output folder。
這個(gè)我們的Source folders等建立完項(xiàng)目后在添加。
output folder可以順手改成target/classes。

7.2.3 配置web.xml文件的路徑

7.3 轉(zhuǎn)成maven項(xiàng)目
Dynamic web項(xiàng)目建立完后,首先將其轉(zhuǎn)成maven項(xiàng)目。
右鍵此項(xiàng)目,選擇maven -> Enable Dependency Management。彈出的窗口,直接finish就可以了。

7.4 其他配置
接下來(lái)的配置工作就和前面的基本一樣了。
請(qǐng)參考上面。
2.1 添加Source文件夾
2.2 更改class路徑。
2.3.3 配置 Modify Faceted Project
2.4 設(shè)置部署程序集(Web Deployment Assembly)
接著就是構(gòu)建SpringMVC框架,發(fā)布到tomcat,測(cè)試。
附件下載:
- 詳解IDEA用maven創(chuàng)建springMVC項(xiàng)目和配置
- 使用Maven搭建SpringMVC項(xiàng)目的步驟(圖文教程)
- springmvc+shiro+maven 實(shí)現(xiàn)登錄認(rèn)證與權(quán)限授權(quán)管理
- Eclipse使用maven搭建spring mvc圖文教程
- SpringMVC Tomcat控制臺(tái)亂碼問(wèn)題解決方案
- JavaWeb項(xiàng)目中springmvc和tomcat對(duì)靜態(tài)文件的處理
- 使用Maven 搭建 Spring MVC 本地部署Tomcat的詳細(xì)教程
相關(guān)文章
java HttpURLConnection 發(fā)送文件和字符串信息
這篇文章主要介紹了java HttpURLConnection 發(fā)送文件和字符串信息的相關(guān)資料,需要的朋友可以參考下2017-06-06
Java方法重載實(shí)現(xiàn)原理及代碼實(shí)例
這篇文章主要介紹了Java方法重載實(shí)現(xiàn)原理及代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
Spring Shell 命令行實(shí)現(xiàn)交互式Shell應(yīng)用開(kāi)發(fā)
本文主要介紹了Spring Shell 命令行實(shí)現(xiàn)交互式Shell應(yīng)用開(kāi)發(fā),能夠幫助開(kāi)發(fā)者快速構(gòu)建功能豐富的命令行應(yīng)用程序,具有一定的參考價(jià)值,感興趣的可以了解一下2025-04-04
通過(guò)Java實(shí)現(xiàn)RSA加密與驗(yàn)證的方法詳解
RSA是一種非對(duì)稱加密算法,是目前廣泛應(yīng)用于加密和數(shù)字簽名領(lǐng)域的一種加密算法,本文主要講述如何通過(guò)Java實(shí)現(xiàn)RSA加密與驗(yàn)證,應(yīng)用場(chǎng)景為與其他平臺(tái)對(duì)接接口時(shí),通過(guò)RSA加密和解密驗(yàn)證請(qǐng)求的有效性,在對(duì)接時(shí)雙方互換公鑰,需要的朋友可以參考下2023-12-12
java安全?ysoserial?CommonsCollections1示例解析
這篇文章主要介紹了java安全?ysoserial?CommonsCollections1示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10

