您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關怎么在SpringBoot中添加JSP支持,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
序言:
SpringBoot默認不支持JSP,如果想在項目中使用,需要進行相關初始化工作。為了方便大家更好的開發,本案例可直接作為JSP開發的腳手架工程 SpringBoot+War+JSP .
常見問題:
1.修改JSP需重啟才能生效:
在生產環境中,SpringBoot重新編譯JSP可能會導致較大的性能損失,并且很難追查到問題根源,所以在最新的版本中,官方已經默認關閉此功能,詳見JspServlet類的初始化參數。那么,如何解決這個問題呢?推薦兩個解決辦法:1.使用devtools 2. 添加配置(server.servlet.jsp.init-parameters.development=true)
2.各種404:
1.必須導入嵌入式容器和JASPER解析器 2.必須創建webapp目錄
正文:SpringBoot 添加對JSP的支持
1. 搭建腳手架
首先使用 Spring Initializr 構建工程,其中源碼和靜態資源目錄默認生成,這里只需手工添加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 >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"); } }
看完上述內容,你們對怎么在SpringBoot中添加JSP支持有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。