日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Boot 最佳实践(二)集成Jsp与生产环境部署

發布時間:2025/3/11 javascript 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot 最佳实践(二)集成Jsp与生产环境部署 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、簡介

提起Java不得不說的一個開發場景就是Web開發,也是Java最熱門的開發場景之一,說到Web開發繞不開的一個技術就是JSP,因為目前市面上仍有很多的公司在使用JSP,所以本文就來介紹一下Spring Boot 怎么集成JSP開發,以及生產環境的詳細部署方法。

二、集成JSP

開發環境

  • Spring Boot 2.0.4 RELEASE
  • Tomcat 9.0.10
  • IDEA(Intellij IDEA簡稱,下文統一使用)2018.2
  • Windows 10

JSP集成步驟

  • 創建JSP目錄
  • application.properties配置Jsp信息
  • pom.xml添加依賴組件
  • 編寫Spring MVC代碼
  • 運行程序
  • 具體集成方法如下:

    1.創建JSP目錄

    在src/main目錄下創建目錄webapp/WEB-INF/jsp用于存放jsp頁面,如下圖:

    2.application.properties配置Jsp信息

    application.properties為全局配置文件,里面可以設置很多信息,比如設置日志、設置緩存、設置Spring、Spring SESSION等信息,我們本文只需要設置JSP的目錄文件,以及文件后綴,代碼如下:

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

    更多application.properties設置信息,查看官方文檔:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#common-application-properties

    3.pom.xml添加JSP配置

    在pom.xml需要添加3個組件:

    • spring-boot-starter-web (用于運行web項目)
    • jstl (JavaServer Pages Standard Tag Library,JSP標準標簽庫,用于程序中解析JSP)
    • tomcat-embed-jasper (內置tocat對Jsp支持的依賴,用于編譯Jsp)

    具體代碼如下:

    <!--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沖突,導致項目啟動失敗。

    scope(作用域)值列表代表含義解釋如下:
    • compile:默認值 他表示被依賴項目需要參與當前項目的編譯,還有后續的測試,運行周期也參與其中,是一個比較強的依賴。打包的時候通常需要包含進去
    • test:依賴項目僅僅參與測試相關的工作,包括測試代碼的編譯和執行,不會被打包,例如:junit
    • runtime:表示被依賴項目無需參與項目的編譯,不過后期的測試和運行周期需要其參與。與compile相比,跳過了編譯而已。例如JDBC驅動,適用運行和測試階段
    • provided:打包不會包含進去,別的設施會提供。事實上該依賴理論上可以參與編譯,測試,運行等周期。相當于compile,但是打包階段做了exclude操作
    • system:從參與度來說,和provided相同,不過被依賴項不會從maven倉庫下載,而是從本地文件系統拿。需要添加systemPath的屬性來定義路徑
    4.編寫Spring MVC代碼

    經過前3步的配置,項目配置部分已經完成的差不多了,接下來就是代碼的編寫了,代碼的編寫和Spring MVC一樣,分為兩部分Java類編寫與標識注解,JSP模板創建與編寫。為了更好的演示Spring Boot 的功能,我們會盡可能的簡化業務邏輯,在這個示例中我們創建一個Cat類,設置標簽hi=”Hello Cat”,在頁面輸出標簽即可。

    a).Cat.java代碼
    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,Catreturn modelAndView;} }

    Spring MVC注解解讀

    • @Controller 標識在一個類上,標識的類就是Spring MVC的控制器類,分發處理器會掃描使用了該注解的類是否使用了@RequestMapping 注解,@Controller只是定義了一個控制器類,只用使用了@RequestMapping 注解,才是真正處理請求的處理器;
    • @RequestMapping 標識在類或者方法上,用來處理請求地址的注解,一共有6個屬性:
    • value 對應請求的實際地址
    • method 請求的類型:get、post、put、delete 等,ex:@RequestMapping(value = “/test”, method = RequestMethod.PUT)
    • consumes 指定請求上的內容類型,比如application/json、text/html等
    • produces 指定返回的數據類型,類型必須是Request Headers中accept包含的類型
    • params 過濾請求,只有請求中包含某個參數,才會執行,比如@RequestMapping(value = “”,params = “flag”),只有參數中包含flag才會執行,不然不能訪問,http://localhost:8080/cat?true=flag這個地址是訪問不到的,正確的地址是http://localhost:8080/cat?flag=true才可以正常訪問
    • headers 和params類似,只有請求headers里面包含某個key才可以訪問方法
    b).JSP端代碼
    <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body> <h1>${hi} </h1> </body> </html>

    這個jsp只做了一件事,把java類里面的${hi}標簽的值顯示出來。

    5.運行程序

    到此為止,如果您使用的是IDEA開發工具,那么現在就可以運行調試程序了,直接運行Index.jsp或者啟動文件,或者啟動文件(Application.java)即可,然后在瀏覽器輸入:http://localhost:8080/cat 即可查看。

    三、生產環境部署

    部署步驟

  • 下載安裝Tomcat
  • 入口類繼承SpringBootServletInitializer重寫configure方法
  • 配置pom.xml
  • IDEA生成war文件
  • 配置Tomcat運行項目
  • 1.下載安裝Tomcat

    下載地址:https://tomcat.apache.org/download-90.cgi

    如下圖所示:

    Windows下載:64-bit Windows zip | Linux下載:tar.gz

    注意:如果是Windows版下載的免安裝版如果放到C盤的話,注意給文件夾分配足夠的權限,不然啟動之后訪問頁面顯示400或者505類似的問題。

    2.入口類繼承SpringBootServletInitializer重寫configure方法

    如果要進行生產環境部署,需要單獨配置一下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*/@Overrideprotected 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);} }
    3.配置pom.xml

    需要配置一下pom.xml,排除一下內置tomcat的jar包,防止打包之后與外面Tomcat jar 包沖突,導致項目啟動失敗,配置如下:

    <!--排除內置tomcat jar包--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope> </dependency>

    主要的代碼是provided,設置打包不會包含進去,由其他設施提供。

    4.IDEA生成war文件
    步驟一:修改生成jar為war格式

    找到:

    jar

    修改為:

    war

    為什么需要修改jar包格式為war,因為如果打包為jar包的時候,不會包含JSP文件,所以訪問的時候回404,而打包為war的時候回包含JSP文件,所以需要把打包格式修改為war.

    jar和war的區別?

    • jar(java application archive)java應用程序庫,通常為開發引用的通用類
    • war(web application archive)web應用程序

    所以從jar和war的區別來看,網頁程序打包成war格式也是很合適的。

    如果需要修改生成文件的文件名稱,可以設置build下的finalName屬性,代碼如下:

    <build><finalName>name</finalName> </build>
    步驟二:使用IDEA生成war包

    選擇菜單欄Build => Build Artifacts.. => 點擊Rebuild,即可生成war包,如圖:

    生成完之后,在項目的target目錄下找到生成war文件,如下圖:

    5.配置Tomcat運行項目
    步驟一:把war文件復制到tomcat的webapps目錄下
    步驟二:配置conf/server.xml

    在Host標簽內添加Context設置,docBase屬性填寫war文件名稱,配置如下:

    <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="springbootjsp" debug="0" privileged="true" reloadable="true" /><!--其他代碼--> </Host>
    步驟三:啟動tomcat

    運行bin/shutdown.bat文件,啟動tomcat

    輸入地址:http://localhost:8080/cat 訪問。

    到此項目部署成功,雖然本人部署到Windows服務器了,Linux也是一樣的步驟。

    四、知識擴展:Spring Boot 模板推薦

    雖然上文我們詳細介紹了JSP在Spring Boot 中使用,但是Spring Boot官方并不推薦使用JSP(原因見下文)。

    Spring Boot推薦模板引擎:

    • Thymeleaf
    • Freemarker
    • Mustache
    • Groovy Templates

    如下圖所示:

    Spring為什么不推薦使用JSP?

    Spring官方不推薦使用JSP的原因有這么幾個:

  • 官方文檔JSP沒有Thymeleaf好;
  • Thymeleaf健康的開源項目,幾乎每個月都有更新,而JSP已經好幾年沒有實質性的進展;
  • Thymeleaf有迅速響應的用戶論壇。
  • 更多詳情,點擊查看:https://spring.io/blog/2012/10/30/spring-mvc-from-jsp-and-tiles-to-thymeleaf

    總結:按照官方的說法,如果你有數百個JSP頁面,我們并不建議您應該立即拋棄它們,重新使用Thymeleaf,但是,如果您開始開發一個新項目,強烈鼓勵您比較其他模板引擎和JSP,以確認哪一個更適合您。

    五、參考資料

    開發Web應用之JSP篇:http://tengj.top/2017/03/13/springboot5/

    歡迎掃碼,加入圈子討論交流

    總結

    以上是生活随笔為你收集整理的Spring Boot 最佳实践(二)集成Jsp与生产环境部署的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。