剛開始學習SpringBoot,記錄一下舊項目整合到SpringBoot時遇到的問題(後續踩的坑也會持續加入) PS:通過查看他人博客自己東拼西湊出來的,不一定完全正確,請謹慎對待 1:打包為jar或war後發現jsp文件無法訪問或404等: 可能原因1:controller控制類不在啟動類所在的目 ...
剛開始學習SpringBoot,記錄一下舊項目整合到SpringBoot時遇到的問題(後續踩的坑也會持續加入)
PS:通過查看他人博客自己東拼西湊出來的,不一定完全正確,請謹慎對待
1:打包為jar或war後發現jsp文件無法訪問或404等:
可能原因1:controller控制類不在啟動類所在的目錄下的或子目錄中
可能原因2:訪問網址直接使用ip:埠號/url就行,不需要加項目名!!!
可能原因3:資源文件不在打包的範圍內,需要在build標簽內進行配置。具體配置在整合過程中有說明
整合過程:
舊項目的頁面使用jsp完成,但是SpringBoot對於jsp的支持較差,需要額外添加依賴。
1:登錄https://start.spring.io下載模板,根據需求添加所需的依賴。個人搭建demo使用的是jdk1.8,maven版本是3.5.4,IDE為MyEclipse2017C1.
2:MyEclipse下導入demo,選擇Existing Maven Projects
導入完畢後的目錄結構如圖所示():
3:將project轉換為WebProject:項目上右鍵並選擇properties並勾選為Dynamic Web Module,點擊箭頭3所指的地方進行根目錄的配置。
設置根目錄名為src/main/webapp,記得勾選自動生成web.xml。
4:pom.xml中添加對jsp和tomcat的依賴,還需要在build標簽內添加對資源文件的編譯配置。
添加依賴:
1 <dependency> 2 <groupId>org.apache.tomcat.embed</groupId> 3 <artifactId>tomcat-embed-jasper</artifactId> 4 <scope>provided</scope> 5 </dependency> 6 <dependency> 7 <groupId>javax.servlet</groupId> 8 <artifactId>javax.servlet-api</artifactId> 9 <scope>provided</scope> 10 </dependency> 11 <dependency> 12 <groupId>org.springframework.boot</groupId> 13 <artifactId>spring-boot-starter-tomcat</artifactId> 14 <scope>provided</scope> 15 </dependency>
自定義資源文件的編譯位置,附上完整的build標簽內的內容:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <!-- jsp打包必須限定此版本號 --> <version>1.4.2.RELEASE</version> </plugin> </plugins> <!-- 自定義資源文件的打包方式及編譯位置 --> <resources> <!-- 打包時將jsp文件拷貝到META-INF目錄下--> <resource> <!-- 指定resources插件處理哪個目錄下的資源文件 --> <directory>src/main/webapp</directory> <targetPath>META-INF/resources</targetPath> <includes> <include>**/**</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/**</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/java</directory> <!-- 資源文件需要排除java文件 --> <excludes> <exclude>**/*.java</exclude> </excludes> </resource> </resources> </build>
記得右鍵——>Maven——>UpdateProject.
此時如果src/main/webapp不是sourcefolder可以右鍵選擇該文件夾——>BuildPath——》Use as sourcefolder
5:添加Controller,在application.xml中添加springmvc的視圖解析器的前尾碼
@Controller public class HelloController { @RequestMapping("/hello") public String Hello(){ return "Hello"; } }
此時的目錄結構:
通過maven的clean install命令先清除後安裝。控制台提示build success 。
打包方式可以在pom.xml中的packaging標簽中設置(jar或者war等)。隨後可以在工作空間該項目下的target目錄找到打包好的文件,在maven的本地倉庫也可以找到。
cmd進入jar包所在目錄之後,java -jar demo.jar即可完成啟動。
瀏覽器訪問即可:不要加項目名
附上測試可用的demo:
鏈接: https://pan.baidu.com/s/1nRSJ_iXekjoA_VbvGg90kg 密碼: 3irb
最後說一句:相比於傳統的SSH或者SSM整合之類的配置地獄,SpringBoot還是挺爽的。