在SpringBoot中,其实不建议我们使用jsp。因为SpringBoot自带的嵌入式servlet容器对jsp的解析有一些使用限制,再者jsp的本质也算是Servlet,每个页面都需要先进行编译,因此jsp的效率相对于html或thymeleaf都比较低。但如果你非要在Spring Boot中使用jsp,这篇文章或许就能帮到你。
工具:idea2021.3.1 maven3.6.3 jdk8
- 点击File --> New --> Project,选择 java,JDK版本,点击 Next:
2. 左侧选择 Spring initializr 右侧面板依次填入或者确认 1:Server URL(构建提供者),2:项目名,3:Group , 4:java版本,5,打包方式,然后点击 Next 进入下一步。
-
选择上一步下载源提供的开发包,jsp程序的话就先选择一个 Spring Web 好了,点击 Finish 由idea自动构建项目。
-
构建好后项目结构大致如下:
-
我们依次创建 jsp 的目录,webapp,jsps,WEB-INF 等:
-
下面需要给spring boot 项目添加这个webapp模块,点击菜单栏 File --> Project Structure… 进入项目结构设置界面:
-
在项目设置界面分别点击 1 Modules,2 Web(没有可以点击上方附近的"+“添加Web模块),3 选择 Web Resource Directories 中的”+"添加项目 Web Resource 目录,4 选择浏览至项目src/main/webapp目录,5 点击ok,6 点击ok 项目web资源添加完毕。
-
接下来就可以在webapp中创建jsp的文件了。我们先修改一下 pom 文件,引入 jsp 需要的依赖,最后pom文件如下:
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.schen</groupId> <artifactId>btjsp01</artifactId> <version>0.0.1-SNAPSHOT</version> <name>btjsp01</name> <description>btjsp01</description> <properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <spring-boot.version>2.5.12</spring-boot.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- 添加servlet依赖模块 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> </dependency> <!-- 添加jstl标签库依赖模块 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> <!--添加tomcat依赖模块.--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </dependency> <!-- 使用jsp引擎,springboot内置tomcat没有此依赖 --> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.4.1</version> <configuration> <mainClass>com.schen.btjsp01.Btjsp01Application</mainClass> </configuration> <executions> <execution> <id>repackage</id> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
-
在webapp下创建jsps目录,创建一个First.jsp,将el和jstl都测试一下,并创建 controller 如 First.java 或 Second.java 测试MVC是否能跳转至 jsp :
First.java代码如下:
package com.schen.btjsp01.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class First { @RequestMapping("/test") public String func01(){ System.out.println("Controller测试"); return "first"; } }
First.jsp代码如下:
<%-- Created by IntelliJ IDEA. User: hp Date: 2022/11/27 Time: 20:23 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>Title</title> </head> <body> <c:set var="testName" value="ok测试会话" scope="session"/> 测试el:${pageContext.request}<br/> 测试jstl:${testName} </body> </html>
-
运行springboot项目,输入controller中的链接,测试成功效果如下;
以上就是如何在 springboot 中创建jsp页面并运行的过程,水平有限欢迎大家批判指正。