[Java] Maven 創建 Spring MVC 工程

GIT: https://github.com/yangyxd/Maven.SpringMVC.Web

1. 創建 WebApp 工程

下一步:html

下一步: 選擇 maven-archetype-webappjava

下一步,設置 Group ID, Artifact Id 以及 package 包名。git

點擊 Finish 完成。github

能夠看到有一些錯誤。web

解決辦法:spring

1. 在 Project Explorer 中的項目上點擊右鍵,在彈出菜單上點擊 "Properties" , 在屬性對話框中,定位到 Java Build Path 中,切換到 Source 頁,刪除不須要項。express

2. 修改 pom.xml 文件

<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>yangyxd</groupId>
  <artifactId>maven.springmvc.web</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>maven.springmvc.web Maven Webapp</name>
  <url>http://maven.apache.org</url>

  
  <!-- 定義依賴庫的版本變量 -->
  <properties>
      <commons-lang.version>2.6</commons-lang.version>
      <slf4j.version>1.7.6</slf4j.version>
      <!-- spring 版本號 -->
      <spring.version>4.3.3.RELEASE</spring.version>
  </properties>
  
  <!-- 依賴庫定義 -->
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    
    <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>${commons-lang.version}</version>
    </dependency>
    
    <!-- 防止 jsp 報錯  -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>
    
    <!-- JSTL 定製標籤庫  -->
    <dependency>  
        <groupId>javax.servlet</groupId>  
        <artifactId>jstl</artifactId>  
        <version>1.2</version>  
        <type>jar</type>  
        <scope>compile</scope>  
    </dependency>    
        
    <!-- Jakarta Taglibs JSP定製標籤庫  -->
    <dependency>
        <groupId>taglibs</groupId>
        <artifactId>standard</artifactId>
        <version>1.1.2</version>
    </dependency>
    
    <!-- 各類集合類和集合工具類 -->
    <dependency>  
        <groupId>commons-collections</groupId>  
        <artifactId>commons-collections</artifactId>  
        <version>3.2.1</version>  
    </dependency>
    
    <!-- Spring Begin -->

    <dependency>  
        <groupId>org.springframework</groupId>  
        <artifactId>spring-aop</artifactId>  
        <version>${spring.version}</version>  
        <type>jar</type>  
        <scope>compile</scope>  
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</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-expression</artifactId>  
        <version>${spring.version}</version>  
        <type>jar</type>  
        <scope>compile</scope>  
    </dependency>  
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</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-aspects</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-oxm</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-messaging</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</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-jms</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
    </dependency>
    
    <!-- Spring End -->
    
    <!-- Maven Compiler Plugins -->
    <!-- 
    <dependency>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.5.1</version>
      <type>maven-plugin</type>
    </dependency>
     -->
  </dependencies>    
  
  <build>
      <plugins>

      <!-- maven 編譯插件 -->
        <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
        
            <!-- 源代碼使用的開發版本 -->
            <source>1.8</source>
            <!-- 須要生成的目標class文件的編譯版本 -->
            <target>1.8</target>
            <!-- 
            通常而言,target與source是保持一致的,可是,有時候爲了讓程序能在其餘版本的jdk中運行
            (對於低版本目標jdk,源代碼中須要沒有使用低版本jdk中不支持的語法),會存在target不一樣於
            source的狀況 
            -->
            <!-- 默認字符集編碼 -->
            <encoding>UTF-8</encoding>
            
            <!-- 這下面的是可選項 -->
            <meminitial>128m</meminitial>
            <maxmem>512m</maxmem>
            <fork>true</fork> <!-- fork is enable,用於明確表示編譯版本配置的可用 --> 
            <compilerVersion>1.3</compilerVersion>
            
            <!-- 這個選項用來傳遞編譯器自身不包含可是卻支持的參數選項 -->
            <compilerArgument>-verbose -bootclasspath ${java.home}\lib\rt.jar</compilerArgument>
            
        </configuration>
      </plugin>
      </plugins>
      
      <!-- 最終的項目名稱 -->
    <finalName>maven.springmvc.web</finalName>
  </build>
</project>

3. 修改 web.xml ,加入 spring servlet 。

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  
  <!-- Spring MVC Config Begin -->
    
  <servlet>
    <servlet-name>springServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/configs/spring-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>springServlet</servlet-name>
    <!-- mvc-dispathcer 攔截 html 訪問請求 -->
    <!-- 
    <url-pattern>*.html</url-pattern>  
    -->
    <!-- mvc-dispathcer 攔截全部的請求 -->
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  
  <!-- Spring MVC Config End -->
  
    
  <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>
  
</web-app>

在 WEB-INF 下新建 configs 目錄,創建 spring-servlet.xml :apache

<?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:p="http://www.springframework.org/schema/p" 
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="
        http://www.springframework.org/schema/util
        http://www.springframework.org/schema/util/spring-util-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" >
       
    <!--開啓註解處理器-->
    <context:annotation-config /> 
    
    <!-- 開啓組件掃描 -->
    <!-- 只搜索 @Controller 標註的類,不搜索其它標註的類 -->
    <!-- base-package: 咱們未來掃描的包名(後面會創建) -->
    <context:component-scan base-package="yxd.maven.springmvc.web">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>   
    
    
    <!-- 讓dispertcher servlet 啓用基於 annotation 的 HandlerMapping -->
    <mvc:annotation-driven />

    <!-- 指定使用 JstlView 來獲取 View -->
    <bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:order="3">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="contentType" value="text/html"/> 
        <!-- spring mvc 指定存放 jsp 的目錄 -->     
        <property name="prefix" value="/WEB-INF/jsps/"/>
        <!-- 後綴名爲 .jsp -->
        <property name="suffix" value=".jsp"/>
    </bean>
    
</beans>

在 WEB-INF 下創建文件夾 jsps,用來存放 spring mvc 中用來顯示 view 的 jsp文件。api

如今咱們的項目變成了這樣:瀏覽器

在咱們的項目上右鍵,在彈出菜單中點擊 "Run As" -> "Maven install",讓 Maven 來初始化全部依賴庫,這個時候若是某個庫不存在,會自動下載。

若是執行成功,會在 Console 顯示以下信息:

若是失敗, 請確認環境變量(%JAVA_HOME%)設置是否正確,而後檢查Eclipse設置("Preferences"\"Java"\"Installed JREs")與項目Java Build Path 中 Libraries 裏面所指定的 JRE System Library 是否是一致,參考maven環境創建的文章。

若是提示下載失敗,能夠在 maven 的配置中指定鏡像站。

若是出現相似下面的錯誤,通常是maven-compiler-plugin配置有問題。

若是出現相似下面的錯誤,檢測環境變量,這種通常就是上面說的 jre 不一致形成。

[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project maven.demo: Compilation failure
[ERROR] Unable to locate the Javac Compiler in:
[ERROR] C:\Program Files\Java\jre1.8.0_101\..\lib\tools.jar
[ERROR] Please ensure you are using JDK 1.4 or above and
[ERROR] not a JRE (the com.sun.tools.javac.Main class is required).
[ERROR] In most cases you can change the location of your Java
[ERROR] installation by setting the JAVA_HOME environment variable.
[ERROR] -> [Help 1]

若是出現相似下面的錯誤,直接將manen倉庫中的 (.m2\repository\) 下對應目錄刪除(好比我直接將 .m2\repository\org 目錄刪除了),用 Alt + F5,更新工程 (Manen -> Update Project),而後從新 "Run As" -> "Maven install" 。

[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project maven.demo: Compilation failure
[ERROR] Failure executing javac, but could not parse the error:
[ERROR] 錯誤: 讀取E:\Documents\My Documents\My Projects\Java Project\Workspace\JEE\.m2\repository\org\springframework\spring-context-support\4.3.3.RELEASE\spring-context-support-4.3.3.RELEASE.jar時出錯; invalid LOC header (bad signature)
[ERROR] 錯誤: 讀取E:\Documents\My Documents\My Projects\Java Project\Workspace\JEE\.m2\repository\org\springframework\spring-aspects\4.3.3.RELEASE\spring-aspects-4.3.3.RELEASE.jar時出錯; invalid LOC header (bad signature)
[ERROR] 錯誤: 讀取E:\Documents\My Documents\My Projects\Java Project\Workspace\JEE\.m2\repository\org\aspectj\aspectjweaver\1.8.9\aspectjweaver-1.8.9.jar時出錯; invalid LOC header (bad signature)
[ERROR] 錯誤: 讀取E:\Documents\My Documents\My Projects\Java Project\Workspace\JEE\.m2\repository\org\springframework\spring-oxm\4.3.3.RELEASE\spring-oxm-4.3.3.RELEASE.jar時出錯; invalid LOC header (bad signature)
[ERROR] 錯誤: 讀取E:\Documents\My Documents\My Projects\Java Project\Workspace\JEE\.m2\repository\org\springframework\spring-jms\4.3.3.RELEASE\spring-jms-4.3.3.RELEASE.jar時出錯; invalid LOC header (bad signature)
[ERROR] 錯誤: 讀取E:\Documents\My Documents\My Projects\Java Project\Workspace\JEE\.m2\repository\org\springframework\spring-messaging\4.3.3.RELEASE\spring-messaging-4.3.3.RELEASE.jar時出錯; invalid CEN header (bad signature)
[ERROR] 6 個錯誤
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.

在 "Maven install" 成功後,咱們能夠試着啓動一下 Tomcat 服務器。

若是出現相似下面的錯誤,請檢查 <url-pattern> 是否少了 "/"。

若是 url-pattern 正確,檢查下如圖所示地方,看是否缺乏 Maven。

若是不存在,點擊 "add" 添加進去。

Next...

點擊 Finish.

4. 創建第一個 Spring MVC 控制器

package yxd.maven.springmvc.web;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class MyFirstSpringMvcController {
    
    @RequestMapping("mvc")
    public String HelloSpringMvc() {
        return "home"; // 返回 jsp 文件名稱
    }
}

在 jsps 目錄中新建一個 home.jsp 文件

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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>
HelloSpringMvc
</body>
</html>

重啓 Tomcat 服務器,在瀏覽器中輸入 http://localhost:8080/maven.springmvc.web/mvc ,能夠看到成功的顯示了 home.jsp 的內容。

 

 若是還有錯誤,檢查一下 Packaging, 確認是 war。

 

感謝: 上上千up、小布布、小不點

相關文章
相關標籤/搜索