1. 程式人生 > >Spring boot 整合Jsp

Spring boot 整合Jsp

前言

上一篇介紹了Spring Boot中使用如何使用durid,這篇文章將介紹如何整合jsp進行web開發

專案結構

首先在src/main 下新建目錄:webapp/WEB-INF/view 用於存放jsp檔案,專案的靜態資源統一放在resources的static下面,初始的專案結構如下

引入依賴

	<!--WEB支援-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!--jsp頁面使用jstl標籤-->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>

    <!--內建tocat對Jsp支援的依賴,用於編譯Jsp-->
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
    </dependency>

使用內嵌的tomcat容器來執行的話只要這3個就好了,如果需要使用外部容器允許,需要額外配置,稍後會講解

配置application.properties

#jsp 檔案存放的路徑
spring.mvc.view.prefix: /WEB-INF/view/

#檔案字尾
spring.mvc.view.suffix: .jsp

編寫相應檔案

編寫jsp檔案

在view目錄下建立index.jsp

<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>測試頁面</title> </head> <body> ${msg} </body> </html>
編寫Controller
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.
GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.ModelAndView; @RestController @RequestMapping("/index") public class MyController { @GetMapping public ModelAndView index(Model model){ model.addAttribute("msg","這是測試頁面"); return new ModelAndView("index"); } }

啟動專案,訪問:localhost:8080/index

內嵌tomcat屬性配置

#使用者繪畫session過期時間,以秒為單位
server.servlet.session.timeout=36000m
# 配置預設訪問路徑,預設為/
server.servlet.context-path=/

# 配置Tomcat編碼,預設為UTF-8
server.tomcat.uri-encoding=UTF-8
# 配置最大執行緒數
server.tomcat.max-threads=1000

配置外部tomcat容器部署war包

Spring Boot專案需要部署在外部容器中的時候,Spring Boot匯出的war包如果直接在Tomcat的部署會報錯,如需執行需進行如下修改

1、啟動類繼承SpringBootServletInitializer

外部容器部署的話,就不能依賴於Application的main函數了,而是要以類似於web.xml檔案配置的方式來啟動Spring應用上下文,此時我們需要在啟動類中繼承SpringBootServletInitializer並實現configure方法:

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 SpringbootJspApplication extends SpringBootServletInitializer {

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

    /**
     * 部署到tomcat需要新增如下程式碼
     * @param application
     * @return
     */
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(SpringbootJspApplication.class);
    }
}

2、修改pom.xml

新增依賴

	<!--因配置外部TOMCAT 而配置-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
    </dependency>

修改打包方式,把jar改成war

	<!--版本-->
    <version>1</version>
    <!--打包方式-->
    <packaging>war</packaging>

如果想修改打包的名稱,需在build節點中加入

	<build>
	  <finalName>springBootJsp</finalName>
	</bulid>

新增外部tomcat並執行

啟動專案,依舊能看到頁面

專案原始碼

開源後臺管理系統:

歡迎體驗Aurora