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

詳解SpringBoot 添加對JSP的支持(附常見坑點)

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

序言:

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

常見問題:

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

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

2.各種404:

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

正文:SpringBoot 添加對JSP的支持

1. 搭建腳手架

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


2. 在pom.xml 添加相關依賴

 <?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時需打包為war類型 -->
  <packaging>war</packaging>

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

  <!--依賴管理 -->
  <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>

  <!--指定遠程倉庫(含插件) -->
  <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>

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


</project>

3. 啟動類添加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. 編寫JSP頁面

在 WEB-INF/views 目錄下新建一個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.啟動項目

啟動方式1:在IDE啟動WebJspApplication,然后打開項目地址。

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

    <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.單元測試

@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");
  }

}

全文至此,有疑問的小伙伴可在評論下方進行交流。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

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

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

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

    JDBC中Statement的Sql注入問題詳解

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

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

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

    Hutool開發(fā)MapUtil工具類使用示例

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

    Java中的ReentrantLock、ReentrantReadWriteLock、StampedLock詳解

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

    Java編程中ArrayList源碼分析

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

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

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

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

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

    淺談Maven的安裝及修改為阿里云下載依賴

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

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

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

最新評論

永春县| 手机| 铜川市| 宁陕县| 牙克石市| 六盘水市| 凤山市| 依兰县| 满城县| 海城市| 山阴县| 游戏| 黄浦区| 东宁县| 临西县| 门头沟区| 策勒县| 保山市| 万山特区| 上高县| 阳西县| 临沂市| 台南市| 巴楚县| 临颍县| 汝州市| 封开县| 连平县| 嵊州市| 保定市| 昌都县| 昌吉市| 铅山县| 和平县| 临江市| 乳源| 洪雅县| 晋中市| 乌拉特后旗| 宜兴市| 全州县|