1. 程式人生 > >Spring Boot與Jsp

Spring Boot與Jsp

 

Spring Boot與Jsp

 

關於Spring Boot 與Jsp,

儘管本人已經很厭惡Jsp了。但是好多人在用,以後寫程式碼也需要,最近新學了SpringBoot框架,發現其與jsp結合不是太完美,現在把走過的坑說一下。

典型的spring Boot Web專案 加入jsp所需要的maven 依賴

專案結構

 

userController程式碼

 

在application.properties 中需加入

spring.mvc.view.prefix: /WEB-INF/jsp/
spring.mvc.view.suffix: .jsp

 

然後就在webapp/WEB-INF/jsp/*.jsp頁面

 

環境介紹到這

 

補一個知識點

依賴範圍(例子舉的很實際)

 

依賴範圍就是用來控制依賴和三種classpath(編譯classpath,測試classpath、執行classpath)的關係,Maven有如下幾種依賴範圍:

  • compile:編譯依賴範圍。如果沒有指定,就會預設使用該依賴範圍。使用此依賴範圍的Maven依賴,對於編譯、測試、執行三種classpath都有效。典型的例子是spring-code,在編譯、測試和執行的時候都需要使用該依賴。
  • test: 測試依賴範圍。使用次依賴範圍的Maven依賴,只對於測試classpath有效,在編譯主程式碼或者執行專案的使用時將無法使用此依賴。典型的例子是Jnuit,它只有在編譯測試程式碼及執行測試的時候才需要。
  • provided:已提供依賴範圍。使用此依賴範圍的Maven依賴,對於編譯和測試classpath有效,但在執行時候無效。典型的例子是servlet-api,編譯和測試專案的時候需要該依賴,但在執行專案的時候,由於容器以及提供,就不需要Maven重複地引入一遍。

 

這裡主要是對

<dependency>

<groupId>org.apache.tomcat.embed</groupId>

<artifactId>tomcat-embed-jasper</artifactId>

<scope>provided</scope> 紅色部分不同

</dependency>

 

結論:無論如何, spring-boot:run 和 打包成 war 然後執行都是正常,其他都不正常

一、spring-boot:run 啟動方法:

1、兩下 Shift ,搜尋maven

2、選擇相應Module

(需注意:address 埠被佔用)

二、打成war 啟動方法:

1、設定pom.xml裡 packaging值為war

2、兩下Shift,搜尋maven ,跟springboot一樣

3、執行package打包

4、複製打成的war java –jar war名字執行就行

 

三、外接tomcat部署方法

1、確保<scope>provided</scope> 沒有被註釋

2、修改@SpringBootApplication註解的類,繼承一個SpringBootServletInitializer,然後實現其configure方法,具體內容為return builder.sources(本類類名.class);(注意,這裡不能是this,this是一個類的例項,而xxx.class是類的模板)

3、仿照上面打成war包的方法,打成war包

4、放在tomcat下的webapp目錄,可以直接改xxx.war的名字,然後瀏覽器輸入localhost/xxx就行了

<build> <finalName>springBootJsp</finalName></bulid> 也可以以這種方式改名字

 

 

FUCK  弄了半天,發現不註釋provided也行

到底原因在哪,Don't Know

 

總結:繼承了SpringBootServletInitializer,然後不註解provided,其生成的war包 jar 可以執行,springBoot:run 可以執行,tomcat外接也可以執行,Fuck