1. 环境

开发环境:idea2019.3

jkd版本:1.8

springboot版本:2.6.2

2. 引入JSP的步骤

2.1 新建工程,引入依赖

这里只是解析jsp,因此只需要引入springboot内嵌的tomcat对jsp的解析包

<!-- 引入依赖:springboot内嵌的tomcat对jsp的解析包-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>

这里引入依赖,网上很多教程,培训教材中,引入过多依赖,其实是多余的。仅仅访问jsp,只需要引入内嵌tomcat对jsp的解析包即可。

如果jsp中使用了jstl,则需要引入jstl的包;这里并不需要。

如果使用了servlet相关api,则引入servlet-api,这里并不需要

2.2 建立webapp资源目录

这时,如果在webapp目录下右键新建jsp,发现在新建菜单中,没有jsp选项,解决方法如2.3

2.3 将webapp设置为web资源存放目录

打开项目结构(project structure),选择module,选择该moule的web项,添加资源目录。

这时,webapp目录编程带有绿色小点的图标。如下图所示:

2.3 创建jsp页面

这里新建一个简单的index.jsp文件,内容如下所示:

<%--
Created by IntelliJ IDEA.
User: Think
Date: 2022/1/7
Time: 12:06
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
这是springboot应用中引入的第一个jsp
</body>
</html>

2.4 访问jsp

运行springboot应用,浏览器访问index.jsp,发现无法访问

2.5 访问不到jsp的原因及问题解决

2.5.1 原因分析

分析springboot工程的target目录,没有发现jsp相关的资源,说明webapp下的web资源没有编译到target下的输出目录,因此访问不到。

另外一种情况也值得注意,在调试时候通过设置,即使web资源没有被打包输出到target目录,但是也可以访问。这是下面的第一种情况。但是在部署上线时,仍然需要手动配置将web资源输出到target目录。

2.5.2 问题解决

通过实验,有两种解决方法,可能有标准的解决方法,这里将找到的两种可行的方法总结如下:

方法1:设置工作目录

点击Edit Configuation,设置工作目录,如下图所示:

设置工作目录为 $MODULE_WORKING_DIR$(或者$MODULE_DIR$, idea2019.3中默认没有这个目录,可以用户输入$MODULE_DIR$和$MODULE_WORKING_DIR$效果相同)

方法2:配置web资源编译后的输出目录

在pom文件的节点中设置web资源编译后的输出目录

	<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<resources>
<resource>
<!-- 下面的目录可以自己设置 -->
<directory>src/main/webapp</directory>
<targetPath>META-INF/resources</targetPath>
<includes>
<!-- **匹配任意目录,*匹配任意字符 -->
<include>**/*.*</include>
</includes>
</resource>
</resources>
</build>

3. 总结

Q&A

问:pom中的路径/代表什么,src/main/java代表什么

答:对于maven工程,pom文件位于module的根目录,因此/代表的是module的根目录,src/main/java则代表模块下的src/main/java目录

问:application.properties中的/代表什么,spring.mvc.view.prefix=/中的/代表什么

答:

application.properties是src/main/resource中的配置文件,在springboot的maven工程中,src/main/javasrc/main/resources,以及用户自己添加的src/main/webapp资源目录中的内容,在编译后都会被部署到target/classes下,因此/有如下对应关系:

/代表了target/classes目录,由于src/main/java、src/main/resource、src/main/webapp中内容编译后会输出到target/classes,因此/也代表了这些目录。

开发人员更关注的是src/main中的内容,因此,对于在application.properties中的/,记住下面的映射关系

/	对应于		src/main/java
src/main/resources
src/main/webapp

当然,你也可以使用方法2中在pom中添加配置,修改src下的目录和target下目录的默认映射关系。

idea环境下SpringBoot Web应用引入JSP的更多相关文章

  1. ASP.NET 多环境下配置文件web.config的灵活配置

    调试,发布Asp.net程序的时候,开发环境和发布环境的Web.Config往往不同,比如connectionstring等.如果常常有调试,发布的需求,就需要常常修改web.config文件,这往往 ...

  2. ASP.NET 多环境下配置文件web.config的灵活配置---转

    注意:本功能在.Net Core中已经不可用,暂时需手动修改web.config中的信息,或者将其设置在appsettings.XXX.json中,然后再使用web.config中的环境变量来制定使用 ...

  3. 使用DOSGi在OSGi环境下发布Web Services

    前言 Apache CXF是一个开源的服务框架项目,而Distributed OSGi子项目提供了基于OSGi远程服务规范的分布式组件实现.它使用Web Services,HTTP上的SOAP手段实现 ...

  4. .NET Framework 项目多环境下配置文件web.config

    解决jenkins自动构建发布的问题,统一从git/svn库中获取项目文件,根据不同配置编译发布到多个运行环境中. 转自:https://www.cnblogs.com/hugogoos/p/6426 ...

  5. centos6.5环境下的web项目mysql编码方式导致的中文乱码问题

    最近在centos6.5下部署web项目时网页出现中文乱码的问题,在排除掉php之后,把问题锁定在mysql的编码方式上. 解决方法如下: 首先进入mysql命令行,输入命令:SHOW VARIABL ...

  6. 用Python+Django在Eclipse环境下开发web网站【转】

    一.创建一个项目如果这是你第一次使用Django,那么你必须进行一些初始设置.也就是通过自动生成代码来建立一个Django项目--一个Django项目的设置集,包含了数据库配置.Django详细选项设 ...

  7. 【转载】django在eclipse环境下建web网站

    一.创建一个项目如果这是你第一次使用Django,那么你必须进行一些初始设置.也就是通过自动生成代码来建立一个Django项目--一个Django项目的设置集,包含了数据库配置.Django详细选项设 ...

  8. Windows环境下springboot集成redis的安装与使用

    一,redis安装 首先我们需要下载Windows版本的redis压缩包地址如下: https://github.com/MicrosoftArchive/redis/releases 连接打开后如下 ...

  9. 用Python+Django在Eclipse环境下开发web网站

    一.创建一个项目如果这是你第一次使用Django,那么你必须进行一些初始设置.也就是通过自动生成代码来建立一个Django项目--一个Django项目的设置集,包含了数据库配置.Django详细选项设 ...

随机推荐

  1. java nio 写一个完整的http服务器 支持文件上传 chunk传输 gzip 压缩 使用过程 和servlet差不多

    java nio 写一个完整的http服务器  支持文件上传   chunk传输    gzip 压缩      也仿照着 netty处理了NIO的空轮询BUG        本项目并不复杂 代码不多 ...

  2. CF1166A Silent Classroom 题解

    Content 现在有 \(n\) 名学生,我们需要将这些学生分到两个班上.对于两名在同一班级的学生,如果他们的名字首字母相同,他们就会聊天. 现在给定这些学生的名字,问最少有多少对学生会在一起聊天. ...

  3. java 输入输出IO流 RandomAccessFile文件的任意文件指针位置地方来读写数据

    RandomAccessFile的介绍: RandomAccessFile是Java输入输出流体系中功能最丰富的文件内容访问类,它提供了众多的方法来访问文件内容,它既可以读取文件内容,也可以向文件输出 ...

  4. href超级链接里加上javascript代码的,还有target问题

    href超级链接里加上javascript代码的,还有target问题 得把target="_blank"去掉才好用,在google浏览器有这个也没事,但是在Ie里有这个就不行了

  5. 复杂SQL案例:用户授权渠道查询

    供参考: SELECT r.course_id 课程id, r.user_id 用户ID, u.user_full_name 姓名, u.province_name 省名, u.city_name 城 ...

  6. P7990-[USACO21DEC]Closest Cow Wins S【堆,贪心】

    正题 题目链接:https://www.luogu.com.cn/problem/P7990 题目大意 数轴上有\(k\)个点是草地,每个草地有不同收益,\(m\)个点是地方的点,现在你要放置\(n\ ...

  7. c++之常见数据类型(int,double,float,long double long long 与std::string之间)相互转换(含MFC的CString、含C++11新特性函数)

    --- 已经通过初步测试---- ------------------ 下面的是传统常见数据类型的转换(非c++11)---------------  std::string 与其他常用类型相互转换, ...

  8. 【LeetCode】536. Construct Binary Tree from String 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 统计字符串出现的次数 日期 题目地址:https:// ...

  9. 【九度OJ】题目1069:查找学生信息 解题报告

    [九度OJ]题目1069:查找学生信息 解题报告 标签(空格分隔): 九度OJ [LeetCode] http://ac.jobdu.com/problem.php?pid=1069 题目描述: 输入 ...

  10. 【机器学习】决策树(Decision Tree) 学习笔记

    [机器学习]决策树(decision tree) 学习笔记 标签(空格分隔): 机器学习 决策树简介 决策树(decision tree)是一个树结构(可以是二叉树或非二叉树).其每个非叶节点表示一个 ...