申明:部分內容參見別人的博客,沒有任何的商業用途,只是作為自己學習使用。(大佬博客)
一、相關環境
- eclipse :eclipse-jee-oxygen-3-win32-x86_64(下載地址)
-Maven:maven-3.5.3
- jdk :1.8
- tomcat:7.0
-mysql :5.5.4
-spring 5.0.1
二、軟件安裝
前面的軟件安裝包括Maven的簡單使用,我會抽時間寫一個簡單的教程。
三、創建MavenWeb項目
創建完之后,是這樣的,好像結構不對,別着急,問題:因為默認使用自帶的jdk,需要調成自己的jdk
解決方法:
別急,后台又開始另外一個錯誤:我們看他的描述,表示沒有找到"javax.servlet.http.HttpServlet"
Description Resource Path Location Type
The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path index.jsp /SpringMVCBlog/src/main/webapp line 1 JSP Problem
解決方法:
右鍵項目——properties——
一路apply——finish之后發現世界安靜了
四:利用Maven導入jar包
既然我們要用SpringMVC開發,那肯定少不了SpringMVC的相關jar包。如果不使用Maven的話,那就需要去官網下載相關的jar包,然后導入到項目中。現在使用maven的話,就不需要上網找jar包了。具體容我一一道來。
Maven所做的工作其實很簡單,就是自動把你需要的jar包下載到本地,然后關聯到項目中來。maven的所有jar包都是保存在幾個中央倉庫里面的,其中一個最常用的是Maven Repository,即,你需要什么jar包,它就會從倉庫中拿給你。那么如何告訴maven需要什么jar包呢?我們看看工程目錄,能找到一個pom.xml文件(這個文件在剛創建好項目時就已經展現在了大家面前),maven就是靠它來定義需求的,代碼如下:
<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.hone</groupId> <artifactId>SpringMVCBlog</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>SpringMVCBlog 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>SpringMVCBlog</finalName> </build> </project>
我們可以看到這個文件包含了我們之前定義的本項目的gropId等信息,這些信息是該項目的標識,我們不要去改動它們。重點看<dependencies>標簽,翻譯過來是”依賴“的意思,也就是說把對每個包的需求都稱為一個依賴<depedency>,定義在<dependencies>中。在每個<depedency>中,你需要提供的是所需jar包的groupId、artifactId、version這三個必要信息。比如上面我們看到引入可一個junit包,格式如下:
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency>
這是單元測試包,提供了三個基本信息,第4個scope對其他包來說是非必需的。所有jar包的引入都要滿足這個格式。那么如何查看這些jar包的3個信息呢,可能剛接觸是開發者還不是很熟悉,這個時候就需要查閱倉庫了。比如我們需要引入Spring核心jar包spring-core,打開Maven Repository,搜索spring-core,進入如下界面:
點擊進入紅框選中的Spring Core,如下所示,可以看到各版本的使用情況:
選擇最新版本4.2.5.RELEASE,可以看到其dependency寫法如下紅框所示:
我們將其復制到pom.xml中的<dependencies>中:
這樣,Maven就會開始自動下載jar包到本地倉庫,然后關聯到你的項目中,下載完成后,我們展開工程目錄中External Libraries:
可以發現,雖然我們只寫了一個依賴,但是它導入了兩個jar包,也就是說,導入某個jar包時,與它密切相關的jar包也會同時被導入進來。
除了spring-core,我還要spring-context,復制spring-core的<dependency>,將spring-core改為spring-context,如下:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.4.RELEASE</version> </dependency>
這就是Maven的強大之處,如果你需要使用SpringMVC開發網站的話,只需記住幾個重要的包的名字,就可以輕松將所有包導入項目中。
長話短說,現在我們要進行SpringMVC的開發,請把你的pom.xml變成下面的樣子,當然不要改你的grupId等信息(從modelVersion到url都不要動):
<properties> <spring.version>5.0.4.RELEASE</spring.version> <hibernate.version>5.1.0.Final</hibernate.version> </properties>
請在<dependencies>中加入以下依賴:
<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>SpringMVCBlog</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>
maven自動幫助我們配置了如此多的配置文件
可能在創建項目完成后提示錯誤:
Description Resource Path Location Type
Project configuration is not up-to-date with pom.xml. Run Maven->Update Project or use Quick Fix. SpringMVCDemo line 1 Maven Configuration Problem
解決方法:只需要按照提示右鍵項目——Maven——Updata Project
當建立項目之后,卻突然提示我這個錯誤
第一個錯誤提示我,java編譯jdk的版本和安裝jdk的版本不一致。
解決方法通常有以下幾種:
解決方法 1:
我使用的jdk是1.8
windows—proferences—java–compiler設置jdk為1.8
windows—proferences—java–Installed JREs設置jdk為1.8
點擊項目右鍵–properties—java Compiler 設置jdk為1.8
點擊項目右鍵–properties—eclipse—project Facets設置java為1.8
點擊項目右鍵–properties—eclipse—project Facets設置Dynamic Web Module 為3.1(這是你在web.xml配置的servlet版本)
點擊項目右鍵–Maven—update project 錯誤應該可以消除
如果還是不行你就在pom.xml里面的,修改plugin的版本(我安裝的jdk是1.8,但是我調成1.8之后,一直報錯,我只能調成jdk1.7,錯誤解決,但是此種方法指標不治本)
<plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins>
解決方法 2:
修改安裝目錄中的..\apache-maven-3.3.9\conf中的settings.xml中修改jdk版本
在profiles節點中添加
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
解決方法3:
到該項目路徑下面修改org.eclipse.wst.common.project.facet.core.xml這個文件,檢查版本是否一直
<?xml version="1.0" encoding="UTF-8"?> <faceted-project> <fixed facet="wst.jsdt.web"/> <installed facet="jst.web" version="3.1"/> <installed facet="wst.jsdt.web" version="1.0"/> <installed facet="java" version="1.8"/> </faceted-project>
到現在,一個完整的環境搭建完成。