從零使用Maven搭建SpringMVC工程-IDEA開發工具

前段時間的工作中一直使用spring boot開發,spring boot本身確實開發很快,自動配置確實幫我們省去了不少的麻煩,但是這也是一把雙刃劍,如果你不是從spring mvc轉過來的,很多的細節就無從瞭解,真正出問題的時候也會無從下手,因此我打算從零開始用maven建一個spring mvc的工程,這篇文字就記錄了操作的過程。

新建maven工程

打開idea, 新建一個maven工程,工程名爲SpringMvcDemo

工程建好後,在maven的pom.xml文件加入spring mvc的jar包依賴,如下:

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.liuzhijian</groupId>
    <artifactId>springmvc</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.0.6.RELEASE</version>
        </dependency>
    </dependencies>
</project>

新增配置文件

在src/main目錄下新建一個web的目錄,並在web目錄下再建一個WEB-INF的目錄,並在該目錄下新建web.xml,dispatcher-servlet.xml,  結構如下:

在idea中選擇項目的module模塊,新增一個web模塊配置如下,注意配置好下面2個紅框的選項,web.xml,dispatcher-servlet.xml具體配置見文末的附件

 

添加controller

在src/main/java後新建一個package(com.liuzhijian), 在其中新建一個controller叫AppController,代碼如下:

@RestController
public class AppController {

    @PostConstruct
    public void AppController(){
        System.out.println("Initial");
    }

    @RequestMapping("/index")
    public String test(){
        return "ok";
    }
}

 

啓動項目

配置用本地tomcat啓動之前,現在項目配置中新增一個打包如下,記住把右邊所有的jar包都加入到最後的包中

 在IDEA上面工具欄裏的Run/Debug Configuration中新增Local, 選擇tomcat,並在Deployment中新增Artifact,配置如下:

點擊啓動,訪問localhost:port/index, 如果一切配置正確的話,結果返回的是ok, 完事!!

常見問題總結

  1. 打包後的WEB-INF文件夾下沒有spring的配置文件,這個要注意在新建web module時對上面提到的2個紅框標記的配置。
  2. 啓動後報某些類找不到,這個要注意在配置項目的Artifact選項時,要記得把右邊項目所有的引用包都加到左邊的打包中,這樣才能保證不少jar包。
  3. 遇到啓動後404,後端的日誌也沒有報錯的情況,這個其實可以在對應的bean類新增一個無參數構造函數或者@PostContruct標記的方法,啓動後看看這個函數是否執行,如果沒有執行,說明spring容器沒有啓動或者spring容器沒有掃到這個包。如果要確定是不是spring容器沒有啓動,只需在debug模式種往DispatcherServlet類的構造函數中設置一個斷點,看看斷點是否執行。如果是包沒有被掃到,很簡單,只需要檢查一下dispatcher-servlet.xml中的配置是否包括你的包路徑
    <context:component-scan base-package="com.liuzhijian"/>

 

歡迎關注我的個人的博客www.zhijianliu.cn, 虛心求教,有錯誤還請指正輕拍,謝謝

版權聲明:本文出自志健的原創文章,未經博主允許不得轉載

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章