提起Java不得不說的一個開發場景就是Web開發,也是Java最熱門的開發場景之一,說到Web開發繞不開的一個技術就是JSP,由於目前市面上仍有不少的公司在使用JSP,因此本文就來介紹一下Spring Boot 怎麼集成JSP開發,以及生產環境的詳細部署方法。html
具體集成方法以下:java
在src/main目錄下建立目錄webapp/WEB-INF/jsp用於存放jsp頁面,以下圖:web
application.properties爲全局配置文件,裏面能夠設置不少信息,好比設置日誌、設置緩存、設置Spring、Spring SESSION等信息,咱們本文只須要設置JSP的目錄文件,以及文件後綴,代碼以下:spring
spring.mvc.view.prefix=/WEB-INF/jsp spring.mvc.view.suffix=.jsp
更多application.properties設置信息,查看官方文檔:https://docs.spring.io/spring...apache
在pom.xml須要添加3個組件:json
具體代碼以下:瀏覽器
<!--web支持--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--JavaServer Pages Standard Tag Library,JSP標準標籤庫--> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> <!--內置tocat對Jsp支持的依賴,用於編譯Jsp--> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency>
注意:tomcat-embed-jasper的scope(做用域)值爲provided,表示打包的時候不用打包進去,其餘設備會提供,若是打包進去會和外部Tomcat提供的jar衝突,致使項目啓動失敗。spring-mvc
通過前3步的配置,項目配置部分已經完成的差很少了,接下來就是代碼的編寫了,代碼的編寫和Spring MVC同樣,分爲兩部分Java類編寫與標識註解,JSP模板建立與編寫。爲了更好的演示Spring Boot 的功能,咱們會盡量的簡化業務邏輯,在這個示例中咱們建立一個Cat類,設置標籤hi="Hello Cat",在頁面輸出標籤便可。緩存
package com.hellospringboot.hellospringboot; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller @RequestMapping("/cat") //建立路由規則http://xxxx/cat public class Cat { /** * 默認路由方法 * * @return */ @RequestMapping("") public ModelAndView index() { ModelAndView modelAndView = new ModelAndView("/index"); //設置對應JSP的模板文件 modelAndView.addObject("hi", "Hello,Cat"); //設置${hi}標籤的值爲Hello,Cat return modelAndView; } }
Spring MVC註解解讀tomcat
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h1> ${hi} </h1> </body> </html>
這個jsp只作了一件事,把java類裏面的${hi}標籤的值顯示出來。
到此爲止,若是您使用的是IDEA開發工具,那麼如今就能夠運行調試程序了,直接運行Index.jsp或者啓動文件,或者啓動文件(Application.java)便可,而後在瀏覽器輸入:http://localhost:8080/cat 便可查看。
下載地址:https://tomcat.apache.org/dow...
以下圖所示:
Windows下載:64-bit Windows zip | Linux下載:tar.gz
注意:若是是Windows版下載的免安裝版若是放到C盤的話,注意給文件夾分配足夠的權限,否則啓動以後訪問頁面顯示400或者505相似的問題。
若是要進行生產環境部署,須要單獨配置一下Spring Boot 的入口類,須要繼承SpringBootServletInitializer類,重寫configure方法,由於默認狀況外部Tomcat不能讀取到Spring Boot 入口類的main方法啓動程序加載,使用須要繼承,代碼以下:
package com.hellospringboot.hellospringboot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; /** * 啓動類,程序入口 */ @SpringBootApplication public class HelloSpringBootApplication extends SpringBootServletInitializer{ /** * 重寫configure方法,加載啓動類 * @param application * @return */ @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(HelloSpringBootApplication.class); } /** * Spring Boot 默認main方法 * @param args */ public static void main(String[] args) { SpringApplication.run(HelloSpringBootApplication.class, args); } }
須要配置一下pom.xml,排除一下內置tomcat的jar包,防止打包以後與外面Tomcat jar 包衝突,致使項目啓動失敗,配置以下:
<!--排除內置tomcat jar包--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
主要的代碼是<scope>provided</scope>,設置打包不會包含進去,由其餘設施提供。
找到:
<packaging>jar</packaging>
修改成:
<packaging>war</packaging>
爲何須要修改jar包格式爲war,由於若是打包爲jar包的時候,不會包含JSP文件,因此訪問的時候回404,而打包爲war的時候回包含JSP文件,因此須要把打包格式修改成war.
jar和war的區別?
因此從jar和war的區別來看,網頁程序打包成war格式也是很合適的。
若是須要修改生成文件的文件名稱,能夠設置build下的finalName屬性,代碼以下:
<build> <finalName>name</finalName> </build>
選擇菜單欄Build => Build Artifacts.. => 點擊Rebuild,便可生成war包,如圖:
生成完以後,在項目的target目錄下找到生成war文件,以下圖:
在Host標籤內添加Context設置,docBase屬性填寫war文件名稱,配置以下:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="springbootjsp" debug="0" privileged="true" reloadable="true" /> <!-- 其餘代碼 --> </Host>
運行bin/shutdown.bat文件,啓動tomcat
輸入地址:http://localhost:8080/cat 訪問。
到此項目部署成功,雖然本人部署到Windows服務器了,Linux也是同樣的步驟。
雖然上文咱們詳細介紹了JSP在Spring Boot 中使用,可是Spring Boot官方並不推薦使用JSP(緣由見下文)。
以下圖所示:
Spring官方不推薦使用JSP的緣由有這麼幾個:
更多詳情,點擊查看:https://spring.io/blog/2012/1...
總結:按照官方的說法,若是你有數百個JSP頁面,咱們並不建議您應該當即拋棄它們,從新使用Thymeleaf,可是,若是您開始開發一個新項目,強烈鼓勵您比較其餘模板引擎和JSP,以確認哪個更適合您。
開發Web應用之JSP篇:http://tengj.top/2017/03/13/s...
歡迎掃碼,加入圈子討論交流