前段時間的工作中一直使用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, 完事!!
常見問題總結
- 打包後的WEB-INF文件夾下沒有spring的配置文件,這個要注意在新建web module時對上面提到的2個紅框標記的配置。
- 啓動後報某些類找不到,這個要注意在配置項目的Artifact選項時,要記得把右邊項目所有的引用包都加到左邊的打包中,這樣才能保證不少jar包。
- 遇到啓動後404,後端的日誌也沒有報錯的情況,這個其實可以在對應的bean類新增一個無參數構造函數或者@PostContruct標記的方法,啓動後看看這個函數是否執行,如果沒有執行,說明spring容器沒有啓動或者spring容器沒有掃到這個包。如果要確定是不是spring容器沒有啓動,只需在debug模式種往DispatcherServlet類的構造函數中設置一個斷點,看看斷點是否執行。如果是包沒有被掃到,很簡單,只需要檢查一下dispatcher-servlet.xml中的配置是否包括你的包路徑
<context:component-scan base-package="com.liuzhijian"/>
歡迎關注我的個人的博客www.zhijianliu.cn, 虛心求教,有錯誤還請指正輕拍,謝謝
版權聲明:本文出自志健的原創文章,未經博主允許不得轉載