最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解SpringBoot 添加對(duì)JSP的支持(附常見(jiàn)坑點(diǎn))

 更新時(shí)間:2017年10月04日 10:46:42   作者:yizhiwazi  
這篇文章主要介紹了詳解SpringBoot 添加對(duì)JSP的支持(附常見(jiàn)坑點(diǎn)),非常具有實(shí)用價(jià)值,需要的朋友可以參考下

序言:

SpringBoot默認(rèn)不支持JSP,如果想在項(xiàng)目中使用,需要進(jìn)行相關(guān)初始化工作。為了方便大家更好的開(kāi)發(fā),本案例可直接作為JSP開(kāi)發(fā)的腳手架工程 SpringBoot+War+JSP .

常見(jiàn)問(wèn)題:

1.修改JSP需重啟才能生效:

在生產(chǎn)環(huán)境中,SpringBoot重新編譯JSP可能會(huì)導(dǎo)致較大的性能損失,并且很難追查到問(wèn)題根源,所以在最新的版本中,官方已經(jīng)默認(rèn)關(guān)閉此功能,詳見(jiàn)JspServlet類(lèi)的初始化參數(shù)。那么,如何解決這個(gè)問(wèn)題呢?推薦兩個(gè)解決辦法:1.使用devtools 2. 添加配置(server.servlet.jsp.init-parameters.development=true)

2.各種404:

1.必須導(dǎo)入嵌入式容器和JASPER解析器 2.必須創(chuàng)建webapp目錄

正文:SpringBoot 添加對(duì)JSP的支持

1. 搭建腳手架

首先使用 Spring Initializr 構(gòu)建工程,其中源碼和靜態(tài)資源目錄默認(rèn)生成,這里只需手工添加Web資源目錄。如圖:


2. 在pom.xml 添加相關(guān)依賴(lài)

 <?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.hehe</groupId>
  <artifactId>springboot-web-jsp</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <!--打包格式:SpringBoot使用JSP時(shí)需打包為war類(lèi)型 -->
  <packaging>war</packaging>

  <!--繼承父工程-->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.M4</version>
    <relativePath/>
  </parent>

  <!--依賴(lài)管理 -->
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat.embed</groupId>
      <artifactId>tomcat-embed-jasper</artifactId>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <!--指定遠(yuǎn)程倉(cāng)庫(kù)(含插件) -->
  <repositories>
    <repository>
      <id>spring-snapshots</id>
      <url>http://repo.spring.io/snapshot</url>
      <snapshots><enabled>true</enabled></snapshots>
    </repository>
    <repository>
      <id>spring-milestones</id>
      <url>http://repo.spring.io/milestone</url>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <id>spring-snapshots</id>
      <url>http://repo.spring.io/snapshot</url>
    </pluginRepository>
    <pluginRepository>
      <id>spring-milestones</id>
      <url>http://repo.spring.io/milestone</url>
    </pluginRepository>
  </pluginRepositories>

  <!--構(gòu)建插件 -->
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>


</project>

3. 啟動(dòng)類(lèi)添加Servlet支持

@SpringBootApplication
public class SpringbootWarJspApplication extends SpringBootServletInitializer {

  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    return builder.sources(SpringbootWarJspApplication.class);
  }

  public static void main(String[] args) {
    SpringApplication.run(SpringbootWarJspApplication.class, args);
  }
}

4. 添加MVC映射

application.yml 配置如下:

spring:
 mvc:
  view:
   prefix: /WEB-INF/views/ # Read From Web Resources Dir
   suffix: .jsp

5. 編寫(xiě)JSP頁(yè)面

在 WEB-INF/views 目錄下新建一個(gè)JSP文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<body>
 <marquee><p style="font-size: 100px">Hello JSP !!</p>
   ![](${pageContext.servletContext.contextPath}/doge.gif)
 </marquee>
</body>
</html>

6.啟動(dòng)項(xiàng)目

啟動(dòng)方式1:在IDE啟動(dòng)WebJspApplication,然后打開(kāi)項(xiàng)目地址。

啟動(dòng)方式2:部署到外置Tomcat,啟動(dòng)完成后,打開(kāi)項(xiàng)目地址。這里需要注意的是,使用外置Tomcat部署的時(shí)候,需要將嵌入式容器調(diào)整為provided級(jí)別。(防止沖突)

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat.embed</groupId>
      <artifactId>tomcat-embed-jasper</artifactId>
      <scope>provided</scope>
    </dependency>

7.單元測(cè)試

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
@DirtiesContext
public class WebJspApplicationTest {

  @Autowired
  private TestRestTemplate restTemplate;

  @Test
  public void testJspWithEl() throws Exception {
    ResponseEntity<String> entity = restTemplate.getForEntity("/", String.class);
    assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.OK);
    assertThat(entity.getBody()).contains("Hello JSP");
  }

}

全文至此,有疑問(wèn)的小伙伴可在評(píng)論下方進(jìn)行交流。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java List集合返回值去掉中括號(hào)(''[ ]'')的操作

    Java List集合返回值去掉中括號(hào)(''[ ]'')的操作

    這篇文章主要介紹了Java List集合返回值去掉中括號(hào)('[ ]')的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • JDBC中Statement的Sql注入問(wèn)題詳解

    JDBC中Statement的Sql注入問(wèn)題詳解

    這篇文章主要介紹了JDBC中Statement的Sql注入問(wèn)題詳解,sql注入攻擊指的是通過(guò)構(gòu)建特殊的輸入作為參數(shù)傳入web應(yīng)用程序,而這些輸入大都是sql語(yǔ)法里的一些組合,通過(guò)執(zhí)行sql語(yǔ)句進(jìn)而執(zhí)行攻擊者所要做的操作,需要的朋友可以參考下
    2023-10-10
  • Java調(diào)用SQL腳本執(zhí)行常用的方法示例

    Java調(diào)用SQL腳本執(zhí)行常用的方法示例

    這篇文章主要給大家介紹了關(guān)于Java調(diào)用SQL腳本執(zhí)行常用的方法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • Hutool開(kāi)發(fā)MapUtil工具類(lèi)使用示例

    Hutool開(kāi)發(fā)MapUtil工具類(lèi)使用示例

    這篇文章主要為大家介紹了Hutool開(kāi)發(fā)MapUtil工具類(lèi)使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Java中的ReentrantLock、ReentrantReadWriteLock、StampedLock詳解

    Java中的ReentrantLock、ReentrantReadWriteLock、StampedLock詳解

    這篇文章主要介紹了Java中的ReentrantLock、ReentrantReadWriteLock、StampedLock詳解,讀寫(xiě)鎖:一個(gè)資源能夠被多個(gè)讀線(xiàn)程訪(fǎng)問(wèn),或者被一個(gè)寫(xiě)線(xiàn)程訪(fǎng)問(wèn)但是不能同時(shí)存在讀寫(xiě)線(xiàn)程,需要的朋友可以參考下
    2024-01-01
  • Java編程中ArrayList源碼分析

    Java編程中ArrayList源碼分析

    這篇文章主要介紹了Java編程中ArrayList源碼分析,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • java實(shí)現(xiàn)多選批量刪除功能

    java實(shí)現(xiàn)多選批量刪除功能

    工作中批量刪除可以提高我們的工作效率,今天這篇文章主要介紹了java實(shí)現(xiàn)多選批量刪除功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 如何使用MyBatis/MyBatis?Plus實(shí)現(xiàn)SQL日志打印與執(zhí)行監(jiān)控

    如何使用MyBatis/MyBatis?Plus實(shí)現(xiàn)SQL日志打印與執(zhí)行監(jiān)控

    MyBatis默認(rèn)的日志輸出僅顯示帶占位符的SQL語(yǔ)句,無(wú)法直接看到實(shí)際參數(shù)值,且缺乏執(zhí)行時(shí)間統(tǒng)計(jì),本文將介紹兩種實(shí)現(xiàn)方案,感興趣的朋友跟隨小編一起看看吧
    2025-05-05
  • 淺談Maven的安裝及修改為阿里云下載依賴(lài)

    淺談Maven的安裝及修改為阿里云下載依賴(lài)

    下面小編就為大家?guī)?lái)一篇淺談Maven的安裝及修改為阿里云下載依賴(lài)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • IDEA下使用MyBatisCodeHelper插件的方法詳解

    IDEA下使用MyBatisCodeHelper插件的方法詳解

    這篇文章主要介紹了IDEA下使用MyBatisCodeHelper插件的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09

最新評(píng)論

锡林郭勒盟| 顺义区| 同江市| 镇康县| 鲜城| 汾西县| 朝阳县| 扶沟县| 谢通门县| 秦皇岛市| 句容市| 长岭县| 江源县| 梁河县| 吉安市| 盘锦市| 宜良县| 达拉特旗| 伊金霍洛旗| 垣曲县| 张家界市| 湖州市| 六枝特区| 淮安市| 黔南| 沙雅县| 东乌珠穆沁旗| 石柱| 张家口市| 社旗县| 威信县| 宽甸| 淳安县| 余干县| 桃江县| 正安县| 天水市| 莲花县| 阜宁县| 鹰潭市| 锡林郭勒盟|